jspurefix 1.1.2 → 1.4.1
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/.travis.yml +1 -1
- package/README.md +48 -2
- package/appveyor.yml +43 -11
- package/data/FIX44-MD.xml +6596 -0
- package/data/examples/FIX.4.4/jsfix.test_client.txt +15 -13
- package/data/session/test-qf44-acceptor.json +21 -0
- package/data/session/test-qf44-initiator.json +22 -0
- package/dist/buffer/ascii/ascii-encoder.d.ts +9 -2
- package/dist/buffer/ascii/ascii-encoder.js +72 -31
- package/dist/buffer/ascii/ascii-encoder.js.map +1 -1
- package/dist/buffer/ascii/ascii-parser.d.ts +1 -0
- package/dist/buffer/ascii/ascii-parser.js +7 -1
- package/dist/buffer/ascii/ascii-parser.js.map +1 -1
- package/dist/buffer/ascii/ascii-segment-parser.d.ts +0 -2
- package/dist/buffer/ascii/ascii-segment-parser.js +19 -25
- package/dist/buffer/ascii/ascii-segment-parser.js.map +1 -1
- package/dist/buffer/ascii/ascii-view.d.ts +2 -0
- package/dist/buffer/ascii/ascii-view.js +4 -0
- package/dist/buffer/ascii/ascii-view.js.map +1 -1
- package/dist/buffer/ascii/time-formatter.js.map +1 -1
- package/dist/buffer/ascii-chars.d.ts +1 -0
- package/dist/buffer/ascii-chars.js +1 -0
- package/dist/buffer/ascii-chars.js.map +1 -1
- package/dist/buffer/elastic-buffer.d.ts +1 -0
- package/dist/buffer/elastic-buffer.js +8 -0
- package/dist/buffer/elastic-buffer.js.map +1 -1
- package/dist/buffer/encode-proxy.js.map +1 -1
- package/dist/buffer/fixml/fixml-encoder.d.ts +3 -0
- package/dist/buffer/fixml/fixml-encoder.js +6 -0
- package/dist/buffer/fixml/fixml-encoder.js.map +1 -1
- package/dist/buffer/fixml/fixml-view.d.ts +2 -0
- package/dist/buffer/fixml/fixml-view.js +3 -0
- package/dist/buffer/fixml/fixml-view.js.map +1 -1
- package/dist/buffer/msg-encoder.d.ts +2 -0
- package/dist/buffer/msg-encoder.js.map +1 -1
- package/dist/buffer/msg-view.d.ts +2 -0
- package/dist/buffer/msg-view.js.map +1 -1
- package/dist/buffer/tags.js +5 -5
- package/dist/buffer/tags.js.map +1 -1
- package/dist/collections/dictionary.d.ts +1 -0
- package/dist/collections/dictionary.js +5 -0
- package/dist/collections/dictionary.js.map +1 -1
- package/dist/config/js-fix-config.d.ts +2 -0
- package/dist/config/js-fix-config.js +1 -0
- package/dist/config/js-fix-config.js.map +1 -1
- package/dist/dict-parser.js +2 -2
- package/dist/dict-parser.js.map +1 -1
- package/dist/dictionary/parser/quickfix/field-set-parser.js +11 -4
- package/dist/dictionary/parser/quickfix/field-set-parser.js.map +1 -1
- package/dist/dictionary/parser/quickfix/message-parser.js +4 -0
- package/dist/dictionary/parser/quickfix/message-parser.js.map +1 -1
- package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.d.ts +1 -0
- package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js +15 -0
- package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js.map +1 -1
- package/dist/jsfix-cmd.js +2 -1
- package/dist/jsfix-cmd.js.map +1 -1
- package/dist/sample/http/oms/app.js +2 -0
- package/dist/sample/http/oms/app.js.map +1 -1
- package/dist/sample/launcher.d.ts +3 -2
- package/dist/sample/launcher.js +12 -3
- package/dist/sample/launcher.js.map +1 -1
- package/dist/sample/tcp/{trade_capture → qf-md}/app.d.ts +0 -0
- package/dist/sample/tcp/qf-md/app.js +22 -0
- package/dist/sample/tcp/qf-md/app.js.map +1 -0
- package/dist/sample/tcp/qf-md/md-client.d.ts +15 -0
- package/dist/sample/tcp/qf-md/md-client.js +42 -0
- package/dist/sample/tcp/qf-md/md-client.js.map +1 -0
- package/dist/sample/tcp/qf-md/md-factory.d.ts +4 -0
- package/dist/sample/tcp/qf-md/md-factory.js +35 -0
- package/dist/sample/tcp/qf-md/md-factory.js.map +1 -0
- package/dist/sample/tcp/qf-md/md-server.d.ts +16 -0
- package/dist/sample/tcp/qf-md/md-server.js +44 -0
- package/dist/sample/tcp/qf-md/md-server.js.map +1 -0
- package/dist/sample/tcp/recovering-skeleton/app.d.ts +1 -0
- package/dist/sample/tcp/recovering-skeleton/app.js +27 -0
- package/dist/sample/tcp/recovering-skeleton/app.js.map +1 -0
- package/dist/sample/tcp/recovering-skeleton/respawn-2.d.ts +2 -0
- package/dist/sample/tcp/recovering-skeleton/respawn-2.js +3 -0
- package/dist/sample/tcp/recovering-skeleton/respawn-2.js.map +1 -0
- package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.d.ts +7 -0
- package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js +52 -0
- package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js.map +1 -0
- package/dist/sample/tcp/recovering-skeleton/skeleton-client.d.ts +16 -0
- package/dist/sample/tcp/recovering-skeleton/skeleton-client.js +45 -0
- package/dist/sample/tcp/recovering-skeleton/skeleton-client.js.map +1 -0
- package/dist/sample/tcp/recovering-skeleton/skeleton-server.d.ts +16 -0
- package/dist/sample/tcp/recovering-skeleton/skeleton-server.js +52 -0
- package/dist/sample/tcp/recovering-skeleton/skeleton-server.js.map +1 -0
- package/dist/sample/tcp/skeleton/app.js +2 -0
- package/dist/sample/tcp/skeleton/app.js.map +1 -1
- package/dist/sample/tcp/skeleton/skeleton-session.d.ts +5 -1
- package/dist/sample/tcp/skeleton/skeleton-session.js +22 -3
- package/dist/sample/tcp/skeleton/skeleton-session.js.map +1 -1
- package/dist/sample/tcp/tls-trade-capture/app.js +1 -1
- package/dist/sample/tcp/tls-trade-capture/app.js.map +1 -1
- package/dist/sample/tcp/trade-capture/app.d.ts +1 -0
- package/dist/sample/tcp/{trade_capture → trade-capture}/app.js +0 -0
- package/dist/sample/tcp/{trade_capture → trade-capture}/app.js.map +1 -1
- package/dist/sample/tcp/{trade_capture → trade-capture}/index.d.ts +0 -0
- package/dist/sample/tcp/{trade_capture → trade-capture}/index.js +0 -0
- package/dist/sample/tcp/{trade_capture → trade-capture}/index.js.map +1 -1
- package/dist/sample/tcp/{trade_capture → trade-capture}/trade-capture-client.d.ts +1 -0
- package/dist/sample/tcp/{trade_capture → trade-capture}/trade-capture-client.js +8 -4
- package/dist/sample/tcp/trade-capture/trade-capture-client.js.map +1 -0
- package/dist/sample/tcp/{trade_capture → trade-capture}/trade-capture-server.d.ts +0 -0
- package/dist/sample/tcp/{trade_capture → trade-capture}/trade-capture-server.js +1 -1
- package/dist/sample/tcp/trade-capture/trade-capture-server.js.map +1 -0
- package/dist/sample/tcp/{trade_capture → trade-capture}/trade-factory.d.ts +0 -0
- package/dist/sample/tcp/{trade_capture → trade-capture}/trade-factory.js +0 -0
- package/dist/sample/tcp/{trade_capture → trade-capture}/trade-factory.js.map +1 -1
- package/dist/store/fix-msg-ascii-store-resend.d.ts +6 -2
- package/dist/store/fix-msg-ascii-store-resend.js +49 -22
- package/dist/store/fix-msg-ascii-store-resend.js.map +1 -1
- package/dist/store/fix-msg-memory-store.d.ts +11 -8
- package/dist/store/fix-msg-memory-store.js +108 -42
- package/dist/store/fix-msg-memory-store.js.map +1 -1
- package/dist/store/fix-msg-store-record.d.ts +7 -3
- package/dist/store/fix-msg-store-record.js +5 -1
- package/dist/store/fix-msg-store-record.js.map +1 -1
- package/dist/store/fix-msg-store.d.ts +13 -9
- package/dist/store/fix-msg-store.js.map +1 -1
- package/dist/test/ascii-encode.test.js +20 -3
- package/dist/test/ascii-encode.test.js.map +1 -1
- package/dist/test/ascii-encoder.test.d.ts +1 -0
- package/dist/test/ascii-encoder.test.js +505 -0
- package/dist/test/ascii-encoder.test.js.map +1 -0
- package/dist/test/ascii-parser.test.js +8 -6
- package/dist/test/ascii-parser.test.js.map +1 -1
- package/dist/test/ascii-segment.test.js +6 -5
- package/dist/test/ascii-segment.test.js.map +1 -1
- package/dist/test/ascii-store-replay.test.js +59 -44
- package/dist/test/ascii-store-replay.test.js.map +1 -1
- package/dist/test/logon.test.js +1 -1
- package/dist/test/logon.test.js.map +1 -1
- package/dist/test/memory-store.test.js +24 -19
- package/dist/test/memory-store.test.js.map +1 -1
- package/dist/test/qf-full-msg.test.js +19 -14
- package/dist/test/qf-full-msg.test.js.map +1 -1
- package/dist/test/repo-full-ascii-msg.test.js +17 -15
- package/dist/test/repo-full-ascii-msg.test.js.map +1 -1
- package/dist/test/repo-full-fixml-msg.test.js +14 -14
- package/dist/test/repo-full-fixml-msg.test.js.map +1 -1
- package/dist/test/session-state.test.js +2 -2
- package/dist/test/session-state.test.js.map +1 -1
- package/dist/test/session.test.js +263 -143
- package/dist/test/session.test.js.map +1 -1
- package/dist/test/view-decode.test.js +2 -1
- package/dist/test/view-decode.test.js.map +1 -1
- package/dist/transport/a-session-msg-factory.d.ts +23 -0
- package/dist/transport/a-session-msg-factory.js +58 -0
- package/dist/transport/a-session-msg-factory.js.map +1 -0
- package/dist/transport/ascii/ascii-msg-transmitter.d.ts +1 -0
- package/dist/transport/ascii/ascii-msg-transmitter.js +39 -8
- package/dist/transport/ascii/ascii-msg-transmitter.js.map +1 -1
- package/dist/transport/ascii/ascii-session-msg-factory.d.ts +16 -0
- package/dist/transport/ascii/ascii-session-msg-factory.js +47 -0
- package/dist/transport/ascii/ascii-session-msg-factory.js.map +1 -0
- package/dist/transport/ascii/ascii-session.d.ts +10 -2
- package/dist/transport/ascii/ascii-session.js +86 -31
- package/dist/transport/ascii/ascii-session.js.map +1 -1
- package/dist/transport/ascii/index.d.ts +1 -0
- package/dist/transport/ascii/index.js +1 -0
- package/dist/transport/ascii/index.js.map +1 -1
- package/dist/transport/ascii-session-msg-factory.d.ts +16 -0
- package/dist/transport/ascii-session-msg-factory.js +47 -0
- package/dist/transport/ascii-session-msg-factory.js.map +1 -0
- package/dist/transport/duplex/http-duplex.js +2 -2
- package/dist/transport/duplex/http-duplex.js.map +1 -1
- package/dist/transport/fix-msg-factory.d.ts +1 -1
- package/dist/transport/fix-msg-factory.js.map +1 -1
- package/dist/transport/fix-session-state.d.ts +38 -12
- package/dist/transport/fix-session-state.js +49 -15
- package/dist/transport/fix-session-state.js.map +1 -1
- package/dist/transport/fix-session.d.ts +13 -6
- package/dist/transport/fix-session.js +143 -39
- package/dist/transport/fix-session.js.map +1 -1
- package/dist/transport/fixml/fixml-session-msg-factory.d.ts +13 -0
- package/dist/transport/fixml/fixml-session-msg-factory.js +68 -0
- package/dist/transport/fixml/fixml-session-msg-factory.js.map +1 -0
- package/dist/transport/fixml/fixml-session.js +1 -1
- package/dist/transport/fixml/fixml-session.js.map +1 -1
- package/dist/transport/fixml/index.d.ts +2 -1
- package/dist/transport/fixml/index.js +2 -1
- package/dist/transport/fixml/index.js.map +1 -1
- package/dist/transport/fixml-session-msg-factory.d.ts +13 -0
- package/dist/transport/fixml-session-msg-factory.js +68 -0
- package/dist/transport/fixml-session-msg-factory.js.map +1 -0
- package/dist/transport/http/http-acceptor.js +8 -7
- package/dist/transport/http/http-acceptor.js.map +1 -1
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.js +1 -1
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/msg-transmitter.js +4 -3
- package/dist/transport/msg-transmitter.js.map +1 -1
- package/dist/transport/msg-transport.js +3 -2
- package/dist/transport/msg-transport.js.map +1 -1
- package/dist/transport/session-description.d.ts +1 -1
- package/dist/transport/session-description.js.map +1 -1
- package/dist/transport/session-msg-factory.d.ts +2 -2
- package/dist/transport/session-msg-factory.js +2 -2
- package/dist/transport/session-msg-factory.js.map +1 -1
- package/dist/transport/tcp/acceptor.js +5 -3
- package/dist/transport/tcp/acceptor.js.map +1 -1
- package/dist/transport/tcp/index.d.ts +1 -0
- package/dist/transport/tcp/index.js +1 -0
- package/dist/transport/tcp/index.js.map +1 -1
- package/dist/transport/tcp/initiator.js +1 -0
- package/dist/transport/tcp/initiator.js.map +1 -1
- package/dist/transport/tcp/recovering-initiator.d.ts +17 -0
- package/dist/transport/tcp/recovering-initiator.js +30 -0
- package/dist/transport/tcp/recovering-initiator.js.map +1 -0
- package/dist/transport/tcp/recovering-tcp-initiator.d.ts +28 -0
- package/dist/transport/tcp/recovering-tcp-initiator.js +120 -0
- package/dist/transport/tcp/recovering-tcp-initiator.js.map +1 -0
- package/dist/transport/tcp/tcp-acceptor.d.ts +7 -0
- package/dist/transport/tcp/tcp-acceptor.js +43 -11
- package/dist/transport/tcp/tcp-acceptor.js.map +1 -1
- package/dist/transport/tcp/tcp-initiator.d.ts +4 -0
- package/dist/transport/tcp/tcp-initiator.js +72 -35
- package/dist/transport/tcp/tcp-initiator.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/advertisement.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/advertisement.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/allocation_instruction.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/allocation_instruction.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/allocation_instruction_ack.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/allocation_instruction_ack.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/allocation_report.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/allocation_report.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/allocation_report_ack.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/allocation_report_ack.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/assignment_report.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/assignment_report.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/bid_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/bid_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/bid_response.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/bid_response.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/business_message_reject.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/business_message_reject.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/collateral_assignment.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/collateral_assignment.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/collateral_inquiry.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/collateral_inquiry.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/collateral_inquiry_ack.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/collateral_inquiry_ack.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/collateral_report.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/collateral_report.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/collateral_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/collateral_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/collateral_response.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/collateral_response.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/confirmation.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/confirmation.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/confirmation_ack.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/confirmation_ack.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/confirmation_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/confirmation_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/cross_order_cancel_replace_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/cross_order_cancel_replace_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/cross_order_cancel_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/cross_order_cancel_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/derivative_security_list.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/derivative_security_list.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/derivative_security_list_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/derivative_security_list_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/dont_know_trade.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/dont_know_trade.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/email.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/email.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/execution_report.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/execution_report.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/heartbeat.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/heartbeat.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/index.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/index.js +4 -0
- package/dist/types/FIX4.4/quickfix/index.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/ioi.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/ioi.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/list_cancel_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/list_cancel_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/list_execute.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/list_execute.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/list_status.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/list_status.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/list_status_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/list_status_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/list_strike_price.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/list_strike_price.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/logon.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/logon.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/logout.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/logout.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/market_data_incremental_refresh.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/market_data_incremental_refresh.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/market_data_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/market_data_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/market_data_request_reject.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/market_data_request_reject.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/market_data_snapshot_full_refresh.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/market_data_snapshot_full_refresh.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/mass_quote.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/mass_quote.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/mass_quote_acknowledgement.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/mass_quote_acknowledgement.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/multileg_order_cancel_replace.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/multileg_order_cancel_replace.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/network_counterparty_system_status_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/network_counterparty_system_status_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/network_counterparty_system_status_response.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/network_counterparty_system_status_response.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/new_order_cross.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/new_order_cross.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/new_order_list.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/new_order_list.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/new_order_multileg.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/new_order_multileg.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/new_order_single.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/new_order_single.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/news.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/news.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/order_cancel_reject.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/order_cancel_reject.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/order_cancel_replace_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/order_cancel_replace_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/order_cancel_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/order_cancel_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/order_mass_cancel_report.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/order_mass_cancel_report.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/order_mass_cancel_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/order_mass_cancel_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/order_mass_status_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/order_mass_status_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/order_status_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/order_status_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/position_maintenance_report.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/position_maintenance_report.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/position_maintenance_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/position_maintenance_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/position_report.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/position_report.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/quote.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/quote.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/quote_cancel.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/quote_cancel.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/quote_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/quote_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/quote_request_reject.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/quote_request_reject.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/quote_response.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/quote_response.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/quote_status_report.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/quote_status_report.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/quote_status_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/quote_status_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/registration_instructions.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/registration_instructions.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/registration_instructions_response.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/registration_instructions_response.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/reject.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/reject.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/request_for_positions.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/request_for_positions.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/request_for_positions_ack.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/request_for_positions_ack.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/resend_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/resend_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/rfq_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/rfq_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/security_definition.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/security_definition.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/security_definition_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/security_definition_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/security_list.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/security_list.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/security_list_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/security_list_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/security_status.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/security_status.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/security_status_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/security_status_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/security_type_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/security_type_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/security_types.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/security_types.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/sequence_reset.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/sequence_reset.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/set/header.d.ts +31 -0
- package/dist/types/FIX4.4/quickfix/set/header.js +3 -0
- package/dist/types/FIX4.4/quickfix/set/header.js.map +1 -0
- package/dist/types/FIX4.4/quickfix/set/hop.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/set/hop.js +3 -0
- package/dist/types/FIX4.4/quickfix/set/hop.js.map +1 -0
- package/dist/types/FIX4.4/quickfix/set/hop_no_hops.d.ts +5 -0
- package/dist/types/FIX4.4/quickfix/set/hop_no_hops.js +3 -0
- package/dist/types/FIX4.4/quickfix/set/hop_no_hops.js.map +1 -0
- package/dist/types/FIX4.4/quickfix/set/standard_header.d.ts +31 -0
- package/dist/types/FIX4.4/quickfix/set/standard_header.js +3 -0
- package/dist/types/FIX4.4/quickfix/set/standard_header.js.map +1 -0
- package/dist/types/FIX4.4/quickfix/set/standard_trailer.d.ts +6 -0
- package/dist/types/FIX4.4/quickfix/set/standard_trailer.js +3 -0
- package/dist/types/FIX4.4/quickfix/set/standard_trailer.js.map +1 -0
- package/dist/types/FIX4.4/quickfix/set/trailer.d.ts +6 -0
- package/dist/types/FIX4.4/quickfix/set/trailer.js +3 -0
- package/dist/types/FIX4.4/quickfix/set/trailer.js.map +1 -0
- package/dist/types/FIX4.4/quickfix/settlement_instruction_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/settlement_instruction_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/settlement_instructions.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/settlement_instructions.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/test_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/test_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/trade_capture_report.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/trade_capture_report.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/trade_capture_report_ack.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/trade_capture_report_ack.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/trade_capture_report_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/trade_capture_report_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/trade_capture_report_request_ack.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/trade_capture_report_request_ack.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/trading_session_status.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/trading_session_status.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/trading_session_status_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/trading_session_status_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/user_request.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/user_request.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/user_response.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/user_response.js.map +1 -1
- package/dist/types/FIX4.4/quickfix/xm_lnon_fix.d.ts +4 -0
- package/dist/types/FIX4.4/quickfix/xm_lnon_fix.js.map +1 -1
- package/dist/types/FIX4.4/repo/enum/all-enum.js.map +1 -1
- package/package.json +25 -21
- package/script/build.sh +1 -0
- package/src/buffer/ascii/ascii-encoder.ts +110 -33
- package/src/buffer/ascii/ascii-parser.ts +8 -1
- package/src/buffer/ascii/ascii-segment-parser.ts +44 -38
- package/src/buffer/ascii/ascii-view.ts +5 -0
- package/src/buffer/ascii/time-formatter.ts +2 -2
- package/src/buffer/ascii-chars.ts +1 -0
- package/src/buffer/elastic-buffer.ts +9 -0
- package/src/buffer/encode-proxy.ts +2 -2
- package/src/buffer/fixml/fixml-encoder.ts +8 -0
- package/src/buffer/fixml/fixml-view.ts +5 -0
- package/src/buffer/msg-encoder.ts +2 -0
- package/src/buffer/msg-view.ts +3 -0
- package/src/buffer/tags.ts +1 -1
- package/src/collections/dictionary.ts +6 -0
- package/src/config/js-fix-config.ts +2 -0
- package/src/dictionary/parser/quickfix/field-set-parser.ts +11 -4
- package/src/dictionary/parser/quickfix/message-parser.ts +4 -0
- package/src/dictionary/parser/quickfix/quick-fix-xml-file-parser.ts +16 -0
- package/src/jsfix-cmd.ts +2 -1
- package/src/sample/http/oms/app.ts +2 -0
- package/src/sample/launcher.ts +17 -7
- package/src/sample/tcp/qf-md/app.ts +26 -0
- package/src/sample/tcp/qf-md/md-client.ts +51 -0
- package/src/sample/tcp/qf-md/md-factory.ts +34 -0
- package/src/sample/tcp/qf-md/md-server.ts +56 -0
- package/src/sample/tcp/recovering-skeleton/app.ts +33 -0
- package/src/sample/tcp/recovering-skeleton/respawn-acceptor.ts +41 -0
- package/src/sample/tcp/recovering-skeleton/skeleton-client.ts +54 -0
- package/src/sample/tcp/recovering-skeleton/skeleton-server.ts +60 -0
- package/src/sample/tcp/skeleton/app.ts +2 -0
- package/src/sample/tcp/skeleton/skeleton-session.ts +26 -4
- package/src/sample/tcp/tls-trade-capture/app.ts +1 -1
- package/src/sample/tcp/{trade_capture → trade-capture}/app.ts +0 -0
- package/src/sample/tcp/{trade_capture → trade-capture}/index.ts +0 -0
- package/src/sample/tcp/{trade_capture → trade-capture}/trade-capture-client.ts +10 -5
- package/src/sample/tcp/{trade_capture → trade-capture}/trade-capture-server.ts +2 -2
- package/src/sample/tcp/{trade_capture → trade-capture}/trade-factory.ts +0 -0
- package/src/store/fix-msg-ascii-store-resend.ts +87 -0
- package/src/store/fix-msg-memory-store.ts +171 -0
- package/src/store/fix-msg-store-record.ts +23 -0
- package/src/store/fix-msg-store.ts +23 -0
- package/src/store/index.ts +4 -0
- package/src/transport/a-session-msg-factory.ts +81 -0
- package/src/transport/ascii/ascii-msg-transmitter.ts +32 -11
- package/src/transport/ascii/ascii-session-msg-factory.ts +62 -0
- package/src/transport/ascii/ascii-session.ts +100 -36
- package/src/transport/ascii/index.ts +1 -0
- package/src/transport/duplex/http-duplex.ts +2 -2
- package/src/transport/fix-msg-factory.ts +1 -1
- package/src/transport/fix-session-state.ts +67 -15
- package/src/transport/fix-session.ts +156 -43
- package/src/transport/fixml/fixml-session-msg-factory.ts +76 -0
- package/src/transport/fixml/fixml-session.ts +1 -1
- package/src/transport/fixml/index.ts +2 -1
- package/src/transport/http/http-acceptor.ts +7 -6
- package/src/transport/index.ts +1 -1
- package/src/transport/msg-transmitter.ts +4 -3
- package/src/transport/msg-transport.ts +3 -2
- package/src/transport/session-description.ts +1 -1
- package/src/transport/tcp/acceptor.ts +5 -3
- package/src/transport/tcp/index.ts +1 -0
- package/src/transport/tcp/initiator.ts +1 -0
- package/src/transport/tcp/recovering-tcp-initiator.ts +149 -0
- package/src/transport/tcp/tcp-acceptor.ts +46 -11
- package/src/transport/tcp/tcp-initiator.ts +77 -40
- package/src/types/FIX4.4/quickfix/advertisement.ts +4 -0
- package/src/types/FIX4.4/quickfix/allocation_instruction.ts +4 -0
- package/src/types/FIX4.4/quickfix/allocation_instruction_ack.ts +4 -0
- package/src/types/FIX4.4/quickfix/allocation_report.ts +4 -0
- package/src/types/FIX4.4/quickfix/allocation_report_ack.ts +4 -0
- package/src/types/FIX4.4/quickfix/assignment_report.ts +4 -0
- package/src/types/FIX4.4/quickfix/bid_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/bid_response.ts +4 -0
- package/src/types/FIX4.4/quickfix/business_message_reject.ts +5 -0
- package/src/types/FIX4.4/quickfix/collateral_assignment.ts +4 -0
- package/src/types/FIX4.4/quickfix/collateral_inquiry.ts +4 -0
- package/src/types/FIX4.4/quickfix/collateral_inquiry_ack.ts +4 -0
- package/src/types/FIX4.4/quickfix/collateral_report.ts +4 -0
- package/src/types/FIX4.4/quickfix/collateral_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/collateral_response.ts +4 -0
- package/src/types/FIX4.4/quickfix/confirmation.ts +4 -0
- package/src/types/FIX4.4/quickfix/confirmation_ack.ts +5 -0
- package/src/types/FIX4.4/quickfix/confirmation_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/cross_order_cancel_replace_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/cross_order_cancel_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/derivative_security_list.ts +4 -0
- package/src/types/FIX4.4/quickfix/derivative_security_list_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/dont_know_trade.ts +4 -0
- package/src/types/FIX4.4/quickfix/email.ts +4 -0
- package/src/types/FIX4.4/quickfix/execution_report.ts +4 -0
- package/src/types/FIX4.4/quickfix/heartbeat.ts +5 -0
- package/src/types/FIX4.4/quickfix/index.ts +4 -0
- package/src/types/FIX4.4/quickfix/ioi.ts +4 -0
- package/src/types/FIX4.4/quickfix/list_cancel_request.ts +5 -0
- package/src/types/FIX4.4/quickfix/list_execute.ts +6 -1
- package/src/types/FIX4.4/quickfix/list_status.ts +4 -0
- package/src/types/FIX4.4/quickfix/list_status_request.ts +5 -0
- package/src/types/FIX4.4/quickfix/list_strike_price.ts +4 -0
- package/src/types/FIX4.4/quickfix/logon.ts +4 -0
- package/src/types/FIX4.4/quickfix/logout.ts +6 -1
- package/src/types/FIX4.4/quickfix/market_data_incremental_refresh.ts +4 -0
- package/src/types/FIX4.4/quickfix/market_data_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/market_data_request_reject.ts +4 -0
- package/src/types/FIX4.4/quickfix/market_data_snapshot_full_refresh.ts +4 -0
- package/src/types/FIX4.4/quickfix/mass_quote.ts +4 -0
- package/src/types/FIX4.4/quickfix/mass_quote_acknowledgement.ts +4 -0
- package/src/types/FIX4.4/quickfix/multileg_order_cancel_replace.ts +4 -0
- package/src/types/FIX4.4/quickfix/network_counterparty_system_status_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/network_counterparty_system_status_response.ts +4 -0
- package/src/types/FIX4.4/quickfix/new_order_cross.ts +4 -0
- package/src/types/FIX4.4/quickfix/new_order_list.ts +4 -0
- package/src/types/FIX4.4/quickfix/new_order_multileg.ts +4 -0
- package/src/types/FIX4.4/quickfix/new_order_single.ts +4 -0
- package/src/types/FIX4.4/quickfix/news.ts +4 -0
- package/src/types/FIX4.4/quickfix/order_cancel_reject.ts +5 -0
- package/src/types/FIX4.4/quickfix/order_cancel_replace_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/order_cancel_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/order_mass_cancel_report.ts +4 -0
- package/src/types/FIX4.4/quickfix/order_mass_cancel_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/order_mass_status_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/order_status_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/position_maintenance_report.ts +4 -0
- package/src/types/FIX4.4/quickfix/position_maintenance_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/position_report.ts +4 -0
- package/src/types/FIX4.4/quickfix/quote.ts +4 -0
- package/src/types/FIX4.4/quickfix/quote_cancel.ts +4 -0
- package/src/types/FIX4.4/quickfix/quote_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/quote_request_reject.ts +4 -0
- package/src/types/FIX4.4/quickfix/quote_response.ts +4 -0
- package/src/types/FIX4.4/quickfix/quote_status_report.ts +4 -0
- package/src/types/FIX4.4/quickfix/quote_status_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/registration_instructions.ts +4 -0
- package/src/types/FIX4.4/quickfix/registration_instructions_response.ts +4 -0
- package/src/types/FIX4.4/quickfix/reject.ts +6 -1
- package/src/types/FIX4.4/quickfix/request_for_positions.ts +4 -0
- package/src/types/FIX4.4/quickfix/request_for_positions_ack.ts +4 -0
- package/src/types/FIX4.4/quickfix/resend_request.ts +5 -0
- package/src/types/FIX4.4/quickfix/rfq_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/security_definition.ts +4 -0
- package/src/types/FIX4.4/quickfix/security_definition_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/security_list.ts +4 -0
- package/src/types/FIX4.4/quickfix/security_list_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/security_status.ts +4 -0
- package/src/types/FIX4.4/quickfix/security_status_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/security_type_request.ts +5 -0
- package/src/types/FIX4.4/quickfix/security_types.ts +4 -0
- package/src/types/FIX4.4/quickfix/sequence_reset.ts +5 -0
- package/src/types/FIX4.4/quickfix/set/hop.ts +5 -0
- package/src/types/FIX4.4/quickfix/set/hop_no_hops.ts +5 -0
- package/src/types/FIX4.4/quickfix/set/standard_header.ts +31 -0
- package/src/types/FIX4.4/quickfix/set/standard_trailer.ts +5 -0
- package/src/types/FIX4.4/quickfix/settlement_instruction_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/settlement_instructions.ts +4 -0
- package/src/types/FIX4.4/quickfix/test_request.ts +5 -0
- package/src/types/FIX4.4/quickfix/trade_capture_report.ts +4 -0
- package/src/types/FIX4.4/quickfix/trade_capture_report_ack.ts +4 -0
- package/src/types/FIX4.4/quickfix/trade_capture_report_request.ts +4 -0
- package/src/types/FIX4.4/quickfix/trade_capture_report_request_ack.ts +4 -0
- package/src/types/FIX4.4/quickfix/trading_session_status.ts +5 -0
- package/src/types/FIX4.4/quickfix/trading_session_status_request.ts +5 -0
- package/src/types/FIX4.4/quickfix/user_request.ts +5 -0
- package/src/types/FIX4.4/quickfix/user_response.ts +5 -0
- package/src/types/FIX4.4/quickfix/xm_lnon_fix.ts +5 -0
- package/src/types/FIX4.4/repo/enum/all-enum.ts +0 -1
- package/dist/sample/tcp/tls-trade-capture/jsfix.test_client.txt +0 -77
- package/dist/sample/tcp/tls-trade-capture/jsfix.test_server.txt +0 -77
- package/dist/sample/tcp/trade_capture/jsfix.test_client.txt +0 -75
- package/dist/sample/tcp/trade_capture/jsfix.test_server.txt +0 -75
- package/dist/sample/tcp/trade_capture/trade-capture-client.js.map +0 -1
- package/dist/sample/tcp/trade_capture/trade-capture-server.js.map +0 -1
- package/src/transport/session-msg-factory.ts +0 -195
- package/src/transport/tcp/resilient-initiator.ts +0 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msg-encoder.js","sourceRoot":"","sources":["../../src/buffer/msg-encoder.ts"],"names":[],"mappings":";;;AAEA,iCAAgC;AAEhC,MAAsB,UAAW,SAAQ,MAAM,CAAC,YAAY;IAC1D,YAAuC,WAA2B;QAChE,KAAK,EAAE,CAAA;QAD8B,gBAAW,GAAX,WAAW,CAAgB;IAElE,CAAC;IAEM,MAAM,CAAE,CAAe,EAAE,IAAY;QAC1C,MAAM,GAAG,GAAsB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACzG,IAAI,CAAC,GAAG,EAAE;YACR,OAAM;SACP;QACD,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACxB,CAAC;
|
|
1
|
+
{"version":3,"file":"msg-encoder.js","sourceRoot":"","sources":["../../src/buffer/msg-encoder.ts"],"names":[],"mappings":";;;AAEA,iCAAgC;AAEhC,MAAsB,UAAW,SAAQ,MAAM,CAAC,YAAY;IAC1D,YAAuC,WAA2B;QAChE,KAAK,EAAE,CAAA;QAD8B,gBAAW,GAAX,WAAW,CAAgB;IAElE,CAAC;IAEM,MAAM,CAAE,CAAe,EAAE,IAAY;QAC1C,MAAM,GAAG,GAAsB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACzG,IAAI,CAAC,GAAG,EAAE;YACR,OAAM;SACP;QACD,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACxB,CAAC;CAKF;AAhBD,gCAgBC","sourcesContent":["import { ILooseObject } from '../collections/collection'\r\nimport { ContainedFieldSet, FixDefinitions } from '../dictionary'\r\nimport * as events from 'events'\r\n\r\nexport abstract class MsgEncoder extends events.EventEmitter {\r\n protected constructor (public readonly definitions: FixDefinitions) {\r\n super()\r\n }\r\n\r\n public encode (o: ILooseObject, name: string): void {\r\n const set: ContainedFieldSet = this.definitions.message.get(name) || this.definitions.component.get(name)\r\n if (!set) {\r\n return\r\n }\r\n this.encodeSet(o, set)\r\n }\r\n\r\n public abstract reset (): void\r\n public abstract trim (): Buffer\r\n public abstract encodeSet (o: ILooseObject, set: ContainedFieldSet): void\r\n}\r\n"]}
|
|
@@ -2,6 +2,7 @@ import { TagPos } from './tag-pos';
|
|
|
2
2
|
import { SegmentDescription } from './segment-description';
|
|
3
3
|
import { Structure } from './structure';
|
|
4
4
|
import { SimpleFieldDefinition } from '../dictionary';
|
|
5
|
+
import { IFixMsgStoreRecord } from '../store';
|
|
5
6
|
export declare abstract class MsgView {
|
|
6
7
|
readonly segment: SegmentDescription;
|
|
7
8
|
readonly structure: Structure;
|
|
@@ -46,4 +47,5 @@ export declare abstract class MsgView {
|
|
|
46
47
|
private asLooseGroup;
|
|
47
48
|
private binarySearch;
|
|
48
49
|
private stringify;
|
|
50
|
+
abstract toMsgStoreRecord(): IFixMsgStoreRecord;
|
|
49
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msg-view.js","sourceRoot":"","sources":["../../src/buffer/msg-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { TagPos } from './tag-pos'\r\nimport { SegmentDescription } from './segment-description'\r\nimport { Structure } from './structure'\r\nimport { Dictionary } from '../collections'\r\nimport { Tags } from './tags'\r\nimport { ContainedGroupField, ContainedComponentField, ContainedField, ContainedFieldSet, ContainedSimpleField, SimpleFieldDefinition, GroupFieldDefinition, ITypeDispatcher, reduceSet, ContainedSetType } from '../dictionary'\r\nimport { ILooseObject } from '../collections/collection'\r\nimport { ElasticBuffer } from './elastic-buffer'\r\n\r\nexport abstract class MsgView {\r\n protected sortedTagPosForwards: TagPos[]\r\n protected sortedTagPosBackwards: TagPos[]\r\n\r\n protected constructor (public readonly segment: SegmentDescription, public readonly structure: Structure) {\r\n }\r\n\r\n protected static asVerbose (field: SimpleFieldDefinition, val: string, i: number, count: number, tp: TagPos): string {\r\n const newLine = require('os').EOL\r\n let desc: string\r\n let name: string\r\n if (field) {\r\n name = field.name || 'unknown'\r\n if (field.isEnum()) {\r\n desc = `${val}[${field.resolveEnum(val)}]${newLine}\\t${field.description || ''}${newLine}${newLine}`\r\n } else {\r\n desc = `${val}${newLine}t${field.description || ''}${newLine}${newLine}`\r\n }\r\n } else {\r\n name = 'unknown'\r\n }\r\n return `[${i}] ${tp.tag} (${name}) = ${desc}`\r\n }\r\n\r\n protected static asToken (field: SimpleFieldDefinition, val: string, i: number, count: number, tp: TagPos): string {\r\n const perLine: number = 2\r\n const newLine = require('os').EOL\r\n // [280] 814 (ApplQueueResolution) = 2[OverlayLast][281] 10 (CheckSum) = 80\r\n let desc: string\r\n let name: string\r\n if (field) {\r\n name = field.name || 'unknown'\r\n if (field.isEnum()) {\r\n desc = `${val}[${field.resolveEnum(val)}]`\r\n } else {\r\n desc = `${val}`\r\n }\r\n } else {\r\n desc = `${val}`\r\n name = 'unknown'\r\n }\r\n let delimiter: string\r\n if (i === 1 || (i < count && i % perLine - 1 === 0)) {\r\n delimiter = newLine\r\n } else {\r\n delimiter = i < count ? ', ' : ''\r\n }\r\n return `[${i}] ${tp.tag} (${name}) = ${desc}${delimiter}`\r\n }\r\n\r\n // return list of any tags parsed that are not valid\r\n public invalid (): number[] {\r\n const invalidTags: number[] = []\r\n const set = this.segment.set\r\n const tags = this.structure.tags\r\n for (let i = 0; i < tags.nextTagPos; ++i) {\r\n const tag = tags.tagPos[i].tag\r\n if (tag <= 0 || !set.containedTag[tag]) {\r\n invalidTags[invalidTags.length] = tag\r\n }\r\n }\r\n return invalidTags\r\n }\r\n\r\n // list of tags that must be present\r\n public missing (): number[] {\r\n return this.missingRequired(this.segment.set, [])\r\n }\r\n\r\n public contains (tagOrName: number | string): boolean {\r\n const tag: number = this.resolveTag(tagOrName)\r\n const position: number = this.getPosition(tag)\r\n return position >= 0\r\n }\r\n\r\n public getGroupInstance (i: number): MsgView {\r\n const instance: SegmentDescription = this.segment.getInstance(i)\r\n if (!instance) {\r\n return null\r\n }\r\n return this.create(instance)\r\n }\r\n\r\n public getUndefined (): SegmentDescription | SegmentDescription[] {\r\n return this.structure.layout['.undefined']\r\n }\r\n\r\n public undefinedForMsg (): string {\r\n let msg: string = null\r\n const undefinedTags = this.getUndefined()\r\n if (undefinedTags) {\r\n if (Array.isArray(undefinedTags)) {\r\n msg = `undefined tags = ` + undefinedTags.map((e: SegmentDescription) => e.startTag.toString()).join(', ')\r\n } else {\r\n msg = `undefined tag = ${undefinedTags.startTag}`\r\n }\r\n }\r\n return msg\r\n }\r\n\r\n public groupCount (): number {\r\n const positions = this.segment.delimiterPositions\r\n return positions ? positions.length : 0\r\n }\r\n\r\n public getString (tagOrName: number | string): string {\r\n const tag: number = this.resolveTag(tagOrName)\r\n if (tag == null) {\r\n return null\r\n }\r\n const position: number = this.getPosition(tag)\r\n if (position < 0) {\r\n return null\r\n }\r\n return this.stringAtPosition(position)\r\n }\r\n\r\n public getStrings (tagOrName: number | string = -1): string[] {\r\n if (tagOrName < 0) {\r\n return this.allStrings()\r\n }\r\n const tag: number = this.resolveTag(tagOrName)\r\n if (tag == null) {\r\n return null\r\n }\r\n const positions: number[] = this.getPositions(tag)\r\n if (positions == null) {\r\n return null\r\n }\r\n return positions.map((position: number) => {\r\n return this.stringAtPosition(position)\r\n })\r\n }\r\n\r\n public getTyped (tagOrName: number | string): any {\r\n const tag: number = this.resolveTag(tagOrName)\r\n if (tag == null) {\r\n return null\r\n }\r\n const field: SimpleFieldDefinition = this.structure.tags.definitions.tagToSimple[tag]\r\n if (field == null) {\r\n return null\r\n }\r\n return this.toTyped(field)\r\n }\r\n\r\n public getTypedTags (tagOrName: any[]): any[] {\r\n return tagOrName.map((s) => this.getTyped(s))\r\n }\r\n\r\n public toObject (): any {\r\n const segment: SegmentDescription = this.segment\r\n if (segment.delimiterTag) {\r\n switch (segment.set.type) {\r\n case ContainedSetType.Group: {\r\n return this.asInstances((segment.set as GroupFieldDefinition).name)\r\n }\r\n case ContainedSetType.Msg: {\r\n // this is a batch of messages\r\n const hdrView = this.getView('Hdr')\r\n const batch: ILooseObject = {}\r\n if (hdrView) {\r\n batch[hdrView.segment.set.name] = hdrView.toObject()\r\n }\r\n batch[segment.name] = this.asInstances(segment.name)\r\n return batch\r\n }\r\n }\r\n }\r\n return this.asLoose(segment.set)\r\n }\r\n\r\n public toString (): string {\r\n return this.stringify(MsgView.asToken)\r\n }\r\n\r\n public toVerbose (): string {\r\n return this.stringify(MsgView.asVerbose)\r\n }\r\n\r\n public toJson (): string {\r\n return JSON.stringify(this.toObject(), null, 4)\r\n }\r\n\r\n public getView (name: string): MsgView {\r\n const parts: string[] = name.split('.')\r\n return parts.reduce((a: MsgView, current: string) => {\r\n if (!a) {\r\n return a\r\n }\r\n const structure = a.structure\r\n const singleton: SegmentDescription = structure.firstContainedWithin(current, a.segment)\r\n if (singleton) {\r\n return a.create(singleton)\r\n }\r\n // is this a full name where abbreviation exists\r\n const component: ContainedField = a.segment.set.localNameToField.get(current)\r\n if (component) {\r\n const abbreviated: SegmentDescription = structure.firstContainedWithin(component.name, a.segment)\r\n if (abbreviated) {\r\n return a.create(abbreviated)\r\n }\r\n }\r\n return null\r\n }, this as MsgView)\r\n }\r\n\r\n public abstract checksum (): number\r\n\r\n public abstract clone (): MsgView\r\n\r\n protected abstract create (singleton: SegmentDescription): MsgView\r\n\r\n protected abstract stringAtPosition (position: number): string\r\n\r\n protected abstract toTyped (field: SimpleFieldDefinition): any\r\n\r\n protected resolveTag (tagOrName: number | string): number {\r\n let tag: number\r\n if (typeof(tagOrName) === 'string') {\r\n let cf = this.segment.set.simple.get(tagOrName)\r\n const f: SimpleFieldDefinition = cf ? cf.definition : this.structure.tags.definitions.simple.get(tagOrName)\r\n if (f == null) {\r\n return null\r\n }\r\n tag = f.tag\r\n } else {\r\n tag = tagOrName\r\n }\r\n return tag\r\n }\r\n\r\n // fetch all positions of a particular tag.\r\n protected getPositions (tag: number): number[] {\r\n const forwards: TagPos[] = this.sortedTagPosForwards\r\n const backwards: TagPos[] = this.sortedTagPosBackwards\r\n const position: number = this.binarySearch(tag)\r\n if (position < 0) {\r\n return null\r\n }\r\n\r\n const count: number = forwards.length\r\n const last: number = count - 1\r\n let end: number = position\r\n while (end <= last) {\r\n if (tag !== forwards[end].tag) {\r\n break\r\n }\r\n ++end\r\n }\r\n // avoid backtracking over an array by scan forwards on a reversed copy\r\n let start: number = last - position\r\n while (start <= last) {\r\n if (tag !== backwards[start].tag) {\r\n break\r\n }\r\n ++start\r\n }\r\n const begin: number = last - (start - 1)\r\n const len: number = end - begin\r\n const positions: number[] = new Array(len)\r\n for (let i: number = begin; i < end; ++i) {\r\n positions[i - begin] = forwards[i].position\r\n }\r\n return positions\r\n }\r\n\r\n protected getPosition (tag: number): number {\r\n const pos: number = this.binarySearch(tag)\r\n if (pos >= 0) {\r\n return this.sortedTagPosForwards[pos].position\r\n } else {\r\n return -1\r\n }\r\n }\r\n\r\n private allStrings (): string[] {\r\n const segment: SegmentDescription = this.segment\r\n const range: number[] = []\r\n for (let i: number = segment.startPosition; i <= segment.endPosition; ++i) {\r\n range[range.length] = i\r\n }\r\n return range.map((i: number) => this.stringAtPosition(i))\r\n }\r\n\r\n private asInstances (name: string): ILooseObject[] {\r\n const groupView: MsgView = this.getView(name)\r\n if (groupView == null) {\r\n return\r\n }\r\n const groupArray: ILooseObject[] = new Array(groupView.groupCount())\r\n const count: number = groupView.groupCount()\r\n for (let j: number = 0; j < count; ++j) {\r\n const instance: MsgView = groupView.getGroupInstance(j)\r\n groupArray[j] = instance.toObject()\r\n }\r\n return groupArray\r\n }\r\n\r\n private asLoose (def: ContainedFieldSet): ILooseObject {\r\n return reduceSet<ILooseObject>(def, {\r\n group: (a: ILooseObject, field: ContainedGroupField) => this.asLooseGroup(a, field),\r\n simple: (a: ILooseObject, field: ContainedSimpleField) => this.asLooseSimple(a, field),\r\n component: (a: ILooseObject, field: ContainedComponentField) => this.asLooseComponent(a, field)\r\n } as ITypeDispatcher<ILooseObject>, def.localAttribute.reduce((a: ILooseObject, sf: ContainedSimpleField) => {\r\n const def = sf.definition\r\n const position: number = this.getPosition(def.tag)\r\n if (position >= 0) {\r\n a[def.name] = this.toTyped(def)\r\n }\r\n return a\r\n }, {} as ILooseObject))\r\n }\r\n\r\n private missingRequired (def: ContainedFieldSet, tags: number []): number[] {\r\n return reduceSet<number[]>(def, {\r\n group: (a: number[], field: ContainedGroupField) => this.missingGroup(def, field, a),\r\n simple: (a: number[], field: ContainedSimpleField) => this.missingSimple(field, a),\r\n component: (a: number[], field: ContainedComponentField) => this.missingComponent(field, a)\r\n } as ITypeDispatcher<number[]>, tags)\r\n }\r\n\r\n private missingSimple (sf: ContainedSimpleField, a: number[]) {\r\n if (sf.required && this.getPosition(sf.definition.tag) < 0) {\r\n a.push(sf.definition.tag)\r\n }\r\n }\r\n\r\n private missingComponent (cf: ContainedComponentField, a: number[]) {\r\n const view: MsgView = this.getView(cf.name)\r\n if (view) {\r\n view.missingRequired(cf.definition, a)\r\n }\r\n }\r\n\r\n private missingGroup (def: ContainedFieldSet, gf: ContainedGroupField, tags: number []) {\r\n const name = gf.definition.noOfField ? gf.definition.noOfField.name : def.name\r\n const groupView: MsgView = this.getView(name) || this.getView(gf.definition.name)\r\n if (groupView == null) {\r\n return\r\n }\r\n const count: number = groupView.groupCount()\r\n for (let j: number = 0; j < count; ++j) {\r\n const instance: MsgView = groupView.getGroupInstance(j)\r\n instance.missingRequired(gf.definition, tags)\r\n }\r\n }\r\n\r\n private asLooseComponent (a: ILooseObject, cf: ContainedComponentField) {\r\n const view: MsgView = this.getView(cf.name)\r\n if (view) {\r\n const component = view.toObject()\r\n if (component) {\r\n a[cf.definition.name] = component\r\n }\r\n }\r\n }\r\n\r\n private asLooseSimple (a: ILooseObject, sf: ContainedSimpleField) {\r\n const def = sf.definition\r\n const position: number = this.getPosition(def.tag)\r\n if (position >= 0) {\r\n const asSimple: any = this.toTyped(def)\r\n if (asSimple != null) { // beware, may be false value\r\n a[sf.name] = asSimple\r\n }\r\n }\r\n }\r\n\r\n private asLooseGroup (a: ILooseObject, gf: ContainedGroupField) {\r\n const def = gf.definition\r\n const name = def.noOfField ? def.noOfField.name : def.name\r\n const instances: ILooseObject = this.asInstances(name) || this.asInstances(def.name)\r\n if (instances) {\r\n a[def.name] = instances\r\n }\r\n }\r\n\r\n private binarySearch (tag: number): number {\r\n let forwards = this.sortedTagPosForwards\r\n if (!forwards) {\r\n const segment = this.segment\r\n forwards = this.sortedTagPosForwards = this.structure.tags.tagPos.slice(segment.startPosition, segment.endPosition + 1)\r\n forwards.sort(TagPos.compare)\r\n this.sortedTagPosBackwards = forwards.slice().reverse()\r\n }\r\n return TagPos.binarySearch(forwards, tag)\r\n }\r\n\r\n private stringify (getToken: (field: SimpleFieldDefinition, val: string, i: number, count: number, tp: TagPos) => string): string {\r\n const structure = this.structure\r\n const buffer: ElasticBuffer = new ElasticBuffer()\r\n const segment: SegmentDescription = this.segment\r\n const tags: Tags = structure.tags\r\n const count: number = segment.endPosition - segment.startPosition\r\n const simple: Dictionary<SimpleFieldDefinition> = tags.definitions.simple\r\n\r\n for (let i: number = segment.startPosition; i <= segment.endPosition; ++i) {\r\n const tagPos: TagPos = tags.tagPos[i]\r\n const field: SimpleFieldDefinition = simple.get(tagPos.tag.toString())\r\n const val: string = this.stringAtPosition(i)\r\n const token = getToken(field, val, i - segment.startPosition, count, tagPos)\r\n buffer.writeString(token)\r\n }\r\n\r\n return buffer.toString()\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"msg-view.js","sourceRoot":"","sources":["../../src/buffer/msg-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { TagPos } from './tag-pos'\r\nimport { SegmentDescription } from './segment-description'\r\nimport { Structure } from './structure'\r\nimport { Dictionary } from '../collections'\r\nimport { Tags } from './tags'\r\nimport { ContainedGroupField, ContainedComponentField, ContainedField, ContainedFieldSet, ContainedSimpleField, SimpleFieldDefinition, GroupFieldDefinition, ITypeDispatcher, reduceSet, ContainedSetType } from '../dictionary'\r\nimport { ILooseObject } from '../collections/collection'\r\nimport { ElasticBuffer } from './elastic-buffer'\r\nimport { IFixMsgStoreRecord } from '../store'\r\n\r\nexport abstract class MsgView {\r\n protected sortedTagPosForwards: TagPos[]\r\n protected sortedTagPosBackwards: TagPos[]\r\n\r\n protected constructor (public readonly segment: SegmentDescription, public readonly structure: Structure) {\r\n }\r\n\r\n protected static asVerbose (field: SimpleFieldDefinition, val: string, i: number, count: number, tp: TagPos): string {\r\n const newLine = require('os').EOL\r\n let desc: string\r\n let name: string\r\n if (field) {\r\n name = field.name || 'unknown'\r\n if (field.isEnum()) {\r\n desc = `${val}[${field.resolveEnum(val)}]${newLine}\\t${field.description || ''}${newLine}${newLine}`\r\n } else {\r\n desc = `${val}${newLine}t${field.description || ''}${newLine}${newLine}`\r\n }\r\n } else {\r\n name = 'unknown'\r\n }\r\n return `[${i}] ${tp.tag} (${name}) = ${desc}`\r\n }\r\n\r\n protected static asToken (field: SimpleFieldDefinition, val: string, i: number, count: number, tp: TagPos): string {\r\n const perLine: number = 2\r\n const newLine = require('os').EOL\r\n // [280] 814 (ApplQueueResolution) = 2[OverlayLast][281] 10 (CheckSum) = 80\r\n let desc: string\r\n let name: string\r\n if (field) {\r\n name = field.name || 'unknown'\r\n if (field.isEnum()) {\r\n desc = `${val}[${field.resolveEnum(val)}]`\r\n } else {\r\n desc = `${val}`\r\n }\r\n } else {\r\n desc = `${val}`\r\n name = 'unknown'\r\n }\r\n let delimiter: string\r\n if (i === 1 || (i < count && i % perLine - 1 === 0)) {\r\n delimiter = newLine\r\n } else {\r\n delimiter = i < count ? ', ' : ''\r\n }\r\n return `[${i}] ${tp.tag} (${name}) = ${desc}${delimiter}`\r\n }\r\n\r\n // return list of any tags parsed that are not valid\r\n public invalid (): number[] {\r\n const invalidTags: number[] = []\r\n const set = this.segment.set\r\n const tags = this.structure.tags\r\n for (let i = 0; i < tags.nextTagPos; ++i) {\r\n const tag = tags.tagPos[i].tag\r\n if (tag <= 0 || !set.containedTag[tag]) {\r\n invalidTags[invalidTags.length] = tag\r\n }\r\n }\r\n return invalidTags\r\n }\r\n\r\n // list of tags that must be present\r\n public missing (): number[] {\r\n return this.missingRequired(this.segment.set, [])\r\n }\r\n\r\n public contains (tagOrName: number | string): boolean {\r\n const tag: number = this.resolveTag(tagOrName)\r\n const position: number = this.getPosition(tag)\r\n return position >= 0\r\n }\r\n\r\n public getGroupInstance (i: number): MsgView {\r\n const instance: SegmentDescription = this.segment.getInstance(i)\r\n if (!instance) {\r\n return null\r\n }\r\n return this.create(instance)\r\n }\r\n\r\n public getUndefined (): SegmentDescription | SegmentDescription[] {\r\n return this.structure.layout['.undefined']\r\n }\r\n\r\n public undefinedForMsg (): string {\r\n let msg: string = null\r\n const undefinedTags = this.getUndefined()\r\n if (undefinedTags) {\r\n if (Array.isArray(undefinedTags)) {\r\n msg = `undefined tags = ` + undefinedTags.map((e: SegmentDescription) => e.startTag.toString()).join(', ')\r\n } else {\r\n msg = `undefined tag = ${undefinedTags.startTag}`\r\n }\r\n }\r\n return msg\r\n }\r\n\r\n public groupCount (): number {\r\n const positions = this.segment.delimiterPositions\r\n return positions ? positions.length : 0\r\n }\r\n\r\n public getString (tagOrName: number | string): string {\r\n const tag: number = this.resolveTag(tagOrName)\r\n if (tag == null) {\r\n return null\r\n }\r\n const position: number = this.getPosition(tag)\r\n if (position < 0) {\r\n return null\r\n }\r\n return this.stringAtPosition(position)\r\n }\r\n\r\n public getStrings (tagOrName: number | string = -1): string[] {\r\n if (tagOrName < 0) {\r\n return this.allStrings()\r\n }\r\n const tag: number = this.resolveTag(tagOrName)\r\n if (tag == null) {\r\n return null\r\n }\r\n const positions: number[] = this.getPositions(tag)\r\n if (positions == null) {\r\n return null\r\n }\r\n return positions.map((position: number) => {\r\n return this.stringAtPosition(position)\r\n })\r\n }\r\n\r\n public getTyped (tagOrName: number | string): any {\r\n const tag: number = this.resolveTag(tagOrName)\r\n if (tag == null) {\r\n return null\r\n }\r\n const field: SimpleFieldDefinition = this.structure.tags.definitions.tagToSimple[tag]\r\n if (field == null) {\r\n return null\r\n }\r\n return this.toTyped(field)\r\n }\r\n\r\n public getTypedTags (tagOrName: any[]): any[] {\r\n return tagOrName.map((s) => this.getTyped(s))\r\n }\r\n\r\n public toObject (): any {\r\n const segment: SegmentDescription = this.segment\r\n if (segment.delimiterTag) {\r\n switch (segment.set.type) {\r\n case ContainedSetType.Group: {\r\n return this.asInstances((segment.set as GroupFieldDefinition).name)\r\n }\r\n case ContainedSetType.Msg: {\r\n // this is a batch of messages\r\n const hdrView = this.getView('Hdr')\r\n const batch: ILooseObject = {}\r\n if (hdrView) {\r\n batch[hdrView.segment.set.name] = hdrView.toObject()\r\n }\r\n batch[segment.name] = this.asInstances(segment.name)\r\n return batch\r\n }\r\n }\r\n }\r\n return this.asLoose(segment.set)\r\n }\r\n\r\n public toString (): string {\r\n return this.stringify(MsgView.asToken)\r\n }\r\n\r\n public toVerbose (): string {\r\n return this.stringify(MsgView.asVerbose)\r\n }\r\n\r\n public toJson (): string {\r\n return JSON.stringify(this.toObject(), null, 4)\r\n }\r\n\r\n public getView (name: string): MsgView {\r\n const parts: string[] = name.split('.')\r\n return parts.reduce((a: MsgView, current: string) => {\r\n if (!a) {\r\n return a\r\n }\r\n const structure = a.structure\r\n const singleton: SegmentDescription = structure.firstContainedWithin(current, a.segment)\r\n if (singleton) {\r\n return a.create(singleton)\r\n }\r\n // is this a full name where abbreviation exists\r\n const component: ContainedField = a.segment.set.localNameToField.get(current)\r\n if (component) {\r\n const abbreviated: SegmentDescription = structure.firstContainedWithin(component.name, a.segment)\r\n if (abbreviated) {\r\n return a.create(abbreviated)\r\n }\r\n }\r\n return null\r\n }, this as MsgView)\r\n }\r\n\r\n public abstract checksum (): number\r\n\r\n public abstract clone (): MsgView\r\n\r\n protected abstract create (singleton: SegmentDescription): MsgView\r\n\r\n protected abstract stringAtPosition (position: number): string\r\n\r\n protected abstract toTyped (field: SimpleFieldDefinition): any\r\n\r\n protected resolveTag (tagOrName: number | string): number {\r\n let tag: number\r\n if (typeof(tagOrName) === 'string') {\r\n let cf = this.segment.set.simple.get(tagOrName)\r\n const f: SimpleFieldDefinition = cf ? cf.definition : this.structure.tags.definitions.simple.get(tagOrName)\r\n if (f == null) {\r\n return null\r\n }\r\n tag = f.tag\r\n } else {\r\n tag = tagOrName\r\n }\r\n return tag\r\n }\r\n\r\n // fetch all positions of a particular tag.\r\n protected getPositions (tag: number): number[] {\r\n const forwards: TagPos[] = this.sortedTagPosForwards\r\n const backwards: TagPos[] = this.sortedTagPosBackwards\r\n const position: number = this.binarySearch(tag)\r\n if (position < 0) {\r\n return null\r\n }\r\n\r\n const count: number = forwards.length\r\n const last: number = count - 1\r\n let end: number = position\r\n while (end <= last) {\r\n if (tag !== forwards[end].tag) {\r\n break\r\n }\r\n ++end\r\n }\r\n // avoid backtracking over an array by scan forwards on a reversed copy\r\n let start: number = last - position\r\n while (start <= last) {\r\n if (tag !== backwards[start].tag) {\r\n break\r\n }\r\n ++start\r\n }\r\n const begin: number = last - (start - 1)\r\n const len: number = end - begin\r\n const positions: number[] = new Array(len)\r\n for (let i: number = begin; i < end; ++i) {\r\n positions[i - begin] = forwards[i].position\r\n }\r\n return positions\r\n }\r\n\r\n protected getPosition (tag: number): number {\r\n const pos: number = this.binarySearch(tag)\r\n if (pos >= 0) {\r\n return this.sortedTagPosForwards[pos].position\r\n } else {\r\n return -1\r\n }\r\n }\r\n\r\n private allStrings (): string[] {\r\n const segment: SegmentDescription = this.segment\r\n const range: number[] = []\r\n for (let i: number = segment.startPosition; i <= segment.endPosition; ++i) {\r\n range[range.length] = i\r\n }\r\n return range.map((i: number) => this.stringAtPosition(i))\r\n }\r\n\r\n private asInstances (name: string): ILooseObject[] {\r\n const groupView: MsgView = this.getView(name)\r\n if (groupView == null) {\r\n return\r\n }\r\n const groupArray: ILooseObject[] = new Array(groupView.groupCount())\r\n const count: number = groupView.groupCount()\r\n for (let j: number = 0; j < count; ++j) {\r\n const instance: MsgView = groupView.getGroupInstance(j)\r\n groupArray[j] = instance.toObject()\r\n }\r\n return groupArray\r\n }\r\n\r\n private asLoose (def: ContainedFieldSet): ILooseObject {\r\n return reduceSet<ILooseObject>(def, {\r\n group: (a: ILooseObject, field: ContainedGroupField) => this.asLooseGroup(a, field),\r\n simple: (a: ILooseObject, field: ContainedSimpleField) => this.asLooseSimple(a, field),\r\n component: (a: ILooseObject, field: ContainedComponentField) => this.asLooseComponent(a, field)\r\n } as ITypeDispatcher<ILooseObject>, def.localAttribute.reduce((a: ILooseObject, sf: ContainedSimpleField) => {\r\n const def = sf.definition\r\n const position: number = this.getPosition(def.tag)\r\n if (position >= 0) {\r\n a[def.name] = this.toTyped(def)\r\n }\r\n return a\r\n }, {} as ILooseObject))\r\n }\r\n\r\n private missingRequired (def: ContainedFieldSet, tags: number []): number[] {\r\n return reduceSet<number[]>(def, {\r\n group: (a: number[], field: ContainedGroupField) => this.missingGroup(def, field, a),\r\n simple: (a: number[], field: ContainedSimpleField) => this.missingSimple(field, a),\r\n component: (a: number[], field: ContainedComponentField) => this.missingComponent(field, a)\r\n } as ITypeDispatcher<number[]>, tags)\r\n }\r\n\r\n private missingSimple (sf: ContainedSimpleField, a: number[]) {\r\n if (sf.required && this.getPosition(sf.definition.tag) < 0) {\r\n a.push(sf.definition.tag)\r\n }\r\n }\r\n\r\n private missingComponent (cf: ContainedComponentField, a: number[]) {\r\n const view: MsgView = this.getView(cf.name)\r\n if (view) {\r\n view.missingRequired(cf.definition, a)\r\n }\r\n }\r\n\r\n private missingGroup (def: ContainedFieldSet, gf: ContainedGroupField, tags: number []) {\r\n const name = gf.definition.noOfField ? gf.definition.noOfField.name : def.name\r\n const groupView: MsgView = this.getView(name) || this.getView(gf.definition.name)\r\n if (groupView == null) {\r\n return\r\n }\r\n const count: number = groupView.groupCount()\r\n for (let j: number = 0; j < count; ++j) {\r\n const instance: MsgView = groupView.getGroupInstance(j)\r\n instance.missingRequired(gf.definition, tags)\r\n }\r\n }\r\n\r\n private asLooseComponent (a: ILooseObject, cf: ContainedComponentField) {\r\n const view: MsgView = this.getView(cf.name)\r\n if (view) {\r\n const component = view.toObject()\r\n if (component) {\r\n a[cf.definition.name] = component\r\n }\r\n }\r\n }\r\n\r\n private asLooseSimple (a: ILooseObject, sf: ContainedSimpleField) {\r\n const def = sf.definition\r\n const position: number = this.getPosition(def.tag)\r\n if (position >= 0) {\r\n const asSimple: any = this.toTyped(def)\r\n if (asSimple != null) { // beware, may be false value\r\n a[sf.name] = asSimple\r\n }\r\n }\r\n }\r\n\r\n private asLooseGroup (a: ILooseObject, gf: ContainedGroupField) {\r\n const def = gf.definition\r\n const name = def.noOfField ? def.noOfField.name : def.name\r\n const instances: ILooseObject = this.asInstances(name) || this.asInstances(def.name)\r\n if (instances) {\r\n a[def.name] = instances\r\n }\r\n }\r\n\r\n private binarySearch (tag: number): number {\r\n let forwards = this.sortedTagPosForwards\r\n if (!forwards) {\r\n const segment = this.segment\r\n forwards = this.sortedTagPosForwards = this.structure.tags.tagPos.slice(segment.startPosition, segment.endPosition + 1)\r\n forwards.sort(TagPos.compare)\r\n this.sortedTagPosBackwards = forwards.slice().reverse()\r\n }\r\n return TagPos.binarySearch(forwards, tag)\r\n }\r\n\r\n private stringify (getToken: (field: SimpleFieldDefinition, val: string, i: number, count: number, tp: TagPos) => string): string {\r\n const structure = this.structure\r\n const buffer: ElasticBuffer = new ElasticBuffer()\r\n const segment: SegmentDescription = this.segment\r\n const tags: Tags = structure.tags\r\n const count: number = segment.endPosition - segment.startPosition\r\n const simple: Dictionary<SimpleFieldDefinition> = tags.definitions.simple\r\n\r\n for (let i: number = segment.startPosition; i <= segment.endPosition; ++i) {\r\n const tagPos: TagPos = tags.tagPos[i]\r\n const field: SimpleFieldDefinition = simple.get(tagPos.tag.toString())\r\n const val: string = this.stringAtPosition(i)\r\n const token = getToken(field, val, i - segment.startPosition, count, tagPos)\r\n buffer.writeString(token)\r\n }\r\n\r\n return buffer.toString()\r\n }\r\n\r\n abstract toMsgStoreRecord (): IFixMsgStoreRecord\r\n}\r\n"]}
|
package/dist/buffer/tags.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Tags = exports.TagType = void 0;
|
|
4
4
|
const tag_pos_1 = require("./tag-pos");
|
|
5
|
-
const
|
|
5
|
+
const types_1 = require("../types");
|
|
6
6
|
var TagType;
|
|
7
7
|
(function (TagType) {
|
|
8
8
|
TagType[TagType["String"] = 1] = "String";
|
|
@@ -128,8 +128,8 @@ class Tags {
|
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
exports.Tags = Tags;
|
|
131
|
-
Tags.BeginString =
|
|
132
|
-
Tags.BodyLengthTag =
|
|
133
|
-
Tags.CheckSumTag =
|
|
134
|
-
Tags.MsgTag =
|
|
131
|
+
Tags.BeginString = types_1.MsgTag.BeginString;
|
|
132
|
+
Tags.BodyLengthTag = types_1.MsgTag.BodyLength;
|
|
133
|
+
Tags.CheckSumTag = types_1.MsgTag.CheckSum;
|
|
134
|
+
Tags.MsgTag = types_1.MsgTag.MsgType;
|
|
135
135
|
//# sourceMappingURL=tags.js.map
|
package/dist/buffer/tags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/buffer/tags.ts"],"names":[],"mappings":";;;AACA,uCAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/buffer/tags.ts"],"names":[],"mappings":";;;AACA,uCAAkC;AAClC,oCAAiC;AAEjC,IAAY,OAYX;AAZD,WAAY,OAAO;IACf,yCAAU,CAAA;IACV,mCAAO,CAAA;IACP,uCAAS,CAAA;IACT,2CAAW,CAAA;IACX,qDAAgB,CAAA;IAChB,mDAAe,CAAA;IACf,mDAAe,CAAA;IACf,+CAAa,CAAA;IACb,2CAAW,CAAA;IACX,0CAAW,CAAA;IACX,4CAAY,CAAA;AAChB,CAAC,EAZW,OAAO,GAAP,eAAO,KAAP,eAAO,QAYlB;AAED,MAAa,IAAI;IASf,YAA6B,WAA2B,EAAkB,iBAAyB,EAAE,GAAG,IAAI;QAA/E,gBAAW,GAAX,WAAW,CAAgB;QAAkB,mBAAc,GAAd,cAAc,CAAoB;QAHrG,WAAM,GAAa,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACjD,eAAU,GAAW,CAAC,CAAA;IAG7B,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAE,MAA4B;QAClD,QAAQ,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE;YACjC,KAAK,OAAO,CAAC,MAAM;gBACjB,OAAO,QAAQ,CAAA;YAEjB,KAAK,OAAO,CAAC,GAAG,CAAC;YACjB,KAAK,OAAO,CAAC,KAAK,CAAC;YACnB,KAAK,OAAO,CAAC,MAAM;gBACjB,OAAO,QAAQ,CAAA;YAEjB,KAAK,OAAO,CAAC,OAAO;gBAClB,OAAO,QAAQ,CAAA;YAEjB,KAAK,OAAO,CAAC,OAAO;gBAClB,OAAO,SAAS,CAAA;YAElB,KAAK,OAAO,CAAC,YAAY,CAAC;YAC1B,KAAK,OAAO,CAAC,WAAW,CAAC;YACzB,KAAK,OAAO,CAAC,WAAW,CAAC;YACzB,KAAK,OAAO,CAAC,SAAS;gBACpB,OAAO,MAAM,CAAA;YAEf;gBACE,OAAO,QAAQ,CAAA;SAClB;IACH,CAAC;IAEM,MAAM,CAAC,MAAM,CAAE,IAAY;QAChC,IAAI,GAAG,IAAI,IAAI,QAAQ,CAAA;QACvB,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE;YAC1B,KAAK,UAAU,CAAC;YAChB,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM,CAAC,CAAC;gBACX,OAAO,OAAO,CAAC,MAAM,CAAA;aACtB;YAED,KAAK,KAAK,CAAC;YACX,KAAK,YAAY,CAAC;YAClB,KAAK,QAAQ,CAAC,CAAC;gBACb,OAAO,OAAO,CAAC,GAAG,CAAA;aACnB;YAED,KAAK,KAAK,CAAC;YACX,KAAK,YAAY,CAAC;YAClB,KAAK,KAAK,CAAC;YACX,KAAK,OAAO,CAAC;YACb,KAAK,aAAa,CAAC;YACnB,KAAK,OAAO,CAAC,CAAC;gBACZ,OAAO,OAAO,CAAC,KAAK,CAAA;aACrB;YAED,KAAK,QAAQ,CAAC,CAAC;gBACb,OAAO,OAAO,CAAC,MAAM,CAAA;aACtB;YAED,KAAK,SAAS,CAAC,CAAC;gBACd,OAAO,OAAO,CAAC,OAAO,CAAA;aACvB;YAED,KAAK,cAAc,CAAC,CAAC;gBACnB,OAAO,OAAO,CAAC,YAAY,CAAA;aAC5B;YAED,KAAK,cAAc,CAAC,CAAC;gBACnB,OAAO,OAAO,CAAC,SAAS,CAAA;aACzB;YAED,KAAK,aAAa,CAAC,CAAC;gBAClB,OAAO,OAAO,CAAC,WAAW,CAAA;aAC3B;YAED,KAAK,aAAa,CAAC,CAAC;gBAClB,OAAO,OAAO,CAAC,WAAW,CAAA;aAC3B;YAED,KAAK,MAAM,CAAC,CAAC;gBACX,OAAO,OAAO,CAAC,OAAO,CAAA;aACvB;YAED,OAAO,CAAC,CAAC;gBACP,OAAO,OAAO,CAAC,MAAM,CAAA;aACtB;SACF;IACH,CAAC;IAEM,KAAK;QACV,MAAM,IAAI,GAAW,IAAI,CAAC,UAAU,CAAA;QACpC,MAAM,MAAM,GAAS,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QACrD,MAAM,CAAC,UAAU,GAAG,IAAI,CAAA;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;YAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;SAC1C;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;IACrB,CAAC;IAEM,KAAK,CAAE,KAAa,EAAE,GAAW,EAAE,GAAW;QACnD,MAAM,MAAM,GAAW,IAAI,CAAC,UAAU,CAAA;QACtC,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACjC,IAAI,CAAC,MAAM,EAAE,CAAA;SACd;QACD,MAAM,EAAE,GAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACtC,IAAI,EAAE,EAAE;YACN,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;SACnC;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,gBAAM,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;SAC1D;QACD,IAAI,CAAC,UAAU,EAAE,CAAA;IACnB,CAAC;IAEO,MAAM;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;QACnC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YAC3C,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SAC3B;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;;AApIH,oBAqIC;AApIwB,gBAAW,GAAW,cAAM,CAAC,WAAW,CAAA;AACxC,kBAAa,GAAW,cAAM,CAAC,UAAU,CAAA;AACzC,gBAAW,GAAW,cAAM,CAAC,QAAQ,CAAA;AACrC,WAAM,GAAW,cAAM,CAAC,OAAO,CAAA","sourcesContent":["import { FixDefinitions, ContainedSimpleField } from '../dictionary'\r\nimport { TagPos } from './tag-pos'\r\nimport { MsgTag } from '../types'\r\n\r\nexport enum TagType {\r\n String = 1,\r\n Int = 2,\r\n Float = 3,\r\n Boolean = 4,\r\n UtcTimestamp = 5,\r\n UtcDateOnly = 6,\r\n UtcTimeOnly = 7,\r\n LocalDate = 8,\r\n RawData = 9,\r\n Length = 10,\r\n Unknown = 11\r\n}\r\n\r\nexport class Tags {\r\n public static readonly BeginString: number = MsgTag.BeginString\r\n public static readonly BodyLengthTag: number = MsgTag.BodyLength\r\n public static readonly CheckSumTag: number = MsgTag.CheckSum\r\n public static readonly MsgTag: number = MsgTag.MsgType\r\n\r\n public tagPos: TagPos[] = new Array(this.startingLength)\r\n public nextTagPos: number = 0\r\n\r\n constructor (public readonly definitions: FixDefinitions, public readonly startingLength: number = 30 * 1000) {\r\n }\r\n\r\n public static toJSType (simple: ContainedSimpleField): string {\r\n switch (simple.definition.tagType) {\r\n case TagType.String:\r\n return 'string'\r\n\r\n case TagType.Int:\r\n case TagType.Float:\r\n case TagType.Length:\r\n return 'number'\r\n\r\n case TagType.RawData:\r\n return 'Buffer'\r\n\r\n case TagType.Boolean:\r\n return 'boolean'\r\n\r\n case TagType.UtcTimestamp:\r\n case TagType.UtcDateOnly:\r\n case TagType.UtcTimeOnly:\r\n case TagType.LocalDate:\r\n return 'Date'\r\n\r\n default:\r\n return 'string'\r\n }\r\n }\r\n\r\n public static toType (type: string): TagType {\r\n type = type || 'string'\r\n switch (type.toLowerCase()) {\r\n case 'currency':\r\n case 'string':\r\n case 'char': {\r\n return TagType.String\r\n }\r\n\r\n case 'int':\r\n case 'numingroup':\r\n case 'seqnum': {\r\n return TagType.Int\r\n }\r\n\r\n case 'qty':\r\n case 'percentage':\r\n case 'amt':\r\n case 'price':\r\n case 'priceoffset':\r\n case 'float': {\r\n return TagType.Float\r\n }\r\n\r\n case 'length': {\r\n return TagType.Length\r\n }\r\n\r\n case 'boolean': {\r\n return TagType.Boolean\r\n }\r\n\r\n case 'utctimestamp': {\r\n return TagType.UtcTimestamp\r\n }\r\n\r\n case 'localmktdate': {\r\n return TagType.LocalDate\r\n }\r\n\r\n case 'utcdateonly': {\r\n return TagType.UtcDateOnly\r\n }\r\n\r\n case 'utctimeonly': {\r\n return TagType.UtcTimeOnly\r\n }\r\n\r\n case 'data': {\r\n return TagType.RawData\r\n }\r\n\r\n default: {\r\n return TagType.String\r\n }\r\n }\r\n }\r\n\r\n public clone (): Tags {\r\n const next: number = this.nextTagPos\r\n const cloned: Tags = new Tags(this.definitions, next)\r\n cloned.nextTagPos = next\r\n for (let i = 0; i < next; ++i) {\r\n cloned.tagPos[i] = this.tagPos[i].clone()\r\n }\r\n return cloned\r\n }\r\n\r\n public reset (): void {\r\n this.nextTagPos = 0\r\n }\r\n\r\n public store (start: number, len: number, tag: number): void {\r\n const tagPtr: number = this.nextTagPos\r\n if (tagPtr === this.tagPos.length) {\r\n this.expand()\r\n }\r\n const tp: TagPos = this.tagPos[tagPtr]\r\n if (tp) {\r\n tp.assign(tagPtr, tag, start, len)\r\n } else {\r\n this.tagPos[tagPtr] = new TagPos(tagPtr, tag, start, len)\r\n }\r\n this.nextTagPos++\r\n }\r\n\r\n private expand (): void {\r\n const size = this.tagPos.length * 2\r\n const tagPos = new Array(size)\r\n for (let i = 0; i < this.tagPos.length; ++i) {\r\n tagPos[i] = this.tagPos[i]\r\n }\r\n this.tagPos = tagPos\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary.js","sourceRoot":"","sources":["../../src/collections/dictionary.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IAAvB;QAEU,cAAS,GAAyB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"dictionary.js","sourceRoot":"","sources":["../../src/collections/dictionary.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IAAvB;QAEU,cAAS,GAAyB,EAAE,CAAA;IA0D9C,CAAC;IAxDQ,KAAK;QACV,MAAM,IAAI,GAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAClD,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAEM,MAAM;QACX,MAAM,EAAE,GAAQ,EAAE,CAAA;QAClB,MAAM,IAAI,GAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAClD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/C,OAAO,EAAE,CAAA;IACX,CAAC;IAEM,IAAI;QACT,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,OAAe,EAAE,EAAE;YACvD,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;YACtC,OAAO,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAA;QAClE,CAAC,EAAE,EAAE,CAAC,CAAA;IACR,CAAC;IAEM,WAAW,CAAE,GAAW;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;IACpC,CAAC;IAEM,GAAG,CAAE,GAAW,EAAE,CAAI;QAC3B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;YACzB,MAAM,GAAG,GAAW,iBAAiB,GAAG,EAAE,CAAA;YAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;SACrB;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAEM,SAAS,CAAE,GAAW,EAAE,CAAI;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAEM,MAAM,CAAE,GAAW;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAEM,GAAG,CAAE,GAAW;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,OAAO,CAAE,EAAsB;QACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9E,CAAC;CACF;AA5DD,gCA4DC","sourcesContent":["import { IDictIteratorCb } from './collection'\r\n\r\nexport class Dictionary<T> {\r\n\r\n private container: { [id: string]: T; } = {}\r\n\r\n public count (): number {\r\n const keys: string[] = Object.keys(this.container)\r\n return keys.length\r\n }\r\n\r\n public values (): T[] {\r\n const va: T[] = []\r\n const keys: string[] = Object.keys(this.container)\r\n keys.forEach((k) => va.push(this.container[k]))\r\n return va\r\n }\r\n\r\n public keys (): string[] {\r\n return Object.keys(this.container)\r\n }\r\n\r\n public toString (): string {\r\n return this.keys().reduce((a: string, current: string) => {\r\n const token = a.length > 0 ? ', ' : ''\r\n return a + `${token}${this.container[current].toString() || ''}`\r\n }, '')\r\n }\r\n\r\n public containsKey (key: string): boolean {\r\n return this.container[key] != null\r\n }\r\n\r\n public add (key: string, v: T): void {\r\n if (this.containsKey(key)) {\r\n const msg: string = `duplicate key ${key}`\r\n throw new Error(msg)\r\n }\r\n this.container[key] = v\r\n }\r\n\r\n public addUpdate (key: string, v: T): void {\r\n this.container[key] = v\r\n }\r\n\r\n public remove (key: string): void {\r\n delete this.container[key]\r\n }\r\n\r\n public get (key: string): T {\r\n return this.container[key]\r\n }\r\n\r\n public clear () {\r\n this.keys().forEach(k => {\r\n this.remove(k)\r\n })\r\n }\r\n\r\n public forEach (cb: IDictIteratorCb<T>): void {\r\n Object.keys(this.container).forEach((k: string) => cb(k, this.container[k]))\r\n }\r\n}\r\n"]}
|
|
@@ -6,6 +6,7 @@ export interface IJsFixConfig {
|
|
|
6
6
|
definitions: FixDefinitions;
|
|
7
7
|
description: ISessionDescription;
|
|
8
8
|
delimiter?: number;
|
|
9
|
+
logDelimiter?: number;
|
|
9
10
|
logFactory: JsFixLoggerFactory;
|
|
10
11
|
}
|
|
11
12
|
export declare class JsFixConfig implements IJsFixConfig {
|
|
@@ -14,5 +15,6 @@ export declare class JsFixConfig implements IJsFixConfig {
|
|
|
14
15
|
readonly description: ISessionDescription;
|
|
15
16
|
readonly delimiter: number;
|
|
16
17
|
readonly logFactory: JsFixLoggerFactory;
|
|
18
|
+
logDelimiter: number;
|
|
17
19
|
constructor(factory: ISessionMsgFactory, definitions: FixDefinitions, description: ISessionDescription, delimiter?: number, logFactory?: JsFixLoggerFactory);
|
|
18
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js-fix-config.js","sourceRoot":"","sources":["../../src/config/js-fix-config.ts"],"names":[],"mappings":";;;AAGA,2DAAqD;AACrD,sCAAsC;
|
|
1
|
+
{"version":3,"file":"js-fix-config.js","sourceRoot":"","sources":["../../src/config/js-fix-config.ts"],"names":[],"mappings":";;;AAGA,2DAAqD;AACrD,sCAAsC;AAWtC,MAAa,WAAW;IAEtB,YAC6B,OAA2B,EAC3B,WAA2B,EAC3B,WAAgC,EAChC,YAAoB,mBAAU,CAAC,GAAG,EAClC,aAAiC,IAAI,mCAAe,EAAE;QAJtD,YAAO,GAAP,OAAO,CAAoB;QAC3B,gBAAW,GAAX,WAAW,CAAgB;QAC3B,gBAAW,GAAX,WAAW,CAAqB;QAChC,cAAS,GAAT,SAAS,CAAyB;QAClC,eAAU,GAAV,UAAU,CAA4C;QAN5E,iBAAY,GAAW,mBAAU,CAAC,IAAI,CAAA;IAO7C,CAAC;CACF;AATD,kCASC","sourcesContent":["import { FixDefinitions } from '../dictionary'\r\nimport { ISessionDescription, ISessionMsgFactory } from '../transport'\r\nimport { JsFixLoggerFactory } from './js-fix-logger-factory'\r\nimport { EmptyLogFactory } from './empty-log-factory'\r\nimport { AsciiChars } from '../buffer'\r\n\r\nexport interface IJsFixConfig {\r\n factory: ISessionMsgFactory\r\n definitions: FixDefinitions\r\n description: ISessionDescription\r\n delimiter?: number\r\n logDelimiter?: number\r\n logFactory: JsFixLoggerFactory\r\n}\r\n\r\nexport class JsFixConfig implements IJsFixConfig {\r\n public logDelimiter: number = AsciiChars.Pipe\r\n constructor (\r\n public readonly factory: ISessionMsgFactory,\r\n public readonly definitions: FixDefinitions,\r\n public readonly description: ISessionDescription,\r\n public readonly delimiter: number = AsciiChars.Soh,\r\n public readonly logFactory: JsFixLoggerFactory = new EmptyLogFactory()) {\r\n }\r\n}\r\n"]}
|
package/dist/dict-parser.js
CHANGED
|
@@ -16,8 +16,8 @@ const transport_1 = require("./transport");
|
|
|
16
16
|
const dictionary_1 = require("./dictionary");
|
|
17
17
|
const types_1 = require("./types");
|
|
18
18
|
const config_1 = require("./config");
|
|
19
|
-
const requestPromise = require("request-promise");
|
|
20
19
|
const FIXML50SP2_1 = require("./types/FIXML50SP2");
|
|
20
|
+
const rp = require("request-promise-native");
|
|
21
21
|
function testEncodeDecode() {
|
|
22
22
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23
23
|
const msgType = 'W';
|
|
@@ -195,7 +195,7 @@ function http() {
|
|
|
195
195
|
' <Hdr SID="BRKR" SSub="user123" TID="CME" TSub="CPAPI"/>\n' +
|
|
196
196
|
' </UserReq>\n' +
|
|
197
197
|
'</FIXML>';
|
|
198
|
-
|
|
198
|
+
rp({
|
|
199
199
|
method: 'POST',
|
|
200
200
|
uri: 'http://localhost:2343/session',
|
|
201
201
|
body: {
|
package/dist/dict-parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dict-parser.js","sourceRoot":"","sources":["../src/dict-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'path'\r\nimport { ILooseObject } from './collections/collection'\r\nimport { MessageGenerator, JsonHelper, getDefinitions, getWords } from './util'\r\nimport { AsciiChars, MsgView, MsgParser, ElasticBuffer, AsciiParser, AsciiView, FiXmlParser, FixmlEncoder } from './buffer'\r\nimport { ReadStream } from 'fs'\r\nimport { ISessionDescription, AsciiMsgTransmitter, StringDuplex, MsgPayload } from './transport'\r\nimport { EnumCompiler, MsgCompiler, ICompilerSettings, FixDefinitions } from './dictionary'\r\nimport { MsgType } from './types'\r\nimport { JsFixWinstonLogFactory, JsFixConfig, WinstonLogger } from './config'\r\nimport * as requestPromise from 'request-promise'\r\nimport { BusinessRejectReason, IBusinessMessageReject } from './types/FIXML50SP2'\r\n\r\nasync function testEncodeDecode (): Promise<any> {\r\n const msgType: string = 'W'\r\n const root: string = path.join(__dirname, '../')\r\n const sessionDescription: ISessionDescription = require('../data/session/test-initiator.json')\r\n const definitions = await getDefinitions(path.join(root, sessionDescription.application.dictionary))\r\n const jh: JsonHelper = new JsonHelper(definitions)\r\n const msg: ILooseObject = jh.fromJson(path.join(root, 'data/examples/FIXML/cme/tc/Initial Single Side Submission/fix.xml'), msgType)\r\n const config = new JsFixConfig(null, definitions, sessionDescription, AsciiChars.Pipe)\r\n const session: AsciiMsgTransmitter = new AsciiMsgTransmitter(config)\r\n const payload: MsgPayload = new MsgPayload(msgType, msg)\r\n const encoderStream = session.encodeStream\r\n encoderStream.write(payload)\r\n session.encodeMessage(msgType, msg)\r\n const parser: MsgParser = new AsciiParser(definitions, encoderStream, AsciiChars.Pipe)\r\n const fix: string = session.buffer.toString()\r\n console.log(fix)\r\n return new Promise(async (resolve, reject) => {\r\n parser.on('msg', (msgType: string, view: AsciiView) => {\r\n resolve(view.toObject())\r\n })\r\n parser.on('error', (e: Error) => {\r\n reject(e)\r\n })\r\n })\r\n}\r\n\r\nasync function testGenerator (): Promise<any> {\r\n const root: string = path.join(__dirname, '../')\r\n const sessionDescription: ISessionDescription = require('../data/session/test-initiator.json')\r\n const definitions = await getDefinitions('C:/Users/Stephen/dev/ts/jsfix/data/fix_repo/FIX.4.4/Base')\r\n const lipsum: string[] = await getWords(path.join(root, 'data/examples/lipsum.txt'))\r\n const generator: MessageGenerator = new MessageGenerator(lipsum, definitions)\r\n const msgType: string = MsgType.NewOrderSingle\r\n const example: ILooseObject = generator.generate(msgType)\r\n console.log(JSON.stringify(example, null, 4))\r\n const config = new JsFixConfig(null, definitions, sessionDescription, AsciiChars.Pipe)\r\n const session: AsciiMsgTransmitter = new AsciiMsgTransmitter(config)\r\n session.encodeMessage(msgType, example)\r\n const fix: string = session.buffer.toString()\r\n const encoderStream = session.encodeStream\r\n const payload: MsgPayload = new MsgPayload(msgType, example)\r\n encoderStream.write(payload)\r\n const parser: MsgParser = new AsciiParser(definitions, encoderStream, AsciiChars.Pipe)\r\n parser.on('msg', (mt: string, view: MsgView) => {\r\n console.log(view.toString())\r\n })\r\n console.log(fix)\r\n}\r\n\r\n/*\r\nfix.xml\r\nClearing System Confirms Allocation to Executing Firm.xml\r\nClearing System Confirms Allocation to CME Executing Firm_Cross-exchange.xml\r\nClearing System Confirms Completed Reversal to Executing Firm.xml\r\nClearing System Notifies Allocation to the Claiming Firm.xml\r\nfix.xml\r\nClearing System Notifies Claiming Firm of Completed Reversal.xml\r\nClearing System Notifies Executing Firm of Alleged Reversal.xml\r\nExecuting Firm Un-completes Group-Average_Price.xml\r\nExecuting Firm Marks a Trade for Give-up.xml\r\n */\r\nasync function repository (): Promise<any> {\r\n const root: string = path.join(__dirname, '../')\r\n const definitions: FixDefinitions = await getDefinitions('repofixml')\r\n // cme/alloc/Clearing System Notifies Allocation to the Claiming Firm - Cross-Exchange\r\n // const file: string = path.join(root,'data/examples/FIXML/cme/alloc/Claiming Firm Requests Sub-allocation with Allocation Instructions/')\r\n // const file: string = path.join(root,'data/examples/FIXML/cme/md/settle')\r\n // const file: string = path.join(root, 'data/examples/FIXML/cme/alloc/Clearing System Notifies Allocation to the Claiming Firm - Cross-Exchange/')\r\n const file: string = path.join(root,'data/examples/FIXML/cme/tc/Delivery Fixed Commodity Swap/')\r\n // const file: string = path.join(root, 'data/examples/FIXML/cme/tc/Trading Firm Continued Subscription')\r\n // const file: string = path.join(root,'data/examples/FIXML/cme/md/futures')\r\n // const file: string = path.join(root, 'data/examples/FIXML/cme/tc/Delivery Fixed Commodity Swap')\r\n // const file: string = path.join(root, 'data/examples/FIXML/cme/tc/Initial Single Side Submission/')\r\n // const file: string = path.join(root, 'data/examples/FIXML/cme/tc/Accepted Unmatched')\r\n // const file: string = path.join(root, 'data/examples/FIXML/cme/tc/Trading Firm Continued Subscription/')\r\n // const file: string = path.join(root, 'data/examples/FIXML/om/nso/')\r\n // const file: string = path.join(root, 'data/examples/FIXML/om/er/')\r\n const so = definitions.message.get('ExecutionReport')\r\n const t855 = definitions.simple.get('SecondaryTrdType')\r\n\r\n const reject = {\r\n Text: `no response`,\r\n BusinessRejectReason: BusinessRejectReason.ApplicationNotAvailable\r\n } as IBusinessMessageReject\r\n const fe = new FixmlEncoder(new ElasticBuffer(), definitions)\r\n fe.encode(reject, 'BusinessMessageReject')\r\n const fixml: string = fe.buffer.toString()\r\n // console.log(fixml)\r\n const jh: JsonHelper = new JsonHelper(definitions)\r\n const fs: any = require('fs')\r\n let readStream: ReadStream = fs.createReadStream(`${file}/fix.xml`)\r\n const sessionDescription: ISessionDescription = require('../data/session/test-initiator.json')\r\n const config = new JsFixConfig(null, definitions, sessionDescription, AsciiChars.Pipe)\r\n const xmlParser: MsgParser = new FiXmlParser(config, readStream)\r\n xmlParser.on('batch', (msgType: string, v: MsgView) => {\r\n console.log(`received message ${msgType}`)\r\n const o: ILooseObject = v.toObject()\r\n console.log(JSON.stringify(o, null, 4))\r\n const fe = new FixmlEncoder(new ElasticBuffer(), definitions)\r\n fe.encode(o, msgType)\r\n const fixml: string = fe.buffer.toString()\r\n console.log(fixml)\r\n console.log(v.toString())\r\n })\r\n xmlParser.on('msg', (msgType: string, v: MsgView) => {\r\n console.log(`received message ${msgType}`)\r\n const o: ILooseObject = v.toObject()\r\n console.log(JSON.stringify(o, null, 4))\r\n console.log(v.toString())\r\n const fe = new FixmlEncoder(new ElasticBuffer(), definitions)\r\n fe.encode(o, msgType)\r\n const fixml: string = fe.buffer.toString()\r\n console.log(fixml)\r\n })\r\n}\r\n\r\nasync function runTest (): Promise<any> {\r\n return new Promise<any>(async (accept, reject) => {\r\n try {\r\n const res: any = await testGenerator()\r\n accept(res)\r\n } catch (e) {\r\n console.log(e.message)\r\n reject(e)\r\n }\r\n })\r\n}\r\n\r\nfunction streamExample () {\r\n const fs: any = require('fs')\r\n const root: string = path.join(__dirname, '../')\r\n const file: string = path.join(root,'data/examples/FIXML/cme/Claiming Firm Requests Sub-allocation with Allocation Instructions/')\r\n let readStream: ReadStream = fs.createReadStream(`${file}/fix.xml`)\r\n const Writable = require('stream').Writable\r\n const receiver = new Writable({\r\n write: (data: Buffer, _: any, done: Function) => {\r\n console.log('receive ' + data)\r\n done()\r\n }\r\n })\r\n readStream.pipe(receiver).on('finish', () => {\r\n console.log('done')\r\n })\r\n}\r\n\r\nasync function compileDefinitions (definitionPath: string, outputPath: string) {\r\n const definitions = await getDefinitions(definitionPath)\r\n const compilerSettings: ICompilerSettings = require('../data/compiler.json')\r\n compilerSettings.output = outputPath\r\n const msgCompiler: MsgCompiler = new MsgCompiler(definitions, compilerSettings)\r\n await msgCompiler.generate()\r\n const enumCompiler: EnumCompiler = new EnumCompiler(definitions, compilerSettings)\r\n const writeFile = path.join(compilerSettings.output, './enum/all-enum.ts')\r\n await enumCompiler.generate(writeFile)\r\n\r\n const writeFileTypes = path.join(compilerSettings.output, './enum/msg-type.ts')\r\n await enumCompiler.generate(writeFile)\r\n}\r\n\r\nasync function compiler () {\r\n // 'C:/Users/Stephen/dev/js/jsfix/data/fix_repo/fixmlschema_FIX.5.0SP2_EP228'\r\n // await compileDefinitions('data/fix_repo/FIX.4.4/Base', 'C:/Users/Stephen/dev/ts/jsfix/src/types/FIX4.4/repo')\r\n // await compileDefinitions('data/FIX44.xml', 'C:/Users/Stephen/dev/ts/jsfix/src/types/FIX4.4/quickfix')\r\n await compileDefinitions('data/fix_repo/fixmlschema_FIX.5.0SP2_EP228', 'C:/Users/Stephen/dev/ts/jsfix/src/types/FIXML50SP2')\r\n}\r\n\r\nasync function generateMessage () {\r\n await testGenerator()\r\n}\r\n\r\nasync function decode (): Promise<any> {\r\n const definitions: FixDefinitions = await getDefinitions('data/fix_repo/FIX.4.4/Base')\r\n const txt = '8=FIX4.4|9=0001022|35=AE|49=init-comp|56=accept-comp|34=1|57=fix|52=20180909-14:22:09.841|571=Lorem|487=23513|856=1|568=ipsum|828=6|855=23619|830=dolor|150=F|748=17140|912=N|325=N|263=1|881=sit|818=amet,|820=consectetur|880=adipiscing|17=elit.|39=3|527=Nunc|570=N|423=8|55=odio|65=orci,|48=blandit|22=3|460=4|461=vel|167=MPT|762=semper|200=sed,|541=20180909|201=0|224=20180909|225=20180909|227=-8796.1|228=-23.537|255=bibendum|543=cursus|470=lectus.|471=Aenean|472=vel|240=20180909|202=891.7|947=-2928.1|231=5.7237|223=-1894.1|106=diam|348=9|349=6YYz0zu5s|350=8|351=TuH3tTNd|691=magna.|667=Aenean|875=99|876=et|873=20180909|874=20180909|913=viverra|914=leo,|915=20180909|916=20180909|919=0|898=0.5594|38=96682|152=19226|516=9.1251|854=0|235=PREVCLOSE|236=-2833.5|701=20180909|696=20180909|697=-6.095|698=26303|823=non|32=9253|31=2065.4|194=-73.233|30=iaculis|75=20180909|715=20180909|6=5.9279|218=0.0001953|221=neque.|222=Nullam|663=16216|699=arcu|761=lectus,|824=dignissim|63=3|64=20180909|573=0|574=M3|797=Y|852=Y|853=3|10=16|'\r\n const startsAt: Date = new Date()\r\n let i = 0\r\n const repeats = 1\r\n const asciiParser: MsgParser = new AsciiParser(definitions, new StringDuplex(txt.repeat(repeats)).readable, AsciiChars.Pipe)\r\n asciiParser.on('msg', (msgType: string, v: MsgView) => {\r\n ++i\r\n console.log(v.toJson())\r\n if (i === repeats) {\r\n const elapsed: number = new Date().getTime() - startsAt.getTime()\r\n console.log(`elapsed ms ${elapsed} ${(elapsed / repeats) * 1000} micros per msg`)\r\n }\r\n })\r\n}\r\n\r\nasync function http (): Promise<any> {\r\n const sessionDescription: ISessionDescription = require('../data/session/test-http-acceptor.json')\r\n const definitions = await getDefinitions(sessionDescription.application.dictionary)\r\n const logFactory = new JsFixWinstonLogFactory(WinstonLogger.consoleOptions('info'))\r\n const config = new JsFixConfig(null, definitions, sessionDescription, AsciiChars.Pipe, logFactory)\r\n // const acceptor = acceptor(config)\r\n const xml = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n' +\r\n '<FIXML v=\"5.0 SP2\" s=\"20090815\" xv=\"109\" cv=\"CME.0001\">\\n' +\r\n ' <UserReq UserReqID=\"123456\" UserReqTyp=\"1\" Username=\"user123\" Password=\"User!Pass5\">\\n' +\r\n ' <Hdr SID=\"BRKR\" SSub=\"user123\" TID=\"CME\" TSub=\"CPAPI\"/>\\n' +\r\n ' </UserReq>\\n' +\r\n '</FIXML>'\r\n // acceptor.listen()\r\n requestPromise({\r\n method: 'POST',\r\n uri: 'http://localhost:2343/session',\r\n body: {\r\n fixml : xml\r\n },\r\n json: true // Automatically stringifies the body to JSON\r\n }).then(function (parsedBody) {\r\n console.log(parsedBody)\r\n // POST succeeded...\r\n })\r\n .catch((err: Error) => {\r\n console.log(err)\r\n // POST failed...\r\n })\r\n}\r\n\r\n// http()\r\n// decode()\r\n// generateMessage()\r\n// compiler()\r\n// stronglyTyped()\r\n// streamExample()\r\n// testEncodeDecode()\r\nrepository()\r\n// testEncodeDecode()\r\n// runTest();\r\n// testSocket()\r\n// testRead();\r\n"]}
|
|
1
|
+
{"version":3,"file":"dict-parser.js","sourceRoot":"","sources":["../src/dict-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'path'\r\nimport { ILooseObject } from './collections/collection'\r\nimport { MessageGenerator, JsonHelper, getDefinitions, getWords } from './util'\r\nimport { AsciiChars, MsgView, MsgParser, ElasticBuffer, AsciiParser, AsciiView, FiXmlParser, FixmlEncoder } from './buffer'\r\nimport { ReadStream } from 'fs'\r\nimport { ISessionDescription, AsciiMsgTransmitter, StringDuplex, MsgPayload } from './transport'\r\nimport { EnumCompiler, MsgCompiler, ICompilerSettings, FixDefinitions } from './dictionary'\r\nimport { MsgType } from './types'\r\nimport { JsFixWinstonLogFactory, JsFixConfig, WinstonLogger } from './config'\r\nimport { BusinessRejectReason, IBusinessMessageReject } from './types/FIXML50SP2'\r\nimport * as rp from 'request-promise-native'\r\n\r\nasync function testEncodeDecode (): Promise<any> {\r\n const msgType: string = 'W'\r\n const root: string = path.join(__dirname, '../')\r\n const sessionDescription: ISessionDescription = require('../data/session/test-initiator.json')\r\n const definitions = await getDefinitions(path.join(root, sessionDescription.application.dictionary))\r\n const jh: JsonHelper = new JsonHelper(definitions)\r\n const msg: ILooseObject = jh.fromJson(path.join(root, 'data/examples/FIXML/cme/tc/Initial Single Side Submission/fix.xml'), msgType)\r\n const config = new JsFixConfig(null, definitions, sessionDescription, AsciiChars.Pipe)\r\n const session: AsciiMsgTransmitter = new AsciiMsgTransmitter(config)\r\n const payload: MsgPayload = new MsgPayload(msgType, msg)\r\n const encoderStream = session.encodeStream\r\n encoderStream.write(payload)\r\n session.encodeMessage(msgType, msg)\r\n const parser: MsgParser = new AsciiParser(definitions, encoderStream, AsciiChars.Pipe)\r\n const fix: string = session.buffer.toString()\r\n console.log(fix)\r\n return new Promise(async (resolve, reject) => {\r\n parser.on('msg', (msgType: string, view: AsciiView) => {\r\n resolve(view.toObject())\r\n })\r\n parser.on('error', (e: Error) => {\r\n reject(e)\r\n })\r\n })\r\n}\r\n\r\nasync function testGenerator (): Promise<any> {\r\n const root: string = path.join(__dirname, '../')\r\n const sessionDescription: ISessionDescription = require('../data/session/test-initiator.json')\r\n const definitions = await getDefinitions('C:/Users/Stephen/dev/ts/jsfix/data/fix_repo/FIX.4.4/Base')\r\n const lipsum: string[] = await getWords(path.join(root, 'data/examples/lipsum.txt'))\r\n const generator: MessageGenerator = new MessageGenerator(lipsum, definitions)\r\n const msgType: string = MsgType.NewOrderSingle\r\n const example: ILooseObject = generator.generate(msgType)\r\n console.log(JSON.stringify(example, null, 4))\r\n const config = new JsFixConfig(null, definitions, sessionDescription, AsciiChars.Pipe)\r\n const session: AsciiMsgTransmitter = new AsciiMsgTransmitter(config)\r\n session.encodeMessage(msgType, example)\r\n const fix: string = session.buffer.toString()\r\n const encoderStream = session.encodeStream\r\n const payload: MsgPayload = new MsgPayload(msgType, example)\r\n encoderStream.write(payload)\r\n const parser: MsgParser = new AsciiParser(definitions, encoderStream, AsciiChars.Pipe)\r\n parser.on('msg', (mt: string, view: MsgView) => {\r\n console.log(view.toString())\r\n })\r\n console.log(fix)\r\n}\r\n\r\n/*\r\nfix.xml\r\nClearing System Confirms Allocation to Executing Firm.xml\r\nClearing System Confirms Allocation to CME Executing Firm_Cross-exchange.xml\r\nClearing System Confirms Completed Reversal to Executing Firm.xml\r\nClearing System Notifies Allocation to the Claiming Firm.xml\r\nfix.xml\r\nClearing System Notifies Claiming Firm of Completed Reversal.xml\r\nClearing System Notifies Executing Firm of Alleged Reversal.xml\r\nExecuting Firm Un-completes Group-Average_Price.xml\r\nExecuting Firm Marks a Trade for Give-up.xml\r\n */\r\nasync function repository (): Promise<any> {\r\n const root: string = path.join(__dirname, '../')\r\n const definitions: FixDefinitions = await getDefinitions('repofixml')\r\n // cme/alloc/Clearing System Notifies Allocation to the Claiming Firm - Cross-Exchange\r\n // const file: string = path.join(root,'data/examples/FIXML/cme/alloc/Claiming Firm Requests Sub-allocation with Allocation Instructions/')\r\n // const file: string = path.join(root,'data/examples/FIXML/cme/md/settle')\r\n // const file: string = path.join(root, 'data/examples/FIXML/cme/alloc/Clearing System Notifies Allocation to the Claiming Firm - Cross-Exchange/')\r\n const file: string = path.join(root,'data/examples/FIXML/cme/tc/Delivery Fixed Commodity Swap/')\r\n // const file: string = path.join(root, 'data/examples/FIXML/cme/tc/Trading Firm Continued Subscription')\r\n // const file: string = path.join(root,'data/examples/FIXML/cme/md/futures')\r\n // const file: string = path.join(root, 'data/examples/FIXML/cme/tc/Delivery Fixed Commodity Swap')\r\n // const file: string = path.join(root, 'data/examples/FIXML/cme/tc/Initial Single Side Submission/')\r\n // const file: string = path.join(root, 'data/examples/FIXML/cme/tc/Accepted Unmatched')\r\n // const file: string = path.join(root, 'data/examples/FIXML/cme/tc/Trading Firm Continued Subscription/')\r\n // const file: string = path.join(root, 'data/examples/FIXML/om/nso/')\r\n // const file: string = path.join(root, 'data/examples/FIXML/om/er/')\r\n const so = definitions.message.get('ExecutionReport')\r\n const t855 = definitions.simple.get('SecondaryTrdType')\r\n\r\n const reject = {\r\n Text: `no response`,\r\n BusinessRejectReason: BusinessRejectReason.ApplicationNotAvailable\r\n } as IBusinessMessageReject\r\n const fe = new FixmlEncoder(new ElasticBuffer(), definitions)\r\n fe.encode(reject, 'BusinessMessageReject')\r\n const fixml: string = fe.buffer.toString()\r\n // console.log(fixml)\r\n const jh: JsonHelper = new JsonHelper(definitions)\r\n const fs: any = require('fs')\r\n let readStream: ReadStream = fs.createReadStream(`${file}/fix.xml`)\r\n const sessionDescription: ISessionDescription = require('../data/session/test-initiator.json')\r\n const config = new JsFixConfig(null, definitions, sessionDescription, AsciiChars.Pipe)\r\n const xmlParser: MsgParser = new FiXmlParser(config, readStream)\r\n xmlParser.on('batch', (msgType: string, v: MsgView) => {\r\n console.log(`received message ${msgType}`)\r\n const o: ILooseObject = v.toObject()\r\n console.log(JSON.stringify(o, null, 4))\r\n const fe = new FixmlEncoder(new ElasticBuffer(), definitions)\r\n fe.encode(o, msgType)\r\n const fixml: string = fe.buffer.toString()\r\n console.log(fixml)\r\n console.log(v.toString())\r\n })\r\n xmlParser.on('msg', (msgType: string, v: MsgView) => {\r\n console.log(`received message ${msgType}`)\r\n const o: ILooseObject = v.toObject()\r\n console.log(JSON.stringify(o, null, 4))\r\n console.log(v.toString())\r\n const fe = new FixmlEncoder(new ElasticBuffer(), definitions)\r\n fe.encode(o, msgType)\r\n const fixml: string = fe.buffer.toString()\r\n console.log(fixml)\r\n })\r\n}\r\n\r\nasync function runTest (): Promise<any> {\r\n return new Promise<any>(async (accept, reject) => {\r\n try {\r\n const res: any = await testGenerator()\r\n accept(res)\r\n } catch (e) {\r\n console.log(e.message)\r\n reject(e)\r\n }\r\n })\r\n}\r\n\r\nfunction streamExample () {\r\n const fs: any = require('fs')\r\n const root: string = path.join(__dirname, '../')\r\n const file: string = path.join(root,'data/examples/FIXML/cme/Claiming Firm Requests Sub-allocation with Allocation Instructions/')\r\n let readStream: ReadStream = fs.createReadStream(`${file}/fix.xml`)\r\n const Writable = require('stream').Writable\r\n const receiver = new Writable({\r\n write: (data: Buffer, _: any, done: Function) => {\r\n console.log('receive ' + data)\r\n done()\r\n }\r\n })\r\n readStream.pipe(receiver).on('finish', () => {\r\n console.log('done')\r\n })\r\n}\r\n\r\nasync function compileDefinitions (definitionPath: string, outputPath: string) {\r\n const definitions = await getDefinitions(definitionPath)\r\n const compilerSettings: ICompilerSettings = require('../data/compiler.json')\r\n compilerSettings.output = outputPath\r\n const msgCompiler: MsgCompiler = new MsgCompiler(definitions, compilerSettings)\r\n await msgCompiler.generate()\r\n const enumCompiler: EnumCompiler = new EnumCompiler(definitions, compilerSettings)\r\n const writeFile = path.join(compilerSettings.output, './enum/all-enum.ts')\r\n await enumCompiler.generate(writeFile)\r\n\r\n const writeFileTypes = path.join(compilerSettings.output, './enum/msg-type.ts')\r\n await enumCompiler.generate(writeFile)\r\n}\r\n\r\nasync function compiler () {\r\n // 'C:/Users/Stephen/dev/js/jsfix/data/fix_repo/fixmlschema_FIX.5.0SP2_EP228'\r\n // await compileDefinitions('data/fix_repo/FIX.4.4/Base', 'C:/Users/Stephen/dev/ts/jsfix/src/types/FIX4.4/repo')\r\n // await compileDefinitions('data/FIX44.xml', 'C:/Users/Stephen/dev/ts/jsfix/src/types/FIX4.4/quickfix')\r\n await compileDefinitions('data/fix_repo/fixmlschema_FIX.5.0SP2_EP228', 'C:/Users/Stephen/dev/ts/jsfix/src/types/FIXML50SP2')\r\n}\r\n\r\nasync function generateMessage () {\r\n await testGenerator()\r\n}\r\n\r\nasync function decode (): Promise<any> {\r\n const definitions: FixDefinitions = await getDefinitions('data/fix_repo/FIX.4.4/Base')\r\n const txt = '8=FIX4.4|9=0001022|35=AE|49=init-comp|56=accept-comp|34=1|57=fix|52=20180909-14:22:09.841|571=Lorem|487=23513|856=1|568=ipsum|828=6|855=23619|830=dolor|150=F|748=17140|912=N|325=N|263=1|881=sit|818=amet,|820=consectetur|880=adipiscing|17=elit.|39=3|527=Nunc|570=N|423=8|55=odio|65=orci,|48=blandit|22=3|460=4|461=vel|167=MPT|762=semper|200=sed,|541=20180909|201=0|224=20180909|225=20180909|227=-8796.1|228=-23.537|255=bibendum|543=cursus|470=lectus.|471=Aenean|472=vel|240=20180909|202=891.7|947=-2928.1|231=5.7237|223=-1894.1|106=diam|348=9|349=6YYz0zu5s|350=8|351=TuH3tTNd|691=magna.|667=Aenean|875=99|876=et|873=20180909|874=20180909|913=viverra|914=leo,|915=20180909|916=20180909|919=0|898=0.5594|38=96682|152=19226|516=9.1251|854=0|235=PREVCLOSE|236=-2833.5|701=20180909|696=20180909|697=-6.095|698=26303|823=non|32=9253|31=2065.4|194=-73.233|30=iaculis|75=20180909|715=20180909|6=5.9279|218=0.0001953|221=neque.|222=Nullam|663=16216|699=arcu|761=lectus,|824=dignissim|63=3|64=20180909|573=0|574=M3|797=Y|852=Y|853=3|10=16|'\r\n const startsAt: Date = new Date()\r\n let i = 0\r\n const repeats = 1\r\n const asciiParser: MsgParser = new AsciiParser(definitions, new StringDuplex(txt.repeat(repeats)).readable, AsciiChars.Pipe)\r\n asciiParser.on('msg', (msgType: string, v: MsgView) => {\r\n ++i\r\n console.log(v.toJson())\r\n if (i === repeats) {\r\n const elapsed: number = new Date().getTime() - startsAt.getTime()\r\n console.log(`elapsed ms ${elapsed} ${(elapsed / repeats) * 1000} micros per msg`)\r\n }\r\n })\r\n}\r\n\r\nasync function http (): Promise<any> {\r\n const sessionDescription: ISessionDescription = require('../data/session/test-http-acceptor.json')\r\n const definitions = await getDefinitions(sessionDescription.application.dictionary)\r\n const logFactory = new JsFixWinstonLogFactory(WinstonLogger.consoleOptions('info'))\r\n const config = new JsFixConfig(null, definitions, sessionDescription, AsciiChars.Pipe, logFactory)\r\n // const acceptor = acceptor(config)\r\n const xml = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n' +\r\n '<FIXML v=\"5.0 SP2\" s=\"20090815\" xv=\"109\" cv=\"CME.0001\">\\n' +\r\n ' <UserReq UserReqID=\"123456\" UserReqTyp=\"1\" Username=\"user123\" Password=\"User!Pass5\">\\n' +\r\n ' <Hdr SID=\"BRKR\" SSub=\"user123\" TID=\"CME\" TSub=\"CPAPI\"/>\\n' +\r\n ' </UserReq>\\n' +\r\n '</FIXML>'\r\n // acceptor.listen()\r\n rp({\r\n method: 'POST',\r\n uri: 'http://localhost:2343/session',\r\n body: {\r\n fixml : xml\r\n },\r\n json: true // Automatically stringifies the body to JSON\r\n }).then(function (parsedBody) {\r\n console.log(parsedBody)\r\n // POST succeeded...\r\n })\r\n .catch((err: Error) => {\r\n console.log(err)\r\n // POST failed...\r\n })\r\n}\r\n\r\n// http()\r\n// decode()\r\n// generateMessage()\r\n// compiler()\r\n// stronglyTyped()\r\n// streamExample()\r\n// testEncodeDecode()\r\nrepository()\r\n// testEncodeDecode()\r\n// runTest();\r\n// testSocket()\r\n// testRead();\r\n"]}
|
|
@@ -15,14 +15,21 @@ class FieldSetParser extends node_parser_1.NodeParser {
|
|
|
15
15
|
case 'header':
|
|
16
16
|
case 'trailer': {
|
|
17
17
|
const componentName = node.attributes.name || node.name;
|
|
18
|
+
let fullName = componentName;
|
|
19
|
+
if (componentName === 'header') {
|
|
20
|
+
fullName = 'StandardHeader';
|
|
21
|
+
}
|
|
22
|
+
else if (componentName === 'trailer') {
|
|
23
|
+
fullName = 'StandardTrailer';
|
|
24
|
+
}
|
|
18
25
|
if (!node.isSelfClosing) {
|
|
19
|
-
const set = new definition_1.ComponentFieldDefinition(
|
|
20
|
-
const context = new parse_context_1.ParseContext(
|
|
26
|
+
const set = new definition_1.ComponentFieldDefinition(fullName, componentName, null, null);
|
|
27
|
+
const context = new parse_context_1.ParseContext(fullName, true, set);
|
|
21
28
|
this.parseContexts.push(context);
|
|
22
29
|
}
|
|
23
30
|
else {
|
|
24
|
-
this.addComponentField(
|
|
25
|
-
const context = new parse_context_1.ParseContext(
|
|
31
|
+
this.addComponentField(fullName, node);
|
|
32
|
+
const context = new parse_context_1.ParseContext(fullName, false, null);
|
|
26
33
|
this.parseContexts.push(context);
|
|
27
34
|
}
|
|
28
35
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-set-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/field-set-parser.ts"],"names":[],"mappings":";;;AAAA,iDAA2D;AAE3D,+CAA0C;AAC1C,mDAA8C;AAG9C,MAAa,cAAe,SAAQ,wBAAU;IAC5C,YAA6B,MAA6B;QACxD,KAAK,CAAC,MAAM,CAAC,CAAA;QADc,WAAM,GAAN,MAAM,CAAuB;IAE1D,CAAC;IAEM,IAAI,CAAE,IAAY,EAAE,IAAc;QACvC,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,WAAW,CAAC;YACjB,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS,CAAC,CAAC;gBACd,MAAM,aAAa,GAAW,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAA;gBAC/D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACvB,MAAM,GAAG,GAA6B,IAAI,qCAAwB,CAAC,
|
|
1
|
+
{"version":3,"file":"field-set-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/field-set-parser.ts"],"names":[],"mappings":";;;AAAA,iDAA2D;AAE3D,+CAA0C;AAC1C,mDAA8C;AAG9C,MAAa,cAAe,SAAQ,wBAAU;IAC5C,YAA6B,MAA6B;QACxD,KAAK,CAAC,MAAM,CAAC,CAAA;QADc,WAAM,GAAN,MAAM,CAAuB;IAE1D,CAAC;IAEM,IAAI,CAAE,IAAY,EAAE,IAAc;QACvC,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,WAAW,CAAC;YACjB,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS,CAAC,CAAC;gBACd,MAAM,aAAa,GAAW,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAA;gBAC/D,IAAI,QAAQ,GAAG,aAAa,CAAA;gBAC5B,IAAI,aAAa,KAAK,QAAQ,EAAE;oBAC9B,QAAQ,GAAG,gBAAgB,CAAA;iBAC5B;qBAAM,IAAI,aAAa,KAAK,SAAS,EAAE;oBACtC,QAAQ,GAAG,iBAAiB,CAAA;iBAC7B;gBAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACvB,MAAM,GAAG,GAA6B,IAAI,qCAAwB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;oBACvG,MAAM,OAAO,GAAiB,IAAI,4BAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;oBACnE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;iBACjC;qBAAM;oBACL,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;oBACtC,MAAM,OAAO,GAAiB,IAAI,4BAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;oBACrE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;iBACjC;gBACD,MAAK;aACN;YAED,KAAK,OAAO,CAAC,CAAC;gBACZ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBACpB,MAAK;aACN;YAED,KAAK,OAAO,CAAC,CAAC;gBACZ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;gBAC/B,MAAK;aACN;SACF;IACH,CAAC;IAEM,KAAK,CAAE,IAAY,EAAE,IAAY;QACtC,QAAQ,IAAI,EAAE;YACZ,KAAK,OAAO,CAAC,CAAC;gBACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;gBACxB,MAAK;aACN;YAED,KAAK,WAAW,CAAC;YACjB,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS,CAAC,CAAC;gBACd,MAAM,MAAM,GAAiB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAA;gBACrD,IAAI,MAAM,IAAI,IAAI,EAAE;oBAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,6BAA6B,CAAC,CAAA;iBACtE;gBACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;oBACpB,OAAM;iBACP;gBACD,MAAM,WAAW,GAA6B,MAAM,CAAC,WAAW,EAAE,CAAA;gBAClE,IAAI,WAAW,IAAI,IAAI,EAAE;oBACvB,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAA;iBACnD;qBAAM;oBACL,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,CAAC,IAAI,GAAG,CAAC,CAAA;iBAC1E;gBAED,MAAK;aACN;SACF;IACH,CAAC;CACF;AAtED,wCAsEC","sourcesContent":["import { ComponentFieldDefinition } from '../../definition'\r\nimport { ISaxNode } from '../../dict-primitive'\r\nimport { NodeParser } from './node-parser'\r\nimport { ParseContext } from './parse-context'\r\nimport { QuickFixXmlFileParser } from './quick-fix-xml-file-parser'\r\n\r\nexport class FieldSetParser extends NodeParser {\r\n constructor (public readonly parser: QuickFixXmlFileParser) {\r\n super(parser)\r\n }\r\n\r\n public open (line: number, node: ISaxNode): void {\r\n switch (node.name) {\r\n case 'component':\r\n case 'header':\r\n case 'trailer': {\r\n const componentName: string = node.attributes.name || node.name\r\n let fullName = componentName\r\n if (componentName === 'header') {\r\n fullName = 'StandardHeader'\r\n } else if (componentName === 'trailer') {\r\n fullName = 'StandardTrailer'\r\n }\r\n\r\n if (!node.isSelfClosing) {\r\n const set: ComponentFieldDefinition = new ComponentFieldDefinition(fullName, componentName, null, null)\r\n const context: ParseContext = new ParseContext(fullName, true, set)\r\n this.parseContexts.push(context)\r\n } else {\r\n this.addComponentField(fullName, node)\r\n const context: ParseContext = new ParseContext(fullName, false, null)\r\n this.parseContexts.push(context)\r\n }\r\n break\r\n }\r\n\r\n case 'field': {\r\n this.addSimple(node)\r\n break\r\n }\r\n\r\n case 'group': {\r\n this.beginGroupDefinition(node)\r\n break\r\n }\r\n }\r\n }\r\n\r\n public close (line: number, name: string): void {\r\n switch (name) {\r\n case 'group': {\r\n this.addGroupField(name)\r\n break\r\n }\r\n\r\n case 'component':\r\n case 'header':\r\n case 'trailer': {\r\n const latest: ParseContext = this.parseContexts.pop()\r\n if (latest == null) {\r\n throw new Error(`component field ${name} closes yet does not exist.`)\r\n }\r\n if (!latest.defining) {\r\n return\r\n }\r\n const asComponent: ComponentFieldDefinition = latest.asComponent()\r\n if (asComponent != null) {\r\n this.definitions.addComponentFieldDef(asComponent)\r\n } else {\r\n throw new Error(`latest not instance of component field ${latest.name} `)\r\n }\r\n\r\n break\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -4,6 +4,7 @@ exports.MessageParser = void 0;
|
|
|
4
4
|
const definition_1 = require("../../definition");
|
|
5
5
|
const node_parser_1 = require("./node-parser");
|
|
6
6
|
const parse_context_1 = require("./parse-context");
|
|
7
|
+
const contained_1 = require("../../contained");
|
|
7
8
|
class MessageParser extends node_parser_1.NodeParser {
|
|
8
9
|
constructor(parser) {
|
|
9
10
|
super(parser);
|
|
@@ -15,6 +16,9 @@ class MessageParser extends node_parser_1.NodeParser {
|
|
|
15
16
|
const att = node.attributes;
|
|
16
17
|
const msg = new definition_1.MessageDefinition(att.name, att.name, att.msgtype, att.msgcat, null);
|
|
17
18
|
const context = new parse_context_1.ParseContext(msg.name, true, msg);
|
|
19
|
+
const hdr = this.definitions.component.get('StandardHeader');
|
|
20
|
+
const contained = new contained_1.ContainedComponentField(hdr, msg.fields.length, true);
|
|
21
|
+
msg.add(contained);
|
|
18
22
|
this.parseContexts.push(context);
|
|
19
23
|
break;
|
|
20
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/message-parser.ts"],"names":[],"mappings":";;;AACA,iDAAoD;AACpD,+CAA0C;AAC1C,mDAA8C;
|
|
1
|
+
{"version":3,"file":"message-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/message-parser.ts"],"names":[],"mappings":";;;AACA,iDAAoD;AACpD,+CAA0C;AAC1C,mDAA8C;AAE9C,+CAAyD;AAEzD,MAAa,aAAc,SAAQ,wBAAU;IAE3C,YAA6B,MAA6B;QACxD,KAAK,CAAC,MAAM,CAAC,CAAA;QADc,WAAM,GAAN,MAAM,CAAuB;IAE1D,CAAC;IAEM,IAAI,CAAE,IAAY,EAAE,IAAc;QACvC,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,SAAS,CAAC,CAAC;gBACd,MAAM,GAAG,GAAQ,IAAI,CAAC,UAAU,CAAA;gBAChC,MAAM,GAAG,GAAsB,IAAI,8BAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;gBACvG,MAAM,OAAO,GAAiB,IAAI,4BAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;gBACnE,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;gBAC5D,MAAM,SAAS,GAAG,IAAI,mCAAuB,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;gBAC3E,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAChC,MAAK;aACN;YAED,KAAK,OAAO,CAAC,CAAC;gBACZ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBACpB,MAAK;aACN;YAED,KAAK,WAAW,CAAC,CAAC;gBAChB,IAAI,IAAI,CAAC,aAAa,EAAE;oBACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;iBACnD;gBACD,MAAK;aACN;YAED,KAAK,OAAO,CAAC,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACvB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;iBAChC;gBACD,MAAK;aACN;SACF;IACH,CAAC;IAEM,KAAK,CAAE,IAAY,EAAE,IAAY;QACtC,QAAQ,IAAI,EAAE;YACZ,KAAK,SAAS,CAAC,CAAC;gBACd,MAAM,MAAM,GAAiB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAA;gBACrD,MAAM,OAAO,GAAsB,MAAM,CAAC,SAAS,EAAE,CAAA;gBACrD,IAAI,OAAO,IAAI,IAAI,EAAE;oBACnB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;iBACrC;gBACD,MAAK;aACN;YAED,KAAK,OAAO,CAAC,CAAC;gBACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;gBACxB,MAAK;aACN;SACF;IACH,CAAC;CACF;AAzDD,sCAyDC","sourcesContent":["import { ISaxNode } from '../../dict-primitive'\r\nimport { MessageDefinition } from '../../definition'\r\nimport { NodeParser } from './node-parser'\r\nimport { ParseContext } from './parse-context'\r\nimport { QuickFixXmlFileParser } from './quick-fix-xml-file-parser'\r\nimport { ContainedComponentField } from '../../contained'\r\n\r\nexport class MessageParser extends NodeParser {\r\n\r\n constructor (public readonly parser: QuickFixXmlFileParser) {\r\n super(parser)\r\n }\r\n\r\n public open (line: number, node: ISaxNode): void {\r\n switch (node.name) {\r\n case 'message': {\r\n const att: any = node.attributes\r\n const msg: MessageDefinition = new MessageDefinition(att.name, att.name, att.msgtype, att.msgcat, null)\r\n const context: ParseContext = new ParseContext(msg.name, true, msg)\r\n const hdr = this.definitions.component.get('StandardHeader')\r\n const contained = new ContainedComponentField(hdr, msg.fields.length, true)\r\n msg.add(contained)\r\n this.parseContexts.push(context)\r\n break\r\n }\r\n\r\n case 'field': {\r\n this.addSimple(node)\r\n break\r\n }\r\n\r\n case 'component': {\r\n if (node.isSelfClosing) {\r\n this.addComponentField(node.attributes.name, node)\r\n }\r\n break\r\n }\r\n\r\n case 'group': {\r\n if (!node.isSelfClosing) {\r\n this.beginGroupDefinition(node)\r\n }\r\n break\r\n }\r\n }\r\n }\r\n\r\n public close (line: number, name: string): void {\r\n switch (name) {\r\n case 'message': {\r\n const parent: ParseContext = this.parseContexts.pop()\r\n const message: MessageDefinition = parent.asMessage()\r\n if (message != null) {\r\n this.definitions.addMessage(message)\r\n }\r\n break\r\n }\r\n\r\n case 'group': {\r\n this.addGroupField(name)\r\n break\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -18,6 +18,7 @@ export declare class QuickFixXmlFileParser extends FixParser {
|
|
|
18
18
|
private readonly singlePass;
|
|
19
19
|
constructor(xmlPath: string, getLogger: GetJsFixLogger);
|
|
20
20
|
private static subscribe;
|
|
21
|
+
private encloseMessages;
|
|
21
22
|
parse(): Promise<FixDefinitions>;
|
|
22
23
|
private onePass;
|
|
23
24
|
}
|
|
@@ -18,6 +18,7 @@ const message_parser_1 = require("./message-parser");
|
|
|
18
18
|
const fix_parser_1 = require("../../fix-parser");
|
|
19
19
|
const fix_versions_1 = require("../../fix-versions");
|
|
20
20
|
const util_1 = require("util");
|
|
21
|
+
const contained_1 = require("../../contained");
|
|
21
22
|
var ParseState;
|
|
22
23
|
(function (ParseState) {
|
|
23
24
|
ParseState[ParseState["Begin"] = 1] = "Begin";
|
|
@@ -170,6 +171,19 @@ class QuickFixXmlFileParser extends fix_parser_1.FixParser {
|
|
|
170
171
|
}
|
|
171
172
|
});
|
|
172
173
|
}
|
|
174
|
+
encloseMessages() {
|
|
175
|
+
const messages = this.definitions.message;
|
|
176
|
+
const keys = messages.keys();
|
|
177
|
+
const trailerName = 'StandardTrailer';
|
|
178
|
+
keys.forEach(k => {
|
|
179
|
+
const message = messages.get(k);
|
|
180
|
+
const trailer = this.definitions.component.get(trailerName);
|
|
181
|
+
if (trailer && !message.components.containsKey(trailerName)) {
|
|
182
|
+
const contained = new contained_1.ContainedComponentField(trailer, message.fields.length, true);
|
|
183
|
+
message.add(contained);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
}
|
|
173
187
|
parse() {
|
|
174
188
|
return new Promise((accept, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
175
189
|
try {
|
|
@@ -178,6 +192,7 @@ class QuickFixXmlFileParser extends fix_parser_1.FixParser {
|
|
|
178
192
|
yield this.onePass();
|
|
179
193
|
yield this.onePass();
|
|
180
194
|
yield this.onePass();
|
|
195
|
+
this.encloseMessages();
|
|
181
196
|
accept(this.definitions);
|
|
182
197
|
}
|
|
183
198
|
catch (e) {
|