jspurefix 1.3.0 → 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.
Files changed (182) hide show
  1. package/README.md +5 -2
  2. package/data/session/genkey.ps1 +179 -0
  3. package/dist/buffer/ascii/ascii-encoder.d.ts +1 -1
  4. package/dist/buffer/ascii/ascii-encoder.js +42 -30
  5. package/dist/buffer/ascii/ascii-encoder.js.map +1 -1
  6. package/dist/buffer/ascii/ascii-view.d.ts +2 -2
  7. package/dist/buffer/ascii/ascii-view.js.map +1 -1
  8. package/dist/buffer/ascii/time-formatter.js.map +1 -1
  9. package/dist/buffer/elastic-buffer.js +1 -1
  10. package/dist/buffer/elastic-buffer.js.map +1 -1
  11. package/dist/buffer/encode-proxy.js.map +1 -1
  12. package/dist/buffer/fixml/fixml-encoder.js +1 -1
  13. package/dist/buffer/fixml/fixml-encoder.js.map +1 -1
  14. package/dist/buffer/fixml/fixml-view.d.ts +2 -0
  15. package/dist/buffer/fixml/fixml-view.js +3 -0
  16. package/dist/buffer/fixml/fixml-view.js.map +1 -1
  17. package/dist/buffer/msg-view.d.ts +2 -0
  18. package/dist/buffer/msg-view.js +2 -2
  19. package/dist/buffer/msg-view.js.map +1 -1
  20. package/dist/dict-parser.js +9 -9
  21. package/dist/dict-parser.js.map +1 -1
  22. package/dist/dictionary/compiler/msg-compiler.js +2 -2
  23. package/dist/dictionary/compiler/msg-compiler.js.map +1 -1
  24. package/dist/dictionary/parser/fix-repository/repository-xml-parser.js +1 -1
  25. package/dist/dictionary/parser/fix-repository/repository-xml-parser.js.map +1 -1
  26. package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js +1 -1
  27. package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js.map +1 -1
  28. package/dist/jsfix-cmd.js +3 -3
  29. package/dist/jsfix-cmd.js.map +1 -1
  30. package/dist/sample/http/oms/app.js +2 -2
  31. package/dist/sample/http/oms/app.js.map +1 -1
  32. package/dist/sample/launcher.js +2 -2
  33. package/dist/sample/launcher.js.map +1 -1
  34. package/dist/sample/tcp/qf-md/app.js +2 -2
  35. package/dist/sample/tcp/qf-md/app.js.map +1 -1
  36. package/dist/sample/tcp/recovering-skeleton/respawn-2.d.ts +2 -0
  37. package/dist/sample/tcp/recovering-skeleton/respawn-2.js +3 -0
  38. package/dist/sample/tcp/recovering-skeleton/respawn-2.js.map +1 -0
  39. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js +1 -1
  40. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js.map +1 -1
  41. package/dist/sample/tcp/skeleton/app.js +2 -2
  42. package/dist/sample/tcp/skeleton/app.js.map +1 -1
  43. package/dist/sample/tcp/skeleton/skeleton-session.d.ts +5 -1
  44. package/dist/sample/tcp/skeleton/skeleton-session.js +21 -2
  45. package/dist/sample/tcp/skeleton/skeleton-session.js.map +1 -1
  46. package/dist/sample/tcp/tls-trade-capture/app.js +2 -2
  47. package/dist/sample/tcp/tls-trade-capture/app.js.map +1 -1
  48. package/dist/sample/tcp/trade-capture/app.js +2 -2
  49. package/dist/sample/tcp/trade-capture/app.js.map +1 -1
  50. package/dist/sample/tcp/trade-capture/trade-capture-client.d.ts +1 -0
  51. package/dist/sample/tcp/trade-capture/trade-capture-client.js +7 -3
  52. package/dist/sample/tcp/trade-capture/trade-capture-client.js.map +1 -1
  53. package/dist/store/fix-msg-ascii-store-recovery.d.ts +12 -0
  54. package/dist/store/fix-msg-ascii-store-recovery.js +60 -0
  55. package/dist/store/fix-msg-ascii-store-recovery.js.map +1 -0
  56. package/dist/store/fix-msg-ascii-store-replay.d.ts +13 -0
  57. package/dist/store/fix-msg-ascii-store-replay.js +60 -0
  58. package/dist/store/fix-msg-ascii-store-replay.js.map +1 -0
  59. package/dist/store/fix-msg-ascii-store-resend.js +3 -2
  60. package/dist/store/fix-msg-ascii-store-resend.js.map +1 -1
  61. package/dist/store/fix-msg-store-record.js.map +1 -1
  62. package/dist/store/fix-replay-record.d.ts +12 -0
  63. package/dist/store/fix-replay-record.js +12 -0
  64. package/dist/store/fix-replay-record.js.map +1 -0
  65. package/dist/store/fix-resend-record.d.ts +12 -0
  66. package/dist/store/fix-resend-record.js +12 -0
  67. package/dist/store/fix-resend-record.js.map +1 -0
  68. package/dist/store/replay-record.d.ts +6 -0
  69. package/dist/store/replay-record.js +3 -0
  70. package/dist/store/replay-record.js.map +1 -0
  71. package/dist/store/store-replay-record.d.ts +12 -0
  72. package/dist/store/store-replay-record.js +12 -0
  73. package/dist/store/store-replay-record.js.map +1 -0
  74. package/dist/tcp/tls-options.d.ts +5 -0
  75. package/dist/tcp/tls-options.js +45 -0
  76. package/dist/tcp/tls-options.js.map +1 -0
  77. package/dist/test/ascii-encode.test.d.ts +1 -0
  78. package/dist/test/ascii-encode.test.js +416 -0
  79. package/dist/test/ascii-encode.test.js.map +1 -0
  80. package/dist/test/ascii-encoder.test.js +2 -2
  81. package/dist/test/ascii-encoder.test.js.map +1 -1
  82. package/dist/test/ascii-parser.test.js +9 -7
  83. package/dist/test/ascii-parser.test.js.map +1 -1
  84. package/dist/test/ascii-segment.test.js +7 -6
  85. package/dist/test/ascii-segment.test.js.map +1 -1
  86. package/dist/test/ascii-store-recovery.test.d.ts +1 -0
  87. package/dist/test/ascii-store-recovery.test.js +50 -0
  88. package/dist/test/ascii-store-recovery.test.js.map +1 -0
  89. package/dist/test/ascii-store-replay.test.js +2 -2
  90. package/dist/test/ascii-store-replay.test.js.map +1 -1
  91. package/dist/test/ascii-tag-pos.test.js +2 -2
  92. package/dist/test/ascii-tag-pos.test.js.map +1 -1
  93. package/dist/test/encode-proxy.test.js +1 -1
  94. package/dist/test/encode-proxy.test.js.map +1 -1
  95. package/dist/test/execution-report.test.js +2 -2
  96. package/dist/test/execution-report.test.js.map +1 -1
  97. package/dist/test/fix-log-replay.test.js +2 -2
  98. package/dist/test/fix-log-replay.test.js.map +1 -1
  99. package/dist/test/fix-repo-dict.test.js +1 -1
  100. package/dist/test/fix-repo-dict.test.js.map +1 -1
  101. package/dist/test/logon.test.js +2 -2
  102. package/dist/test/logon.test.js.map +1 -1
  103. package/dist/test/memory-store.test.js +2 -2
  104. package/dist/test/memory-store.test.js.map +1 -1
  105. package/dist/test/qf-full-msg.test.js +14 -13
  106. package/dist/test/qf-full-msg.test.js.map +1 -1
  107. package/dist/test/repo-full-ascii-msg.test.js +10 -9
  108. package/dist/test/repo-full-ascii-msg.test.js.map +1 -1
  109. package/dist/test/repo-full-fixml-msg.test.js +15 -15
  110. package/dist/test/repo-full-fixml-msg.test.js.map +1 -1
  111. package/dist/test/session.test.js +262 -143
  112. package/dist/test/session.test.js.map +1 -1
  113. package/dist/test/to-views.js +1 -1
  114. package/dist/test/to-views.js.map +1 -1
  115. package/dist/test/view-decode.test.js +2 -2
  116. package/dist/test/view-decode.test.js.map +1 -1
  117. package/dist/transport/ascii/ascii-msg-transmitter.js +6 -3
  118. package/dist/transport/ascii/ascii-msg-transmitter.js.map +1 -1
  119. package/dist/transport/ascii/ascii-session.d.ts +8 -0
  120. package/dist/transport/ascii/ascii-session.js +67 -19
  121. package/dist/transport/ascii/ascii-session.js.map +1 -1
  122. package/dist/transport/duplex/http-duplex.js +2 -2
  123. package/dist/transport/duplex/http-duplex.js.map +1 -1
  124. package/dist/transport/fix-session-state.js +4 -1
  125. package/dist/transport/fix-session-state.js.map +1 -1
  126. package/dist/transport/fix-session.d.ts +6 -0
  127. package/dist/transport/fix-session.js +91 -38
  128. package/dist/transport/fix-session.js.map +1 -1
  129. package/dist/transport/http/http-acceptor.js +8 -7
  130. package/dist/transport/http/http-acceptor.js.map +1 -1
  131. package/dist/transport/make-config.js +1 -1
  132. package/dist/transport/make-config.js.map +1 -1
  133. package/dist/transport/session-msg-factory.d.ts +24 -2
  134. package/dist/transport/session-msg-factory.js +143 -3
  135. package/dist/transport/session-msg-factory.js.map +1 -1
  136. package/dist/transport/tcp/recovering-initiator.d.ts +17 -0
  137. package/dist/transport/tcp/recovering-initiator.js +30 -0
  138. package/dist/transport/tcp/recovering-initiator.js.map +1 -0
  139. package/dist/transport/tcp/recovering_initiator.d.ts +12 -0
  140. package/dist/transport/tcp/recovering_initiator.js +25 -0
  141. package/dist/transport/tcp/recovering_initiator.js.map +1 -0
  142. package/dist/transport/tcp/resilient-initiator.d.ts +12 -0
  143. package/dist/transport/tcp/resilient-initiator.js +41 -0
  144. package/dist/transport/tcp/resilient-initiator.js.map +1 -0
  145. package/dist/transport/tcp/tcp-acceptor.d.ts +7 -0
  146. package/dist/transport/tcp/tcp-acceptor.js +57 -38
  147. package/dist/transport/tcp/tcp-acceptor.js.map +1 -1
  148. package/dist/transport/tcp/tcp-initiator.d.ts +2 -0
  149. package/dist/transport/tcp/tcp-initiator.js +59 -32
  150. package/dist/transport/tcp/tcp-initiator.js.map +1 -1
  151. package/dist/types/FIX4.4/quickfix/set/header.d.ts +31 -0
  152. package/dist/types/FIX4.4/quickfix/set/header.js +3 -0
  153. package/dist/types/FIX4.4/quickfix/set/header.js.map +1 -0
  154. package/dist/types/FIX4.4/quickfix/set/trailer.d.ts +6 -0
  155. package/dist/types/FIX4.4/quickfix/set/trailer.js +3 -0
  156. package/dist/types/FIX4.4/quickfix/set/trailer.js.map +1 -0
  157. package/dist/util/buffer-helper.js +1 -1
  158. package/dist/util/buffer-helper.js.map +1 -1
  159. package/dist/util/json-helper.js +2 -2
  160. package/dist/util/json-helper.js.map +1 -1
  161. package/dist/util/message-generator.js +1 -1
  162. package/dist/util/message-generator.js.map +1 -1
  163. package/package.json +16 -15
  164. package/script/genkey.ps1 +179 -179
  165. package/src/buffer/ascii/ascii-encoder.ts +71 -33
  166. package/src/buffer/ascii/ascii-view.ts +2 -2
  167. package/src/buffer/ascii/time-formatter.ts +2 -2
  168. package/src/buffer/encode-proxy.ts +2 -2
  169. package/src/buffer/fixml/fixml-view.ts +5 -0
  170. package/src/buffer/msg-view.ts +3 -0
  171. package/src/sample/tcp/skeleton/skeleton-session.ts +24 -2
  172. package/src/sample/tcp/trade-capture/trade-capture-client.ts +8 -3
  173. package/src/store/fix-msg-ascii-store-resend.ts +3 -2
  174. package/src/store/fix-msg-store-record.ts +1 -0
  175. package/src/transport/ascii/ascii-msg-transmitter.ts +6 -3
  176. package/src/transport/ascii/ascii-session.ts +75 -19
  177. package/src/transport/duplex/http-duplex.ts +2 -2
  178. package/src/transport/fix-session-state.ts +4 -1
  179. package/src/transport/fix-session.ts +98 -37
  180. package/src/transport/http/http-acceptor.ts +7 -6
  181. package/src/transport/tcp/tcp-acceptor.ts +59 -35
  182. package/src/transport/tcp/tcp-initiator.ts +63 -38
@@ -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"]}
@@ -158,7 +158,7 @@ class MsgCompiler {
158
158
  }
159
159
  fields(compilerType) {
160
160
  this.attributes(compilerType);
161
- (0, fields_dispatch_1.dispatchFields)(compilerType.set.fields, {
161
+ fields_dispatch_1.dispatchFields(compilerType.set.fields, {
162
162
  group: (g) => this.fieldGroup(g, compilerType),
163
163
  simple: (simple) => this.fieldSimple(simple),
164
164
  component: (c) => this.fieldComponent(c, compilerType)
@@ -180,7 +180,7 @@ class MsgCompiler {
180
180
  imports(compilerType) {
181
181
  const isMsg = compilerType.set.type === dict_primitive_1.ContainedSetType.Msg;
182
182
  const snippets = this.snippets;
183
- const imports = (0, set_reduce_1.reduceSet)(compilerType.set, {
183
+ const imports = set_reduce_1.reduceSet(compilerType.set, {
184
184
  component: (a, c) => {
185
185
  a.push(`${snippets.import(compilerType.getExtended(c), isMsg, 0)}`);
186
186
  return a;
@@ -1 +1 @@
1
- {"version":3,"file":"msg-compiler.js","sourceRoot":"","sources":["../../../src/dictionary/compiler/msg-compiler.ts"],"names":[],"mappings":"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","sourcesContent":["import { ElasticBuffer, AsciiChars, Tags } from '../../buffer'\r\nimport { ICompilerSettings } from './compiler-settings'\r\nimport { FixDefinitions } from '../definition'\r\nimport { ContainedGroupField, ContainedSimpleField, ContainedComponentField } from '../contained'\r\nimport { StandardSnippet } from './standard-snippet'\r\nimport { ContainedSetType } from '../dict-primitive'\r\nimport { CompilerType } from './compiler-type'\r\nimport { Dictionary } from '../../collections'\r\n\r\nimport * as fs from 'fs'\r\nimport * as Util from 'util'\r\nimport * as Path from 'path'\r\nimport { dispatchFields } from '../fields-dispatch'\r\nimport { reduceSet } from '../set-reduce'\r\n\r\nexport class MsgCompiler {\r\n readonly queue: CompilerType[] = []\r\n readonly snippets: StandardSnippet\r\n readonly buffer: ElasticBuffer = new ElasticBuffer()\r\n readonly completed: Dictionary<CompilerType>\r\n\r\n constructor (public readonly definitions: FixDefinitions, public readonly settings: ICompilerSettings) {\r\n this.completed = new Dictionary<CompilerType>()\r\n this.snippets = new StandardSnippet(this.settings)\r\n }\r\n\r\n public async generate () {\r\n const types: string[] = this.settings.types || this.definitions.message.keys()\r\n return this.createTypes(types)\r\n }\r\n\r\n private getFileName (compilerType: CompilerType): string {\r\n const settings = this.settings\r\n const fileName = `${compilerType.snaked}.ts`\r\n return Path.join(settings.output, fileName)\r\n }\r\n\r\n private async createTypes (types: string[]) {\r\n const definitions = this.definitions\r\n types.forEach((type: string) => {\r\n const definition = definitions.containedSet(type)\r\n if (!definition) {\r\n throw new Error(`no type ${type} defined`)\r\n }\r\n const ct = new CompilerType(this.definitions, definition, definition.name)\r\n this.enqueue(ct)\r\n })\r\n await this.work()\r\n await this.index()\r\n }\r\n\r\n private async work () {\r\n const q = this.queue\r\n const writeFile = Util.promisify(fs.writeFile)\r\n while (q.length > 0) {\r\n const compilerType: CompilerType = q.pop()\r\n const api: string = this.generateMessages(compilerType)\r\n const fullName = this.getFileName(compilerType)\r\n await writeFile(fullName, api, {\r\n encoding: 'utf8'}\r\n )\r\n }\r\n }\r\n\r\n private async index () {\r\n const writeFile = Util.promisify(fs.writeFile)\r\n const settings = this.settings\r\n const fileName = 'index.ts'\r\n const done = this.completed.values()\r\n const exports: string[] = done.reduce((prev: string[], current: CompilerType) => {\r\n prev.push(`export * from '${current.snaked}'`)\r\n return prev\r\n }, [`export * from './enum'`] as string[])\r\n const newLine = require('os').EOL\r\n exports.sort()\r\n exports.push('')\r\n const api: string = exports.join(newLine)\r\n const fullName: string = Path.join(settings.output, fileName)\r\n await writeFile(fullName, api, {\r\n encoding: 'utf8'}\r\n )\r\n }\r\n\r\n private generateMessages (compilerType: CompilerType): string {\r\n const definition = compilerType.set\r\n const buffer: ElasticBuffer = this.buffer\r\n buffer.reset()\r\n const snippets = this.snippets\r\n const newLine = require('os').EOL\r\n // a single class with dependencies included\r\n let ptr: number = this.imports(compilerType)\r\n if (ptr > 0) {\r\n buffer.writeString(newLine)\r\n buffer.writeString(newLine)\r\n }\r\n if (this.settings.comment && definition.description) {\r\n const comment = snippets.commentBox(definition.description)\r\n buffer.writeString(snippets.startBlockComment(0))\r\n buffer.writeString(newLine)\r\n buffer.writeString(comment)\r\n buffer.writeString(newLine)\r\n buffer.writeString(snippets.endBlockComment(0))\r\n buffer.writeString(newLine)\r\n }\r\n buffer.writeString(snippets.interface(compilerType.qualifiedName, 0))\r\n buffer.writeChar(AsciiChars.Space)\r\n buffer.writeString(snippets.startBlock(0))\r\n buffer.writeString(newLine)\r\n this.fields(compilerType)\r\n buffer.writeString(snippets.endBlock(0))\r\n buffer.writeString(newLine)\r\n return buffer.toString()\r\n }\r\n\r\n // only generate once\r\n private enqueue (ct: CompilerType): void {\r\n const completed = this.completed\r\n const fullName = this.getFileName(ct)\r\n if (completed.get(fullName)) {\r\n return\r\n }\r\n this.queue.push(ct)\r\n completed.addUpdate(fullName, ct)\r\n }\r\n\r\n private fieldSimple (simple: ContainedSimpleField): void {\r\n const snippets = this.snippets\r\n const settings = this.settings\r\n const buffer = this.buffer\r\n const newLine = require('os').EOL\r\n const len = buffer.writeString(snippets.simple(simple.name, Tags.toJSType(simple), simple.required, 1))\r\n if (settings.tags) {\r\n buffer.writeString(snippets.commentLine(`${simple.definition.tag}`, 50 - len))\r\n }\r\n buffer.writeString(newLine)\r\n }\r\n\r\n private fieldGroup (groupField: ContainedGroupField, compilerType: CompilerType): void {\r\n const newLine = require('os').EOL\r\n const buffer = this.buffer\r\n const snippets = this.snippets\r\n // for a group its field name is as defined in type, its type is qualified to avoid collisions\r\n const extended: string = compilerType.getExtended(groupField)\r\n buffer.writeString(snippets.group(compilerType.getFieldGroupName(groupField), extended, groupField.required, 1))\r\n this.enqueue(new CompilerType(this.definitions, groupField.definition, extended))\r\n buffer.writeString(newLine)\r\n }\r\n\r\n private fieldComponent (componentField: ContainedComponentField, compilerType: CompilerType): void {\r\n const newLine = require('os').EOL\r\n const buffer = this.buffer\r\n const snippets = this.snippets\r\n const extended: string = compilerType.getExtended(componentField)\r\n buffer.writeString(snippets.component(extended, componentField.required, 1))\r\n this.enqueue(new CompilerType(this.definitions, componentField.definition, extended))\r\n buffer.writeString(newLine)\r\n }\r\n\r\n private fields (compilerType: CompilerType): void {\r\n this.attributes(compilerType)\r\n dispatchFields(compilerType.set.fields, {\r\n group: (g: ContainedGroupField) => this.fieldGroup(g, compilerType),\r\n simple: (simple: ContainedSimpleField) => this.fieldSimple(simple),\r\n component: (c: ContainedComponentField) => this.fieldComponent(c, compilerType)\r\n })\r\n }\r\n\r\n private attributes (compilerType: CompilerType): void {\r\n const settings = this.settings\r\n const newLine = require('os').EOL\r\n const snippets = this.snippets\r\n const buffer = this.buffer\r\n compilerType.set.localAttribute.forEach((simple: ContainedSimpleField) => {\r\n const len = buffer.writeString(snippets.simple(simple.definition.name, Tags.toJSType(simple), simple.required, 1))\r\n if (settings.tags) {\r\n buffer.writeString(snippets.commentLine(`${simple.definition.tag}`, 50 - len))\r\n }\r\n buffer.writeString(newLine)\r\n })\r\n }\r\n\r\n private imports (compilerType: CompilerType): number {\r\n const isMsg = compilerType.set.type === ContainedSetType.Msg\r\n const snippets = this.snippets\r\n const imports: string[] = reduceSet<string[]>(compilerType.set, {\r\n component: (a: string[], c: ContainedComponentField) => {\r\n a.push(`${snippets.import(compilerType.getExtended(c), isMsg, 0)}`)\r\n return a\r\n },\r\n group: (a: string[], g: ContainedGroupField) => {\r\n a.push(`${snippets.import(compilerType.getExtended(g), isMsg, 0)}`)\r\n return a\r\n }\r\n }, [])\r\n\r\n return this.buffer.writeString(imports.join(require('os').EOL))\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"msg-compiler.js","sourceRoot":"","sources":["../../../src/dictionary/compiler/msg-compiler.ts"],"names":[],"mappings":"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","sourcesContent":["import { ElasticBuffer, AsciiChars, Tags } from '../../buffer'\r\nimport { ICompilerSettings } from './compiler-settings'\r\nimport { FixDefinitions } from '../definition'\r\nimport { ContainedGroupField, ContainedSimpleField, ContainedComponentField } from '../contained'\r\nimport { StandardSnippet } from './standard-snippet'\r\nimport { ContainedSetType } from '../dict-primitive'\r\nimport { CompilerType } from './compiler-type'\r\nimport { Dictionary } from '../../collections'\r\n\r\nimport * as fs from 'fs'\r\nimport * as Util from 'util'\r\nimport * as Path from 'path'\r\nimport { dispatchFields } from '../fields-dispatch'\r\nimport { reduceSet } from '../set-reduce'\r\n\r\nexport class MsgCompiler {\r\n readonly queue: CompilerType[] = []\r\n readonly snippets: StandardSnippet\r\n readonly buffer: ElasticBuffer = new ElasticBuffer()\r\n readonly completed: Dictionary<CompilerType>\r\n\r\n constructor (public readonly definitions: FixDefinitions, public readonly settings: ICompilerSettings) {\r\n this.completed = new Dictionary<CompilerType>()\r\n this.snippets = new StandardSnippet(this.settings)\r\n }\r\n\r\n public async generate () {\r\n const types: string[] = this.settings.types || this.definitions.message.keys()\r\n return this.createTypes(types)\r\n }\r\n\r\n private getFileName (compilerType: CompilerType): string {\r\n const settings = this.settings\r\n const fileName = `${compilerType.snaked}.ts`\r\n return Path.join(settings.output, fileName)\r\n }\r\n\r\n private async createTypes (types: string[]) {\r\n const definitions = this.definitions\r\n types.forEach((type: string) => {\r\n const definition = definitions.containedSet(type)\r\n if (!definition) {\r\n throw new Error(`no type ${type} defined`)\r\n }\r\n const ct = new CompilerType(this.definitions, definition, definition.name)\r\n this.enqueue(ct)\r\n })\r\n await this.work()\r\n await this.index()\r\n }\r\n\r\n private async work () {\r\n const q = this.queue\r\n const writeFile = Util.promisify(fs.writeFile)\r\n while (q.length > 0) {\r\n const compilerType: CompilerType = q.pop()\r\n const api: string = this.generateMessages(compilerType)\r\n const fullName = this.getFileName(compilerType)\r\n await writeFile(fullName, api, {\r\n encoding: 'utf8'}\r\n )\r\n }\r\n }\r\n\r\n private async index () {\r\n const writeFile = Util.promisify(fs.writeFile)\r\n const settings = this.settings\r\n const fileName = 'index.ts'\r\n const done = this.completed.values()\r\n const exports: string[] = done.reduce((prev: string[], current: CompilerType) => {\r\n prev.push(`export * from '${current.snaked}'`)\r\n return prev\r\n }, [`export * from './enum'`] as string[])\r\n const newLine = require('os').EOL\r\n exports.sort()\r\n exports.push('')\r\n const api: string = exports.join(newLine)\r\n const fullName: string = Path.join(settings.output, fileName)\r\n await writeFile(fullName, api, {\r\n encoding: 'utf8'}\r\n )\r\n }\r\n\r\n private generateMessages (compilerType: CompilerType): string {\r\n const definition = compilerType.set\r\n const buffer: ElasticBuffer = this.buffer\r\n buffer.reset()\r\n const snippets = this.snippets\r\n const newLine = require('os').EOL\r\n // a single class with dependencies included\r\n let ptr: number = this.imports(compilerType)\r\n if (ptr > 0) {\r\n buffer.writeString(newLine)\r\n buffer.writeString(newLine)\r\n }\r\n if (this.settings.comment && definition.description) {\r\n const comment = snippets.commentBox(definition.description)\r\n buffer.writeString(snippets.startBlockComment(0))\r\n buffer.writeString(newLine)\r\n buffer.writeString(comment)\r\n buffer.writeString(newLine)\r\n buffer.writeString(snippets.endBlockComment(0))\r\n buffer.writeString(newLine)\r\n }\r\n buffer.writeString(snippets.interface(compilerType.qualifiedName, 0))\r\n buffer.writeChar(AsciiChars.Space)\r\n buffer.writeString(snippets.startBlock(0))\r\n buffer.writeString(newLine)\r\n this.fields(compilerType)\r\n buffer.writeString(snippets.endBlock(0))\r\n buffer.writeString(newLine)\r\n return buffer.toString()\r\n }\r\n\r\n // only generate once\r\n private enqueue (ct: CompilerType): void {\r\n const completed = this.completed\r\n const fullName = this.getFileName(ct)\r\n if (completed.get(fullName)) {\r\n return\r\n }\r\n this.queue.push(ct)\r\n completed.addUpdate(fullName, ct)\r\n }\r\n\r\n private fieldSimple (simple: ContainedSimpleField): void {\r\n const snippets = this.snippets\r\n const settings = this.settings\r\n const buffer = this.buffer\r\n const newLine = require('os').EOL\r\n const len = buffer.writeString(snippets.simple(simple.name, Tags.toJSType(simple), simple.required, 1))\r\n if (settings.tags) {\r\n buffer.writeString(snippets.commentLine(`${simple.definition.tag}`, 50 - len))\r\n }\r\n buffer.writeString(newLine)\r\n }\r\n\r\n private fieldGroup (groupField: ContainedGroupField, compilerType: CompilerType): void {\r\n const newLine = require('os').EOL\r\n const buffer = this.buffer\r\n const snippets = this.snippets\r\n // for a group its field name is as defined in type, its type is qualified to avoid collisions\r\n const extended: string = compilerType.getExtended(groupField)\r\n buffer.writeString(snippets.group(compilerType.getFieldGroupName(groupField), extended, groupField.required, 1))\r\n this.enqueue(new CompilerType(this.definitions, groupField.definition, extended))\r\n buffer.writeString(newLine)\r\n }\r\n\r\n private fieldComponent (componentField: ContainedComponentField, compilerType: CompilerType): void {\r\n const newLine = require('os').EOL\r\n const buffer = this.buffer\r\n const snippets = this.snippets\r\n const extended: string = compilerType.getExtended(componentField)\r\n buffer.writeString(snippets.component(extended, componentField.required, 1))\r\n this.enqueue(new CompilerType(this.definitions, componentField.definition, extended))\r\n buffer.writeString(newLine)\r\n }\r\n\r\n private fields (compilerType: CompilerType): void {\r\n this.attributes(compilerType)\r\n dispatchFields(compilerType.set.fields, {\r\n group: (g: ContainedGroupField) => this.fieldGroup(g, compilerType),\r\n simple: (simple: ContainedSimpleField) => this.fieldSimple(simple),\r\n component: (c: ContainedComponentField) => this.fieldComponent(c, compilerType)\r\n })\r\n }\r\n\r\n private attributes (compilerType: CompilerType): void {\r\n const settings = this.settings\r\n const newLine = require('os').EOL\r\n const snippets = this.snippets\r\n const buffer = this.buffer\r\n compilerType.set.localAttribute.forEach((simple: ContainedSimpleField) => {\r\n const len = buffer.writeString(snippets.simple(simple.definition.name, Tags.toJSType(simple), simple.required, 1))\r\n if (settings.tags) {\r\n buffer.writeString(snippets.commentLine(`${simple.definition.tag}`, 50 - len))\r\n }\r\n buffer.writeString(newLine)\r\n })\r\n }\r\n\r\n private imports (compilerType: CompilerType): number {\r\n const isMsg = compilerType.set.type === ContainedSetType.Msg\r\n const snippets = this.snippets\r\n const imports: string[] = reduceSet<string[]>(compilerType.set, {\r\n component: (a: string[], c: ContainedComponentField) => {\r\n a.push(`${snippets.import(compilerType.getExtended(c), isMsg, 0)}`)\r\n return a\r\n },\r\n group: (a: string[], g: ContainedGroupField) => {\r\n a.push(`${snippets.import(compilerType.getExtended(g), isMsg, 0)}`)\r\n return a\r\n }\r\n }, [])\r\n\r\n return this.buffer.writeString(imports.join(require('os').EOL))\r\n }\r\n}\r\n"]}
@@ -28,7 +28,7 @@ class RepositoryXmlParser extends fix_parser_1.FixParser {
28
28
  super();
29
29
  this.rootPath = rootPath;
30
30
  this.getLogger = getLogger;
31
- this.singlePass = (0, util_1.promisify)(RepositoryXmlParser.subscribe);
31
+ this.singlePass = util_1.promisify(RepositoryXmlParser.subscribe);
32
32
  this.logger = getLogger('RepositoryXmlParser');
33
33
  this.repository = new repository_1.Repository(fix_versions_1.VersionUtil.resolve(this.rootPath), getLogger);
34
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"repository-xml-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/fix-repository/repository-xml-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'fs'\r\nimport * as path from 'path'\r\nimport { SAXParser } from 'sax'\r\nimport { promisify } from 'util'\r\nimport { IDictDoneCb, ISaxNode, SAXStream } from '../../dict-primitive'\r\nimport { FixDefinitions } from '../../definition'\r\nimport { AbbreviationsParser } from './abbreviations-parser'\r\nimport { BaseParser } from './base-parser'\r\nimport { ComponentsParser } from './components-parser'\r\nimport { EnumsParser } from './enums-parser'\r\nimport { FieldsParser } from './fields-parser'\r\nimport { MessagesParser } from './messages-parser'\r\nimport { MsgContentsParser } from './msg-contents-parser'\r\nimport { Repository } from './repository'\r\nimport { FixParser } from '../../fix-parser'\r\nimport { VersionUtil } from '../../fix-versions'\r\nimport { GetJsFixLogger, IJsFixLogger } from '../../../config'\r\nimport { DataTypesParser } from './data-types-parser'\r\n\r\nexport class RepositoryXmlParser extends FixParser {\r\n public readonly repository: Repository\r\n private readonly singlePass = promisify(RepositoryXmlParser.subscribe)\r\n private readonly logger: IJsFixLogger\r\n\r\n constructor (public readonly rootPath: string, public readonly getLogger: GetJsFixLogger) {\r\n super()\r\n this.logger = getLogger('RepositoryXmlParser')\r\n this.repository = new Repository(VersionUtil.resolve(this.rootPath), getLogger)\r\n }\r\n\r\n private static subscribe (instance: RepositoryXmlParser, saxStream: SAXStream, done: IDictDoneCb): void {\r\n let parser: BaseParser\r\n let pending: string\r\n const saxParser: SAXParser = saxStream._parser\r\n\r\n saxStream.on('error', (e: Error) => {\r\n done(e, null)\r\n })\r\n\r\n saxStream.on('closetag', (name) => {\r\n\r\n switch (name) {\r\n case 'Datatypes':\r\n case 'Abbreviations':\r\n case 'Messages':\r\n case 'MsgContents':\r\n case 'Components':\r\n case 'Fields':\r\n case 'Enums': {\r\n if (parser != null) {\r\n parser.close(saxParser.line, name)\r\n instance.repository.assign(name, parser.data)\r\n parser = null\r\n }\r\n break\r\n }\r\n\r\n case 'Datatype':\r\n case 'Abbreviation':\r\n case 'MsgContent':\r\n case 'Field':\r\n case 'Enum':\r\n case 'Component':\r\n case 'Message': {\r\n if (parser != null) {\r\n parser.close(saxParser.line, name)\r\n }\r\n break\r\n }\r\n\r\n default: {\r\n pending = null\r\n break\r\n }\r\n }\r\n })\r\n\r\n saxStream.on('text', (t: string) => {\r\n t = t.trim()\r\n if (pending) {\r\n parser.value(saxParser.line, pending, t)\r\n }\r\n })\r\n\r\n saxStream.on('opentag', (node) => {\r\n const saxNode: ISaxNode = node as ISaxNode\r\n switch (saxNode.name) {\r\n case 'Datatypes': {\r\n parser = new DataTypesParser(instance)\r\n break\r\n }\r\n\r\n case 'Fields': {\r\n parser = new FieldsParser(instance)\r\n break\r\n }\r\n\r\n case 'Enums': {\r\n parser = new EnumsParser(instance)\r\n break\r\n }\r\n\r\n case 'Components': {\r\n parser = new ComponentsParser(instance)\r\n break\r\n }\r\n\r\n case 'Messages': {\r\n parser = new MessagesParser(instance)\r\n break\r\n }\r\n\r\n case 'MsgContents': {\r\n parser = new MsgContentsParser(instance)\r\n break\r\n }\r\n\r\n case 'Abbreviations': {\r\n parser = new AbbreviationsParser(instance)\r\n break\r\n }\r\n\r\n case 'Datatype':\r\n case 'Abbreviation':\r\n case 'Field':\r\n case 'Message':\r\n case 'MsgContent':\r\n case 'Enum':\r\n case 'Component': {\r\n if (parser != null) {\r\n parser.open(saxParser.line, saxNode)\r\n }\r\n break\r\n }\r\n\r\n default: {\r\n pending = saxNode.name\r\n }\r\n }\r\n })\r\n\r\n saxStream.on('ready', () => {\r\n if (done) {\r\n parser = null\r\n done(null, instance.repository.definitions)\r\n }\r\n })\r\n }\r\n\r\n public parse (): Promise<FixDefinitions> {\r\n return new Promise<FixDefinitions>(async (accept, reject) => {\r\n try {\r\n await this.onePass('Datatypes.xml')\r\n await this.onePass('Fields.xml')\r\n await this.onePass('Enums.xml')\r\n await this.onePass('Components.xml')\r\n await this.onePass('Messages.xml')\r\n await this.onePass('MsgContents.xml')\r\n if (this.repository.includesAbbreviations) {\r\n await this.onePass('Abbreviations.xml')\r\n }\r\n accept(this.repository.definitions)\r\n } catch (e) {\r\n reject(e)\r\n }\r\n })\r\n }\r\n\r\n private async onePass (fileName: string): Promise<any> {\r\n const logger = this.logger\r\n const fullFileName = path.join(this.rootPath, fileName)\r\n const pass: fs.ReadStream = fs.createReadStream(fullFileName)\r\n logger.info(`reading ${fullFileName}`)\r\n const saxStream: SAXStream = require('sax').createStream(true, {})\r\n pass.pipe(saxStream)\r\n await this.singlePass(this, saxStream)\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"repository-xml-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/fix-repository/repository-xml-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'fs'\r\nimport * as path from 'path'\r\nimport { SAXParser } from 'sax'\r\nimport { promisify } from 'util'\r\nimport { IDictDoneCb, ISaxNode, SAXStream } from '../../dict-primitive'\r\nimport { FixDefinitions } from '../../definition'\r\nimport { AbbreviationsParser } from './abbreviations-parser'\r\nimport { BaseParser } from './base-parser'\r\nimport { ComponentsParser } from './components-parser'\r\nimport { EnumsParser } from './enums-parser'\r\nimport { FieldsParser } from './fields-parser'\r\nimport { MessagesParser } from './messages-parser'\r\nimport { MsgContentsParser } from './msg-contents-parser'\r\nimport { Repository } from './repository'\r\nimport { FixParser } from '../../fix-parser'\r\nimport { VersionUtil } from '../../fix-versions'\r\nimport { GetJsFixLogger, IJsFixLogger } from '../../../config'\r\nimport { DataTypesParser } from './data-types-parser'\r\n\r\nexport class RepositoryXmlParser extends FixParser {\r\n public readonly repository: Repository\r\n private readonly singlePass = promisify(RepositoryXmlParser.subscribe)\r\n private readonly logger: IJsFixLogger\r\n\r\n constructor (public readonly rootPath: string, public readonly getLogger: GetJsFixLogger) {\r\n super()\r\n this.logger = getLogger('RepositoryXmlParser')\r\n this.repository = new Repository(VersionUtil.resolve(this.rootPath), getLogger)\r\n }\r\n\r\n private static subscribe (instance: RepositoryXmlParser, saxStream: SAXStream, done: IDictDoneCb): void {\r\n let parser: BaseParser\r\n let pending: string\r\n const saxParser: SAXParser = saxStream._parser\r\n\r\n saxStream.on('error', (e: Error) => {\r\n done(e, null)\r\n })\r\n\r\n saxStream.on('closetag', (name) => {\r\n\r\n switch (name) {\r\n case 'Datatypes':\r\n case 'Abbreviations':\r\n case 'Messages':\r\n case 'MsgContents':\r\n case 'Components':\r\n case 'Fields':\r\n case 'Enums': {\r\n if (parser != null) {\r\n parser.close(saxParser.line, name)\r\n instance.repository.assign(name, parser.data)\r\n parser = null\r\n }\r\n break\r\n }\r\n\r\n case 'Datatype':\r\n case 'Abbreviation':\r\n case 'MsgContent':\r\n case 'Field':\r\n case 'Enum':\r\n case 'Component':\r\n case 'Message': {\r\n if (parser != null) {\r\n parser.close(saxParser.line, name)\r\n }\r\n break\r\n }\r\n\r\n default: {\r\n pending = null\r\n break\r\n }\r\n }\r\n })\r\n\r\n saxStream.on('text', (t: string) => {\r\n t = t.trim()\r\n if (pending) {\r\n parser.value(saxParser.line, pending, t)\r\n }\r\n })\r\n\r\n saxStream.on('opentag', (node) => {\r\n const saxNode: ISaxNode = node as ISaxNode\r\n switch (saxNode.name) {\r\n case 'Datatypes': {\r\n parser = new DataTypesParser(instance)\r\n break\r\n }\r\n\r\n case 'Fields': {\r\n parser = new FieldsParser(instance)\r\n break\r\n }\r\n\r\n case 'Enums': {\r\n parser = new EnumsParser(instance)\r\n break\r\n }\r\n\r\n case 'Components': {\r\n parser = new ComponentsParser(instance)\r\n break\r\n }\r\n\r\n case 'Messages': {\r\n parser = new MessagesParser(instance)\r\n break\r\n }\r\n\r\n case 'MsgContents': {\r\n parser = new MsgContentsParser(instance)\r\n break\r\n }\r\n\r\n case 'Abbreviations': {\r\n parser = new AbbreviationsParser(instance)\r\n break\r\n }\r\n\r\n case 'Datatype':\r\n case 'Abbreviation':\r\n case 'Field':\r\n case 'Message':\r\n case 'MsgContent':\r\n case 'Enum':\r\n case 'Component': {\r\n if (parser != null) {\r\n parser.open(saxParser.line, saxNode)\r\n }\r\n break\r\n }\r\n\r\n default: {\r\n pending = saxNode.name\r\n }\r\n }\r\n })\r\n\r\n saxStream.on('ready', () => {\r\n if (done) {\r\n parser = null\r\n done(null, instance.repository.definitions)\r\n }\r\n })\r\n }\r\n\r\n public parse (): Promise<FixDefinitions> {\r\n return new Promise<FixDefinitions>(async (accept, reject) => {\r\n try {\r\n await this.onePass('Datatypes.xml')\r\n await this.onePass('Fields.xml')\r\n await this.onePass('Enums.xml')\r\n await this.onePass('Components.xml')\r\n await this.onePass('Messages.xml')\r\n await this.onePass('MsgContents.xml')\r\n if (this.repository.includesAbbreviations) {\r\n await this.onePass('Abbreviations.xml')\r\n }\r\n accept(this.repository.definitions)\r\n } catch (e) {\r\n reject(e)\r\n }\r\n })\r\n }\r\n\r\n private async onePass (fileName: string): Promise<any> {\r\n const logger = this.logger\r\n const fullFileName = path.join(this.rootPath, fileName)\r\n const pass: fs.ReadStream = fs.createReadStream(fullFileName)\r\n logger.info(`reading ${fullFileName}`)\r\n const saxStream: SAXStream = require('sax').createStream(true, {})\r\n pass.pipe(saxStream)\r\n await this.singlePass(this, saxStream)\r\n }\r\n}\r\n"]}
@@ -35,7 +35,7 @@ class QuickFixXmlFileParser extends fix_parser_1.FixParser {
35
35
  this.getLogger = getLogger;
36
36
  this.parseState = ParseState.Begin;
37
37
  this.numberPasses = 0;
38
- this.singlePass = (0, util_1.promisify)(QuickFixXmlFileParser.subscribe);
38
+ this.singlePass = util_1.promisify(QuickFixXmlFileParser.subscribe);
39
39
  }
40
40
  static subscribe(instance, saxStream, done) {
41
41
  let parser;
@@ -1 +1 @@
1
- {"version":3,"file":"quick-fix-xml-file-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/quick-fix-xml-file-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'fs'\r\nimport { SAXParser } from 'sax'\r\nimport { IDictDoneCb, ISaxNode, SAXStream } from '../../dict-primitive'\r\nimport { FixDefinitions } from '../../definition'\r\nimport { FieldDefinitionParser } from './field-definition-parser'\r\nimport { FieldSetParser } from './field-set-parser'\r\nimport { MessageParser } from './message-parser'\r\nimport { NodeParser } from './node-parser'\r\nimport { FixParser } from '../../fix-parser'\r\nimport { FixDefinitionSource, VersionUtil } from '../../fix-versions'\r\nimport { GetJsFixLogger } from '../../../config'\r\nimport { promisify } from 'util'\r\nimport { ContainedComponentField } from '../../contained'\r\n\r\nenum ParseState {\r\n Begin = 1,\r\n FieldDefinitions = 2,\r\n ComponentsFirstPass = 3,\r\n ComponentsSecondPass = 4,\r\n ComponentsThirdPass = 5,\r\n Messages = 6\r\n}\r\n\r\nexport class QuickFixXmlFileParser extends FixParser {\r\n\r\n public parseState: ParseState = ParseState.Begin\r\n public numberPasses: number = 0\r\n public definitions: FixDefinitions\r\n private readonly singlePass = promisify(QuickFixXmlFileParser.subscribe)\r\n\r\n constructor (public readonly xmlPath: string, public getLogger: GetJsFixLogger) {\r\n super()\r\n }\r\n\r\n private static subscribe (instance: QuickFixXmlFileParser, saxStream: SAXStream, done: IDictDoneCb): void {\r\n let parser: NodeParser\r\n\r\n instance.numberPasses++\r\n switch (instance.parseState) {\r\n case ParseState.Begin: {\r\n instance.parseState = ParseState.FieldDefinitions\r\n break\r\n }\r\n case ParseState.FieldDefinitions: {\r\n instance.parseState = ParseState.ComponentsFirstPass\r\n break\r\n }\r\n case ParseState.ComponentsFirstPass: {\r\n instance.parseState = ParseState.ComponentsSecondPass\r\n break\r\n }\r\n case ParseState.ComponentsSecondPass: {\r\n instance.parseState = ParseState.ComponentsThirdPass\r\n break\r\n }\r\n case ParseState.ComponentsThirdPass: {\r\n instance.parseState = ParseState.Messages\r\n break\r\n }\r\n }\r\n\r\n const saxParser: SAXParser = saxStream._parser\r\n\r\n saxStream.on('error', (e: Error) => {\r\n done(e, null)\r\n })\r\n\r\n saxStream.on('closetag', (name) => {\r\n if (parser != null) {\r\n parser.close(saxParser.line, name)\r\n }\r\n switch (name) {\r\n case 'repository':\r\n case 'messages':\r\n case 'components':\r\n case 'header':\r\n case 'trailer': {\r\n parser = null\r\n break\r\n }\r\n }\r\n })\r\n\r\n saxStream.on('opentag', (node) => {\r\n const saxNode: ISaxNode = node as ISaxNode\r\n\r\n switch (saxNode.name) {\r\n\r\n case 'fix': {\r\n switch (instance.parseState) {\r\n case ParseState.FieldDefinitions: {\r\n const major = saxNode.attributes.major\r\n const minor = saxNode.attributes.major\r\n const description: string = `FIX.${major}.${minor}`\r\n instance.definitions = new FixDefinitions(FixDefinitionSource.QuickFix, VersionUtil.resolve(description))\r\n break\r\n }\r\n }\r\n break\r\n }\r\n\r\n case 'fields': {\r\n switch (instance.parseState) {\r\n case ParseState.FieldDefinitions: {\r\n parser = new FieldDefinitionParser(instance)\r\n break\r\n }\r\n default: {\r\n parser = null\r\n }\r\n }\r\n break\r\n }\r\n\r\n case 'messages': {\r\n switch (instance.parseState) {\r\n case ParseState.Messages: {\r\n parser = new MessageParser(instance)\r\n break\r\n }\r\n\r\n default:\r\n break\r\n }\r\n break\r\n }\r\n\r\n case 'components': {\r\n // can have a group containing components which contain themselves components of groups\r\n // each step will build forward references to a deeper level to ensure final messages\r\n // have all dependencies correctly defined.\r\n switch (instance.parseState) {\r\n case ParseState.ComponentsFirstPass:\r\n case ParseState.ComponentsSecondPass:\r\n case ParseState.ComponentsThirdPass:\r\n parser = new FieldSetParser(instance)\r\n break\r\n }\r\n break\r\n }\r\n\r\n case 'field':\r\n case 'value':\r\n case 'component':\r\n case 'group': {\r\n if (parser != null) {\r\n parser.open(saxParser.line, saxNode)\r\n }\r\n break\r\n }\r\n\r\n case 'message': {\r\n switch (instance.parseState) {\r\n case ParseState.Messages: {\r\n if (parser != null) {\r\n parser.open(saxParser.line, saxNode)\r\n }\r\n break\r\n }\r\n\r\n default:\r\n break\r\n }\r\n break\r\n }\r\n\r\n case 'header':\r\n case 'trailer': {\r\n switch (instance.parseState) {\r\n case ParseState.Messages: {\r\n parser = new FieldSetParser(instance)\r\n parser.open(saxParser.line, node)\r\n break\r\n }\r\n }\r\n break\r\n }\r\n }\r\n })\r\n\r\n saxStream.on('ready', () => {\r\n if (done) {\r\n parser = null\r\n done(null, instance.definitions)\r\n }\r\n })\r\n }\r\n\r\n private encloseMessages (): void {\r\n const messages = this.definitions.message\r\n const keys = messages.keys()\r\n const trailerName = 'StandardTrailer'\r\n keys.forEach(k => {\r\n const message = messages.get(k)\r\n const trailer = this.definitions.component.get(trailerName)\r\n if (trailer && !message.components.containsKey(trailerName)) {\r\n const contained = new ContainedComponentField(trailer, message.fields.length, true)\r\n message.add(contained)\r\n }\r\n })\r\n }\r\n\r\n public parse (): Promise<FixDefinitions> {\r\n return new Promise<FixDefinitions>(async (accept, reject) => {\r\n try {\r\n await this.onePass() // first fetch all field definitions\r\n await this.onePass() // first pass of components, will not know about forward components.\r\n await this.onePass() // second pass of components top level with forward references replace\r\n await this.onePass() // third pass of components all fully resolved i.e. pick up versions from pass above\r\n await this.onePass() // lastly messages with all dependencies\r\n this.encloseMessages()\r\n accept(this.definitions)\r\n } catch (e) {\r\n reject(e)\r\n }\r\n })\r\n }\r\n\r\n private async onePass (): Promise<FixDefinitions> {\r\n const pass: fs.ReadStream = fs.createReadStream(this.xmlPath)\r\n const saxStream: SAXStream = require('sax').createStream(true, {})\r\n pass.pipe(saxStream)\r\n return this.singlePass(this, saxStream)\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"quick-fix-xml-file-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/quick-fix-xml-file-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'fs'\r\nimport { SAXParser } from 'sax'\r\nimport { IDictDoneCb, ISaxNode, SAXStream } from '../../dict-primitive'\r\nimport { FixDefinitions } from '../../definition'\r\nimport { FieldDefinitionParser } from './field-definition-parser'\r\nimport { FieldSetParser } from './field-set-parser'\r\nimport { MessageParser } from './message-parser'\r\nimport { NodeParser } from './node-parser'\r\nimport { FixParser } from '../../fix-parser'\r\nimport { FixDefinitionSource, VersionUtil } from '../../fix-versions'\r\nimport { GetJsFixLogger } from '../../../config'\r\nimport { promisify } from 'util'\r\nimport { ContainedComponentField } from '../../contained'\r\n\r\nenum ParseState {\r\n Begin = 1,\r\n FieldDefinitions = 2,\r\n ComponentsFirstPass = 3,\r\n ComponentsSecondPass = 4,\r\n ComponentsThirdPass = 5,\r\n Messages = 6\r\n}\r\n\r\nexport class QuickFixXmlFileParser extends FixParser {\r\n\r\n public parseState: ParseState = ParseState.Begin\r\n public numberPasses: number = 0\r\n public definitions: FixDefinitions\r\n private readonly singlePass = promisify(QuickFixXmlFileParser.subscribe)\r\n\r\n constructor (public readonly xmlPath: string, public getLogger: GetJsFixLogger) {\r\n super()\r\n }\r\n\r\n private static subscribe (instance: QuickFixXmlFileParser, saxStream: SAXStream, done: IDictDoneCb): void {\r\n let parser: NodeParser\r\n\r\n instance.numberPasses++\r\n switch (instance.parseState) {\r\n case ParseState.Begin: {\r\n instance.parseState = ParseState.FieldDefinitions\r\n break\r\n }\r\n case ParseState.FieldDefinitions: {\r\n instance.parseState = ParseState.ComponentsFirstPass\r\n break\r\n }\r\n case ParseState.ComponentsFirstPass: {\r\n instance.parseState = ParseState.ComponentsSecondPass\r\n break\r\n }\r\n case ParseState.ComponentsSecondPass: {\r\n instance.parseState = ParseState.ComponentsThirdPass\r\n break\r\n }\r\n case ParseState.ComponentsThirdPass: {\r\n instance.parseState = ParseState.Messages\r\n break\r\n }\r\n }\r\n\r\n const saxParser: SAXParser = saxStream._parser\r\n\r\n saxStream.on('error', (e: Error) => {\r\n done(e, null)\r\n })\r\n\r\n saxStream.on('closetag', (name) => {\r\n if (parser != null) {\r\n parser.close(saxParser.line, name)\r\n }\r\n switch (name) {\r\n case 'repository':\r\n case 'messages':\r\n case 'components':\r\n case 'header':\r\n case 'trailer': {\r\n parser = null\r\n break\r\n }\r\n }\r\n })\r\n\r\n saxStream.on('opentag', (node) => {\r\n const saxNode: ISaxNode = node as ISaxNode\r\n\r\n switch (saxNode.name) {\r\n\r\n case 'fix': {\r\n switch (instance.parseState) {\r\n case ParseState.FieldDefinitions: {\r\n const major = saxNode.attributes.major\r\n const minor = saxNode.attributes.major\r\n const description: string = `FIX.${major}.${minor}`\r\n instance.definitions = new FixDefinitions(FixDefinitionSource.QuickFix, VersionUtil.resolve(description))\r\n break\r\n }\r\n }\r\n break\r\n }\r\n\r\n case 'fields': {\r\n switch (instance.parseState) {\r\n case ParseState.FieldDefinitions: {\r\n parser = new FieldDefinitionParser(instance)\r\n break\r\n }\r\n default: {\r\n parser = null\r\n }\r\n }\r\n break\r\n }\r\n\r\n case 'messages': {\r\n switch (instance.parseState) {\r\n case ParseState.Messages: {\r\n parser = new MessageParser(instance)\r\n break\r\n }\r\n\r\n default:\r\n break\r\n }\r\n break\r\n }\r\n\r\n case 'components': {\r\n // can have a group containing components which contain themselves components of groups\r\n // each step will build forward references to a deeper level to ensure final messages\r\n // have all dependencies correctly defined.\r\n switch (instance.parseState) {\r\n case ParseState.ComponentsFirstPass:\r\n case ParseState.ComponentsSecondPass:\r\n case ParseState.ComponentsThirdPass:\r\n parser = new FieldSetParser(instance)\r\n break\r\n }\r\n break\r\n }\r\n\r\n case 'field':\r\n case 'value':\r\n case 'component':\r\n case 'group': {\r\n if (parser != null) {\r\n parser.open(saxParser.line, saxNode)\r\n }\r\n break\r\n }\r\n\r\n case 'message': {\r\n switch (instance.parseState) {\r\n case ParseState.Messages: {\r\n if (parser != null) {\r\n parser.open(saxParser.line, saxNode)\r\n }\r\n break\r\n }\r\n\r\n default:\r\n break\r\n }\r\n break\r\n }\r\n\r\n case 'header':\r\n case 'trailer': {\r\n switch (instance.parseState) {\r\n case ParseState.Messages: {\r\n parser = new FieldSetParser(instance)\r\n parser.open(saxParser.line, node)\r\n break\r\n }\r\n }\r\n break\r\n }\r\n }\r\n })\r\n\r\n saxStream.on('ready', () => {\r\n if (done) {\r\n parser = null\r\n done(null, instance.definitions)\r\n }\r\n })\r\n }\r\n\r\n private encloseMessages (): void {\r\n const messages = this.definitions.message\r\n const keys = messages.keys()\r\n const trailerName = 'StandardTrailer'\r\n keys.forEach(k => {\r\n const message = messages.get(k)\r\n const trailer = this.definitions.component.get(trailerName)\r\n if (trailer && !message.components.containsKey(trailerName)) {\r\n const contained = new ContainedComponentField(trailer, message.fields.length, true)\r\n message.add(contained)\r\n }\r\n })\r\n }\r\n\r\n public parse (): Promise<FixDefinitions> {\r\n return new Promise<FixDefinitions>(async (accept, reject) => {\r\n try {\r\n await this.onePass() // first fetch all field definitions\r\n await this.onePass() // first pass of components, will not know about forward components.\r\n await this.onePass() // second pass of components top level with forward references replace\r\n await this.onePass() // third pass of components all fully resolved i.e. pick up versions from pass above\r\n await this.onePass() // lastly messages with all dependencies\r\n this.encloseMessages()\r\n accept(this.definitions)\r\n } catch (e) {\r\n reject(e)\r\n }\r\n })\r\n }\r\n\r\n private async onePass (): Promise<FixDefinitions> {\r\n const pass: fs.ReadStream = fs.createReadStream(this.xmlPath)\r\n const saxStream: SAXStream = require('sax').createStream(true, {})\r\n pass.pipe(saxStream)\r\n return this.singlePass(this, saxStream)\r\n }\r\n}\r\n"]}
package/dist/jsfix-cmd.js CHANGED
@@ -176,7 +176,7 @@ class JsfixCmd {
176
176
  generate() {
177
177
  return __awaiter(this, void 0, void 0, function* () {
178
178
  const lipPath = path.join(this.root, 'data/examples/lipsum.txt');
179
- const words = yield (0, util_1.getWords)(lipPath);
179
+ const words = yield util_1.getWords(lipPath);
180
180
  const generator = new util_1.MessageGenerator(words, this.definitions);
181
181
  let density = 1;
182
182
  if (argv.density) {
@@ -300,7 +300,7 @@ class JsfixCmd {
300
300
  compile() {
301
301
  return __awaiter(this, void 0, void 0, function* () {
302
302
  let output = argv.output;
303
- const dp = (0, util_1.getDictPath)(argv.dict);
303
+ const dp = util_1.getDictPath(argv.dict);
304
304
  if (dp) {
305
305
  output = dp.output;
306
306
  }
@@ -320,7 +320,7 @@ class JsfixCmd {
320
320
  else {
321
321
  dict = this.sessionDescription.application.dictionary;
322
322
  }
323
- this.definitions = yield (0, util_1.getDefinitions)(dict);
323
+ this.definitions = yield util_1.getDefinitions(dict);
324
324
  const definitions = this.definitions;
325
325
  if (argv.delimiter) {
326
326
  this.delimiter = buffer_1.AsciiChars.firstChar(argv.delimiter);
@@ -1 +1 @@
1
- {"version":3,"file":"jsfix-cmd.js","sourceRoot":"","sources":["../src/jsfix-cmd.ts"],"names":[],"mappings":"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","sourcesContent":["import { ElasticBuffer, MsgView, MsgParser, AsciiParser, AsciiView, AsciiChars } from './buffer'\r\nimport { ILooseObject } from './collections/collection'\r\nimport { SimpleFieldDefinition, FixDefinitions, MsgCompiler, EnumCompiler, ICompilerSettings } from './dictionary'\r\nimport { MessageGenerator, JsonHelper, getDefinitions, getDictPath, getWords } from './util'\r\nimport { AsciiMsgTransmitter, ISessionDescription, SessionMsgFactory, MsgTransport, FileDuplex, StringDuplex } from './transport'\r\n\r\nimport { MsgTag } from './types'\r\nimport { JsFixConfig } from './config'\r\n\r\nimport * as util from 'util'\r\nconst fs = require('node-fs-extra')\r\nimport * as minimist from 'minimist'\r\nimport * as path from 'path'\r\n\r\nconst argv: any = minimist(process.argv.slice(2))\r\n\r\nenum PrintMode {\r\n Structure = 1,\r\n Object = 2,\r\n Verbose = 3,\r\n Stats = 4,\r\n Token = 5,\r\n Encoded = 6\r\n}\r\n\r\nenum Command {\r\n Generate = 1,\r\n Replay = 2,\r\n Lookup = 3,\r\n Encode = 4,\r\n Benchmark = 5,\r\n Compile = 6,\r\n Unknown = 7\r\n}\r\n\r\nexport class JsfixCmd {\r\n private readonly root: string = path.join(__dirname, '../')\r\n private definitions: FixDefinitions\r\n private jsonHelper: JsonHelper\r\n private session: AsciiMsgTransmitter\r\n private sessionDescription: ISessionDescription\r\n private delimiter: number = AsciiChars.Soh\r\n private stats: ILooseObject = {}\r\n private filter: string = null\r\n private messages: number = 0\r\n private print: boolean = true\r\n\r\n private static getCommand (): Command {\r\n let command: Command = Command.Unknown\r\n if (argv.compile) {\r\n command = Command.Compile\r\n } else if (argv.generate) {\r\n command = Command.Generate\r\n } else if (argv.fix) {\r\n command = argv.benchmark ? Command.Benchmark : Command.Replay\r\n } else if (argv.field) {\r\n command = Command.Lookup\r\n } else if (argv.json) {\r\n command = Command.Encode\r\n } else if (argv.msg) {\r\n command = Command.Lookup\r\n }\r\n return command\r\n }\r\n\r\n private static getPrintMode (): PrintMode {\r\n let mode: PrintMode = PrintMode.Stats\r\n if (argv.tokens) {\r\n mode = PrintMode.Token\r\n } else if (argv.stats) {\r\n mode = PrintMode.Stats\r\n } else if (argv.objects) {\r\n mode = PrintMode.Object\r\n } else if (argv.verbose) {\r\n mode = PrintMode.Verbose\r\n } else if (argv.structures) {\r\n mode = PrintMode.Structure\r\n } else if (argv.encoded) {\r\n mode = PrintMode.Encoded\r\n }\r\n return mode\r\n }\r\n\r\n private static async writeFile (name: string, api: string) {\r\n const writer = util.promisify(fs.writeFile)\r\n await writer(name, api, {\r\n encoding: 'utf8'}\r\n ).catch((e: Error) => {\r\n throw e\r\n })\r\n }\r\n\r\n public exec (): Promise<any> {\r\n return new Promise<any>((resolve, reject) => {\r\n this.init().then(async () => {\r\n let actioned: boolean = true\r\n let command = JsfixCmd.getCommand()\r\n\r\n switch (command) {\r\n case Command.Generate: {\r\n // produce a test message or a valid fix log of n messages\r\n await this.generate()\r\n break\r\n }\r\n\r\n case Command.Encode: {\r\n // encode a json message back to fix\r\n this.encode()\r\n break\r\n }\r\n\r\n case Command.Replay: {\r\n // parse a file into either objects, tokens, structures or stats\r\n const repeats: number = !isNaN(argv.repeats) ? argv.repeats : 1\r\n try {\r\n for (let i: number = 0; i < repeats; ++i) {\r\n await this.replay()\r\n }\r\n } catch (e) {\r\n reject(e)\r\n }\r\n break\r\n }\r\n\r\n case Command.Benchmark: {\r\n // time how long to parse 10000 repeats of contents of file\r\n const repeats: number = !isNaN(argv.repeats) ? argv.repeats : 10000\r\n try {\r\n await this.benchmark(repeats)\r\n } catch (e) {\r\n reject(e)\r\n }\r\n break\r\n }\r\n\r\n case Command.Lookup: {\r\n // lookup a field\r\n if (argv.field) {\r\n this.field()\r\n } else {\r\n this.msg()\r\n }\r\n break\r\n }\r\n\r\n case Command.Compile: {\r\n await this.compile()\r\n break\r\n }\r\n\r\n case Command.Unknown:\r\n default: {\r\n actioned = false\r\n }\r\n }\r\n resolve(actioned)\r\n }).catch((e) => {\r\n reject(e)\r\n })\r\n })\r\n }\r\n\r\n private firstMessage (t: MsgTransport): Promise<MsgView> {\r\n return new Promise<MsgView>((resolve, reject) => {\r\n t.receiver.on('msg', (msgType: string, msgView: MsgView) => {\r\n resolve(msgView.clone())\r\n })\r\n t.receiver.on('error', (e) => {\r\n reject(e)\r\n })\r\n })\r\n }\r\n\r\n private async generate () {\r\n const lipPath: string = path.join(this.root, 'data/examples/lipsum.txt')\r\n const words: string[] = await getWords(lipPath)\r\n const generator = new MessageGenerator(words, this.definitions)\r\n let density = 1\r\n if (argv.density) {\r\n density = parseFloat(argv.density)\r\n }\r\n if (isNaN(density)) {\r\n console.log('density must be numeric in range > 0 density <= 1.0')\r\n return\r\n }\r\n\r\n if (argv.script) {\r\n await this.script(generator, density)\r\n } else {\r\n await this.single(generator, density)\r\n }\r\n }\r\n\r\n private async single (generator: MessageGenerator, density: number) {\r\n if (!argv.type) {\r\n console.log('specify type to generate e.g. --type = AE')\r\n return\r\n }\r\n const msgType: string = `${argv.type}`\r\n let makeGroups: boolean = true\r\n if (argv.groups) {\r\n makeGroups = argv.groups === 'true'\r\n }\r\n const obj: ILooseObject = generator.generate(msgType, density, makeGroups)\r\n console.log(JSON.stringify(obj, null, 4))\r\n const fix: string = this.encodeObject(msgType, obj)\r\n const ft: MsgTransport = new MsgTransport(1, this.session.config, new StringDuplex(fix))\r\n if (argv.unit) {\r\n await this.unitTest(fix, obj, ft)\r\n } else {\r\n this.subscribe(ft)\r\n }\r\n }\r\n\r\n private async script (generator: MessageGenerator, density: number) {\r\n let buffer: ElasticBuffer = new ElasticBuffer()\r\n const repeats: number = argv.repeats || 50\r\n const key: string = MsgTag.MsgType.toString()\r\n const sf = this.definitions.simple.get(key)\r\n const session: AsciiMsgTransmitter = this.session\r\n for (let i = 0; i < repeats; ++i) {\r\n const msgType: string = MessageGenerator.getRandomEnum(sf).toString()\r\n console.log(`i = ${i} ${msgType}`)\r\n const obj: ILooseObject = generator.generate(msgType, density)\r\n session.encodeMessage(msgType, obj)\r\n buffer.writeBuffer(session.buffer.slice())\r\n buffer.writeString(require('os').EOL)\r\n }\r\n await JsfixCmd.writeFile('./fix.txt', buffer.slice().toString('utf8'))\r\n }\r\n\r\n private async unitTest (fix: string, obj: ILooseObject, ft: MsgTransport) {\r\n const view: MsgView = await this.firstMessage(ft)\r\n const summary = view.structure.summary()\r\n\r\n await JsfixCmd.writeFile('./fix.txt', fix)\r\n await JsfixCmd.writeFile('./object.json', JSON.stringify(obj, null, 4))\r\n await JsfixCmd.writeFile('./token.txt', view.toString())\r\n await JsfixCmd.writeFile('./structure.json', JSON.stringify(summary, null, 4))\r\n }\r\n\r\n private encodeObject (msgType: string, object: ILooseObject): string {\r\n const session: AsciiMsgTransmitter = this.session\r\n session.encodeMessage(msgType, object)\r\n return session.buffer.toString()\r\n }\r\n\r\n private msg (): void {\r\n const definitions = this.definitions\r\n const m = definitions.message.get(argv.msg)\r\n if (m) {\r\n console.log(m.toString())\r\n }\r\n }\r\n\r\n private field (): void {\r\n let sf: SimpleFieldDefinition\r\n const tag: number = parseInt(argv.field, 10)\r\n const definitions = this.definitions\r\n if (!isNaN(tag)) {\r\n sf = definitions.tagToSimple[tag]\r\n } else {\r\n sf = definitions.simple.get(argv.field)\r\n }\r\n if (sf) {\r\n console.log(sf.toString())\r\n }\r\n }\r\n\r\n ensureExists (path: string): Promise<any> {\r\n return new Promise<any>((accept, reject) => {\r\n fs.mkdirp(path, (err: Error) => {\r\n if (err) {\r\n reject(err)\r\n } else {\r\n accept(true)\r\n }\r\n })\r\n })\r\n }\r\n\r\n private async compileDefinitions (outputPath: string) {\r\n await this.ensureExists(path.join(outputPath, 'set'))\r\n await this.ensureExists(path.join(outputPath, 'enum'))\r\n const definitions = this.definitions\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\r\n private async compile () {\r\n let output = argv.output\r\n const dp = getDictPath(argv.dict)\r\n if (dp) {\r\n output = dp.output\r\n }\r\n output = path.join(this.root, output)\r\n await this.compileDefinitions(output)\r\n }\r\n\r\n private async init (): Promise<any> {\r\n let session: string = argv.session || 'data/session/test-initiator.json'\r\n session = this.norm(session)\r\n this.sessionDescription = require(session)\r\n let dict: string\r\n if (argv.dict) {\r\n dict = argv.dict\r\n } else {\r\n dict = this.sessionDescription.application.dictionary\r\n }\r\n this.definitions = await getDefinitions(dict)\r\n const definitions = this.definitions\r\n if (argv.delimiter) {\r\n this.delimiter = AsciiChars.firstChar(argv.delimiter)\r\n }\r\n this.jsonHelper = new JsonHelper(definitions)\r\n if (argv.session) {\r\n const description = this.sessionDescription\r\n const config = new JsFixConfig(new SessionMsgFactory(description), definitions, description, this.delimiter)\r\n this.session = new AsciiMsgTransmitter(config)\r\n }\r\n }\r\n\r\n private async dispatch (ft: MsgTransport): Promise<any> {\r\n if (argv.type != null) {\r\n this.filter = argv.type.toString()\r\n }\r\n let time: boolean = false\r\n if (argv.time || argv.stats) {\r\n this.print = false\r\n time = true\r\n }\r\n this.subscribe(ft)\r\n const startsAt: Date = new Date()\r\n await ft.wait()\r\n const elapsed: number = new Date().getTime() - startsAt.getTime()\r\n if (time) {\r\n console.log(`messages ${this.messages} elapsed ms ${elapsed}`)\r\n }\r\n if (argv.stats) {\r\n console.log(JSON.stringify(this.stats, null, 4))\r\n }\r\n }\r\n\r\n private subscribe (ft: MsgTransport) {\r\n this.messages = 0\r\n this.stats = {}\r\n const filter = this.filter\r\n // the receiver is message parser which is piped from an input stream - file, socket\r\n ft.receiver.on('msg', (msgType: string, m: AsciiView) => {\r\n\r\n if (filter) {\r\n if (msgType !== filter) {\r\n return\r\n }\r\n }\r\n ++this.messages\r\n this.onMsg(msgType, m)\r\n })\r\n }\r\n\r\n private onMsg (msgType: string, m: MsgView) {\r\n const mode: PrintMode = JsfixCmd.getPrintMode()\r\n const print = this.print\r\n const stats = this.stats\r\n switch (mode) {\r\n case PrintMode.Stats: {\r\n if (!stats[msgType]) {\r\n stats[msgType] = 1\r\n } else {\r\n stats[msgType] = stats[msgType] + 1\r\n }\r\n break\r\n }\r\n\r\n case PrintMode.Verbose: {\r\n const verbose = m.toVerbose()\r\n if (verbose) {\r\n console.log(verbose)\r\n }\r\n break\r\n }\r\n\r\n case PrintMode.Object: {\r\n const asObject: ILooseObject = m.toObject()\r\n if (print) {\r\n const def = this.definitions.message.get(msgType)\r\n console.log(`${msgType} [${def.name}] = ${JSON.stringify(asObject, null, 4)}`)\r\n console.log()\r\n }\r\n break\r\n }\r\n\r\n case PrintMode.Structure: {\r\n const summary = m.structure.summary()\r\n if (print) {\r\n console.log(JSON.stringify(summary, null, 4))\r\n }\r\n break\r\n }\r\n\r\n case PrintMode.Token: {\r\n const tokens = m.toString()\r\n if (print) {\r\n console.log(tokens)\r\n }\r\n break\r\n }\r\n\r\n case PrintMode.Encoded: {\r\n const fix: string = this.encodeObject(msgType, m.toObject())\r\n console.log(fix)\r\n break\r\n }\r\n\r\n default:\r\n throw new Error(`unknown mode ${mode}`)\r\n }\r\n }\r\n\r\n private async replay (): Promise<any> {\r\n if (!argv.fix) {\r\n console.log('provide a path to fix file i.e. --fix=data/examples/execution-report/fix.txt')\r\n return\r\n }\r\n const fix: string = this.norm(argv.fix)\r\n const config = new JsFixConfig(null, this.definitions, this.sessionDescription, this.delimiter)\r\n const ft: MsgTransport = new MsgTransport(1, config, new FileDuplex(fix))\r\n await this.dispatch(ft)\r\n }\r\n\r\n private async benchmark (repeats: number): Promise<any> {\r\n if (!argv.fix) {\r\n console.log('provide a path to fix file i.e. --fix=data/examples/execution-report/fix.txt')\r\n return\r\n }\r\n return new Promise<any>((accept, reject) => {\r\n const fix: string = this.norm(argv.fix)\r\n const fs = require('fs')\r\n const definitions = this.definitions\r\n const delimiter = this.delimiter\r\n fs.readFile(fix, 'utf8', async (err: Error, contents: string) => {\r\n if (err) {\r\n reject(err)\r\n }\r\n const toParse = new StringDuplex(contents.repeat(repeats), false)\r\n const startsAt: Date = new Date()\r\n let i = 0\r\n const asciiParser: MsgParser = new AsciiParser(definitions, toParse.readable, delimiter)\r\n asciiParser.on('msg', (msgType: string, v: MsgView) => {\r\n ++i\r\n if (i === repeats) {\r\n const elapsed: number = new Date().getTime() - startsAt.getTime()\r\n console.log(contents)\r\n console.log(v.toString())\r\n console.log(`[${msgType}]: repeats = ${repeats}, fields = ${v.structure.tags.nextTagPos}, length = ${contents.length} chars, elapsed ms ${elapsed}, ${(elapsed / repeats) * 1000} micros per msg`)\r\n accept(true)\r\n }\r\n })\r\n })\r\n })\r\n }\r\n\r\n private encode (): void {\r\n const session: AsciiMsgTransmitter = this.session\r\n if (!session) {\r\n console.log('provide a session json file e.g. --session=data/session/test-initiator.json')\r\n return\r\n }\r\n if (!argv.type) {\r\n console.log('provide a message type e.g. --type=8')\r\n return\r\n }\r\n if (!argv.json) {\r\n console.log('provide a json representation e.g. data/examples/execution-report/object.json')\r\n return\r\n }\r\n const ts: string = argv.type.toString()\r\n const msg: ILooseObject = this.jsonHelper.fromJson(path.join(this.root, argv.json), ts)\r\n session.encodeMessage(ts, msg)\r\n const fix: string = session.buffer.toString()\r\n console.log(fix)\r\n }\r\n\r\n private norm (p: string): string {\r\n let f: string = p\r\n if (!path.isAbsolute(p)) {\r\n f = path.join(this.root, f)\r\n }\r\n return f\r\n }\r\n}\r\n\r\nfunction showHelp (): void {\r\n console.log('this help page')\r\n console.log('npm run cmd')\r\n console.log('npm run cmd -- --help')\r\n console.log()\r\n\r\n console.log('token format i.e. [602] 687 (LegQty) = 33589')\r\n console.log('jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/quickfix/FIX.4.4/execution-report/fix.txt --delimiter=\"|\" --tokens')\r\n console.log()\r\n\r\n console.log('token format use fix repo dictionary')\r\n console.log('jsfix-cmd --dict=data/fix_repo/FIX.4.4/Base --fix=data/examples/quickfix/FIX.4.4/execution-report/fix.txt'\r\n + ' --delimiter=\"|\" --tokens')\r\n console.log()\r\n\r\n console.log('structure format i.e. show locations of components etc.')\r\n console.log('jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt' +\r\n ' --delimiter=\"|\" --tokens --structures')\r\n console.log()\r\n\r\n console.log('full JS object in JSON format.')\r\n console.log('jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt' +\r\n ' --delimiter=\"|\" --tokens --objects')\r\n console.log()\r\n\r\n console.log('full JS object in JSON format - filter only type messages.')\r\n console.log('jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt' +\r\n ' --delimiter=\"|\" --tokens --type=8 --objects')\r\n console.log()\r\n\r\n console.log('timing stats and message counts. Structured parsing of all messages.')\r\n console.log('jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt --stats')\r\n console.log()\r\n\r\n console.log('encode a json object to fix format')\r\n console.log('jsfix-cmd --json=data/examples/FIX.4.4/quickfix/execution-report/object.json' +\r\n ' --session=data/session.json --type=8 --delimiter=\"|\"')\r\n console.log()\r\n\r\n console.log('display field definition')\r\n console.log('jsfix-cmd --dict=data/FIX44.xml --field=MsgType|35')\r\n console.log()\r\n\r\n console.log('display field use fix repo dictionary e.g. 271 MDEntrySize QTY Quantity or volume represented by the Market Data Entry.')\r\n console.log('jsfix-cmd --dict=data/fix_repo/FIX.4.4/Base --field=MsgType')\r\n console.log('jsfix-cmd --dict=data/fix_repo/FIX.4.4/Base --field=35')\r\n console.log()\r\n\r\n console.log('script to describe field in repository version 4.4')\r\n console.log('npm run repo44 -- --field=8')\r\n console.log()\r\n\r\n console.log('script to describe field in fixml')\r\n console.log('npm run fixml -- --field=50')\r\n console.log()\r\n\r\n console.log('generate unit test set of files - i.e. randomly generate an object, encode to fix. density 1 is all fields')\r\n console.log('jsfix-cmd --generate --type=AE --density=0.8 --unit --delimiter=\"|\" --session=data/session/test-initiator.json')\r\n console.log('npm run repo44-unit -- --type=AE')\r\n console.log('test script with no repeat groups')\r\n console.log('npm run repo44-unit -- --type=AE --groups=false')\r\n console.log()\r\n\r\n console.log('generate a fix log of randomly generated but syntactically correct messages')\r\n console.log('jsfix-cmd --generate --density=0.8 --repeats=50 --script --delimiter=\"|\" --session=data/session/test-initiator.json')\r\n console.log('npm run repo44-script')\r\n console.log('parse above generated script')\r\n console.log('npm run repo44-repscr')\r\n console.log()\r\n\r\n console.log('replay example repo fix file of 50 messages.')\r\n console.log('jsfix-cmd --session=data/session/test-initiator.json --fix=data/examples/FIX.4.4/fix.txt --delimiter=\"|\" --stats')\r\n console.log('npm run repo44-replay -- --stats')\r\n console.log('npm run repo44-replay -- --objects')\r\n console.log('npm run repo44-replay -- --tokens')\r\n console.log('npm run repo44-replay -- --structures')\r\n console.log()\r\n\r\n console.log('benchmark parse a message')\r\n console.log('jsfix-cmd --delimiter=\"|\" --session=data/session/test-initiator.json --fix=data/examples/FIX.4.4/repo/trade-capture-no-groups/fix.txt --benchmark')\r\n console.log('npm run repo44-bench -- --fix=data/examples/FIX.4.4/repo/trade-capture-no-groups/fix.txt')\r\n console.log()\r\n\r\n console.log('compile typescript interfaces - i.e. outputs to src/types/FIX4.4 - requires set and enum sub folders')\r\n console.log('npm run cmd -- --dict=repo40 --compile')\r\n console.log('npm run cmd -- --dict=repo41 --compile')\r\n console.log('npm run cmd -- --dict=repo42 --compile')\r\n console.log('npm run cmd -- --dict=repo43 --compile')\r\n console.log('npm run cmd -- --dict=repo44 --compile')\r\n console.log('npm run cmd -- --dict=repo50 --compile')\r\n console.log('npm run cmd -- --dict=repo50sp1 --compile')\r\n console.log('npm run cmd -- --dict=repo50sp2 --compile')\r\n console.log('npm run cmd -- --dict=repofixml --compile')\r\n console.log('npm run cmd -- --dict=qf44 --compile')\r\n console.log('npm run cmd -- --dict=data/handmade.xml --compile --output=src/types/handmade')\r\n\r\n console.log()\r\n}\r\n\r\nconst help: boolean = argv.h || argv.help\r\nif (help) {\r\n showHelp()\r\n} else {\r\n const cmd: JsfixCmd = new JsfixCmd()\r\n cmd.exec().then((res: boolean) => {\r\n if (!res) {\r\n showHelp()\r\n }\r\n }).catch((e: Error) => {\r\n console.log(`error ${e.message}`)\r\n })\r\n}\r\n"]}
1
+ {"version":3,"file":"jsfix-cmd.js","sourceRoot":"","sources":["../src/jsfix-cmd.ts"],"names":[],"mappings":"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","sourcesContent":["import { ElasticBuffer, MsgView, MsgParser, AsciiParser, AsciiView, AsciiChars } from './buffer'\r\nimport { ILooseObject } from './collections/collection'\r\nimport { SimpleFieldDefinition, FixDefinitions, MsgCompiler, EnumCompiler, ICompilerSettings } from './dictionary'\r\nimport { MessageGenerator, JsonHelper, getDefinitions, getDictPath, getWords } from './util'\r\nimport { AsciiMsgTransmitter, ISessionDescription, SessionMsgFactory, MsgTransport, FileDuplex, StringDuplex } from './transport'\r\n\r\nimport { MsgTag } from './types'\r\nimport { JsFixConfig } from './config'\r\n\r\nimport * as util from 'util'\r\nconst fs = require('node-fs-extra')\r\nimport * as minimist from 'minimist'\r\nimport * as path from 'path'\r\n\r\nconst argv: any = minimist(process.argv.slice(2))\r\n\r\nenum PrintMode {\r\n Structure = 1,\r\n Object = 2,\r\n Verbose = 3,\r\n Stats = 4,\r\n Token = 5,\r\n Encoded = 6\r\n}\r\n\r\nenum Command {\r\n Generate = 1,\r\n Replay = 2,\r\n Lookup = 3,\r\n Encode = 4,\r\n Benchmark = 5,\r\n Compile = 6,\r\n Unknown = 7\r\n}\r\n\r\nexport class JsfixCmd {\r\n private readonly root: string = path.join(__dirname, '../')\r\n private definitions: FixDefinitions\r\n private jsonHelper: JsonHelper\r\n private session: AsciiMsgTransmitter\r\n private sessionDescription: ISessionDescription\r\n private delimiter: number = AsciiChars.Soh\r\n private stats: ILooseObject = {}\r\n private filter: string = null\r\n private messages: number = 0\r\n private print: boolean = true\r\n\r\n private static getCommand (): Command {\r\n let command: Command = Command.Unknown\r\n if (argv.compile) {\r\n command = Command.Compile\r\n } else if (argv.generate) {\r\n command = Command.Generate\r\n } else if (argv.fix) {\r\n command = argv.benchmark ? Command.Benchmark : Command.Replay\r\n } else if (argv.field) {\r\n command = Command.Lookup\r\n } else if (argv.json) {\r\n command = Command.Encode\r\n } else if (argv.msg) {\r\n command = Command.Lookup\r\n }\r\n return command\r\n }\r\n\r\n private static getPrintMode (): PrintMode {\r\n let mode: PrintMode = PrintMode.Stats\r\n if (argv.tokens) {\r\n mode = PrintMode.Token\r\n } else if (argv.stats) {\r\n mode = PrintMode.Stats\r\n } else if (argv.objects) {\r\n mode = PrintMode.Object\r\n } else if (argv.verbose) {\r\n mode = PrintMode.Verbose\r\n } else if (argv.structures) {\r\n mode = PrintMode.Structure\r\n } else if (argv.encoded) {\r\n mode = PrintMode.Encoded\r\n }\r\n return mode\r\n }\r\n\r\n private static async writeFile (name: string, api: string) {\r\n const writer = util.promisify(fs.writeFile)\r\n await writer(name, api, {\r\n encoding: 'utf8'}\r\n ).catch((e: Error) => {\r\n throw e\r\n })\r\n }\r\n\r\n public exec (): Promise<any> {\r\n return new Promise<any>((resolve, reject) => {\r\n this.init().then(async () => {\r\n let actioned: boolean = true\r\n let command = JsfixCmd.getCommand()\r\n\r\n switch (command) {\r\n case Command.Generate: {\r\n // produce a test message or a valid fix log of n messages\r\n await this.generate()\r\n break\r\n }\r\n\r\n case Command.Encode: {\r\n // encode a json message back to fix\r\n this.encode()\r\n break\r\n }\r\n\r\n case Command.Replay: {\r\n // parse a file into either objects, tokens, structures or stats\r\n const repeats: number = !isNaN(argv.repeats) ? argv.repeats : 1\r\n try {\r\n for (let i: number = 0; i < repeats; ++i) {\r\n await this.replay()\r\n }\r\n } catch (e) {\r\n reject(e)\r\n }\r\n break\r\n }\r\n\r\n case Command.Benchmark: {\r\n // time how long to parse 10000 repeats of contents of file\r\n const repeats: number = !isNaN(argv.repeats) ? argv.repeats : 10000\r\n try {\r\n await this.benchmark(repeats)\r\n } catch (e) {\r\n reject(e)\r\n }\r\n break\r\n }\r\n\r\n case Command.Lookup: {\r\n // lookup a field\r\n if (argv.field) {\r\n this.field()\r\n } else {\r\n this.msg()\r\n }\r\n break\r\n }\r\n\r\n case Command.Compile: {\r\n await this.compile()\r\n break\r\n }\r\n\r\n case Command.Unknown:\r\n default: {\r\n actioned = false\r\n }\r\n }\r\n resolve(actioned)\r\n }).catch((e) => {\r\n reject(e)\r\n })\r\n })\r\n }\r\n\r\n private firstMessage (t: MsgTransport): Promise<MsgView> {\r\n return new Promise<MsgView>((resolve, reject) => {\r\n t.receiver.on('msg', (msgType: string, msgView: MsgView) => {\r\n resolve(msgView.clone())\r\n })\r\n t.receiver.on('error', (e) => {\r\n reject(e)\r\n })\r\n })\r\n }\r\n\r\n private async generate () {\r\n const lipPath: string = path.join(this.root, 'data/examples/lipsum.txt')\r\n const words: string[] = await getWords(lipPath)\r\n const generator = new MessageGenerator(words, this.definitions)\r\n let density = 1\r\n if (argv.density) {\r\n density = parseFloat(argv.density)\r\n }\r\n if (isNaN(density)) {\r\n console.log('density must be numeric in range > 0 density <= 1.0')\r\n return\r\n }\r\n\r\n if (argv.script) {\r\n await this.script(generator, density)\r\n } else {\r\n await this.single(generator, density)\r\n }\r\n }\r\n\r\n private async single (generator: MessageGenerator, density: number) {\r\n if (!argv.type) {\r\n console.log('specify type to generate e.g. --type = AE')\r\n return\r\n }\r\n const msgType: string = `${argv.type}`\r\n let makeGroups: boolean = true\r\n if (argv.groups) {\r\n makeGroups = argv.groups === 'true'\r\n }\r\n const obj: ILooseObject = generator.generate(msgType, density, makeGroups)\r\n console.log(JSON.stringify(obj, null, 4))\r\n const fix: string = this.encodeObject(msgType, obj)\r\n const ft: MsgTransport = new MsgTransport(1, this.session.config, new StringDuplex(fix))\r\n if (argv.unit) {\r\n await this.unitTest(fix, obj, ft)\r\n } else {\r\n this.subscribe(ft)\r\n }\r\n }\r\n\r\n private async script (generator: MessageGenerator, density: number) {\r\n let buffer: ElasticBuffer = new ElasticBuffer()\r\n const repeats: number = argv.repeats || 50\r\n const key: string = MsgTag.MsgType.toString()\r\n const sf = this.definitions.simple.get(key)\r\n const session: AsciiMsgTransmitter = this.session\r\n for (let i = 0; i < repeats; ++i) {\r\n const msgType: string = MessageGenerator.getRandomEnum(sf).toString()\r\n console.log(`i = ${i} ${msgType}`)\r\n const obj: ILooseObject = generator.generate(msgType, density)\r\n session.encodeMessage(msgType, obj)\r\n buffer.writeBuffer(session.buffer.slice())\r\n buffer.writeString(require('os').EOL)\r\n }\r\n await JsfixCmd.writeFile('./fix.txt', buffer.slice().toString('utf8'))\r\n }\r\n\r\n private async unitTest (fix: string, obj: ILooseObject, ft: MsgTransport) {\r\n const view: MsgView = await this.firstMessage(ft)\r\n const summary = view.structure.summary()\r\n\r\n await JsfixCmd.writeFile('./fix.txt', fix)\r\n await JsfixCmd.writeFile('./object.json', JSON.stringify(obj, null, 4))\r\n await JsfixCmd.writeFile('./token.txt', view.toString())\r\n await JsfixCmd.writeFile('./structure.json', JSON.stringify(summary, null, 4))\r\n }\r\n\r\n private encodeObject (msgType: string, object: ILooseObject): string {\r\n const session: AsciiMsgTransmitter = this.session\r\n session.encodeMessage(msgType, object)\r\n return session.buffer.toString()\r\n }\r\n\r\n private msg (): void {\r\n const definitions = this.definitions\r\n const m = definitions.message.get(argv.msg)\r\n if (m) {\r\n console.log(m.toString())\r\n }\r\n }\r\n\r\n private field (): void {\r\n let sf: SimpleFieldDefinition\r\n const tag: number = parseInt(argv.field, 10)\r\n const definitions = this.definitions\r\n if (!isNaN(tag)) {\r\n sf = definitions.tagToSimple[tag]\r\n } else {\r\n sf = definitions.simple.get(argv.field)\r\n }\r\n if (sf) {\r\n console.log(sf.toString())\r\n }\r\n }\r\n\r\n ensureExists (path: string): Promise<any> {\r\n return new Promise<any>((accept, reject) => {\r\n fs.mkdirp(path, (err: Error) => {\r\n if (err) {\r\n reject(err)\r\n } else {\r\n accept(true)\r\n }\r\n })\r\n })\r\n }\r\n\r\n private async compileDefinitions (outputPath: string) {\r\n await this.ensureExists(path.join(outputPath, 'set'))\r\n await this.ensureExists(path.join(outputPath, 'enum'))\r\n const definitions = this.definitions\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\r\n private async compile () {\r\n let output = argv.output\r\n const dp = getDictPath(argv.dict)\r\n if (dp) {\r\n output = dp.output\r\n }\r\n output = path.join(this.root, output)\r\n await this.compileDefinitions(output)\r\n }\r\n\r\n private async init (): Promise<any> {\r\n let session: string = argv.session || 'data/session/test-initiator.json'\r\n session = this.norm(session)\r\n this.sessionDescription = require(session)\r\n let dict: string\r\n if (argv.dict) {\r\n dict = argv.dict\r\n } else {\r\n dict = this.sessionDescription.application.dictionary\r\n }\r\n this.definitions = await getDefinitions(dict)\r\n const definitions = this.definitions\r\n if (argv.delimiter) {\r\n this.delimiter = AsciiChars.firstChar(argv.delimiter)\r\n }\r\n this.jsonHelper = new JsonHelper(definitions)\r\n if (argv.session) {\r\n const description = this.sessionDescription\r\n const config = new JsFixConfig(new SessionMsgFactory(description), definitions, description, this.delimiter)\r\n this.session = new AsciiMsgTransmitter(config)\r\n }\r\n }\r\n\r\n private async dispatch (ft: MsgTransport): Promise<any> {\r\n if (argv.type != null) {\r\n this.filter = argv.type.toString()\r\n }\r\n let time: boolean = false\r\n if (argv.time || argv.stats) {\r\n this.print = false\r\n time = true\r\n }\r\n this.subscribe(ft)\r\n const startsAt: Date = new Date()\r\n await ft.wait()\r\n const elapsed: number = new Date().getTime() - startsAt.getTime()\r\n if (time) {\r\n console.log(`messages ${this.messages} elapsed ms ${elapsed}`)\r\n }\r\n if (argv.stats) {\r\n console.log(JSON.stringify(this.stats, null, 4))\r\n }\r\n }\r\n\r\n private subscribe (ft: MsgTransport) {\r\n this.messages = 0\r\n this.stats = {}\r\n const filter = this.filter\r\n // the receiver is message parser which is piped from an input stream - file, socket\r\n ft.receiver.on('msg', (msgType: string, m: AsciiView) => {\r\n\r\n if (filter) {\r\n if (msgType !== filter) {\r\n return\r\n }\r\n }\r\n ++this.messages\r\n this.onMsg(msgType, m)\r\n })\r\n }\r\n\r\n private onMsg (msgType: string, m: MsgView) {\r\n const mode: PrintMode = JsfixCmd.getPrintMode()\r\n const print = this.print\r\n const stats = this.stats\r\n switch (mode) {\r\n case PrintMode.Stats: {\r\n if (!stats[msgType]) {\r\n stats[msgType] = 1\r\n } else {\r\n stats[msgType] = stats[msgType] + 1\r\n }\r\n break\r\n }\r\n\r\n case PrintMode.Verbose: {\r\n const verbose = m.toVerbose()\r\n if (verbose) {\r\n console.log(verbose)\r\n }\r\n break\r\n }\r\n\r\n case PrintMode.Object: {\r\n const asObject: ILooseObject = m.toObject()\r\n if (print) {\r\n const def = this.definitions.message.get(msgType)\r\n console.log(`${msgType} [${def.name}] = ${JSON.stringify(asObject, null, 4)}`)\r\n console.log()\r\n }\r\n break\r\n }\r\n\r\n case PrintMode.Structure: {\r\n const summary = m.structure.summary()\r\n if (print) {\r\n console.log(JSON.stringify(summary, null, 4))\r\n }\r\n break\r\n }\r\n\r\n case PrintMode.Token: {\r\n const tokens = m.toString()\r\n if (print) {\r\n console.log(tokens)\r\n }\r\n break\r\n }\r\n\r\n case PrintMode.Encoded: {\r\n const fix: string = this.encodeObject(msgType, m.toObject())\r\n console.log(fix)\r\n break\r\n }\r\n\r\n default:\r\n throw new Error(`unknown mode ${mode}`)\r\n }\r\n }\r\n\r\n private async replay (): Promise<any> {\r\n if (!argv.fix) {\r\n console.log('provide a path to fix file i.e. --fix=data/examples/execution-report/fix.txt')\r\n return\r\n }\r\n const fix: string = this.norm(argv.fix)\r\n const config = new JsFixConfig(null, this.definitions, this.sessionDescription, this.delimiter)\r\n const ft: MsgTransport = new MsgTransport(1, config, new FileDuplex(fix))\r\n await this.dispatch(ft)\r\n }\r\n\r\n private async benchmark (repeats: number): Promise<any> {\r\n if (!argv.fix) {\r\n console.log('provide a path to fix file i.e. --fix=data/examples/execution-report/fix.txt')\r\n return\r\n }\r\n return new Promise<any>((accept, reject) => {\r\n const fix: string = this.norm(argv.fix)\r\n const fs = require('fs')\r\n const definitions = this.definitions\r\n const delimiter = this.delimiter\r\n fs.readFile(fix, 'utf8', async (err: Error, contents: string) => {\r\n if (err) {\r\n reject(err)\r\n }\r\n const toParse = new StringDuplex(contents.repeat(repeats), false)\r\n const startsAt: Date = new Date()\r\n let i = 0\r\n const asciiParser: MsgParser = new AsciiParser(definitions, toParse.readable, delimiter)\r\n asciiParser.on('msg', (msgType: string, v: MsgView) => {\r\n ++i\r\n if (i === repeats) {\r\n const elapsed: number = new Date().getTime() - startsAt.getTime()\r\n console.log(contents)\r\n console.log(v.toString())\r\n console.log(`[${msgType}]: repeats = ${repeats}, fields = ${v.structure.tags.nextTagPos}, length = ${contents.length} chars, elapsed ms ${elapsed}, ${(elapsed / repeats) * 1000} micros per msg`)\r\n accept(true)\r\n }\r\n })\r\n })\r\n })\r\n }\r\n\r\n private encode (): void {\r\n const session: AsciiMsgTransmitter = this.session\r\n if (!session) {\r\n console.log('provide a session json file e.g. --session=data/session/test-initiator.json')\r\n return\r\n }\r\n if (!argv.type) {\r\n console.log('provide a message type e.g. --type=8')\r\n return\r\n }\r\n if (!argv.json) {\r\n console.log('provide a json representation e.g. data/examples/execution-report/object.json')\r\n return\r\n }\r\n const ts: string = argv.type.toString()\r\n const msg: ILooseObject = this.jsonHelper.fromJson(path.join(this.root, argv.json), ts)\r\n session.encodeMessage(ts, msg)\r\n const fix: string = session.buffer.toString()\r\n console.log(fix)\r\n }\r\n\r\n private norm (p: string): string {\r\n let f: string = p\r\n if (!path.isAbsolute(p)) {\r\n f = path.join(this.root, f)\r\n }\r\n return f\r\n }\r\n}\r\n\r\nfunction showHelp (): void {\r\n console.log('this help page')\r\n console.log('npm run cmd')\r\n console.log('npm run cmd -- --help')\r\n console.log()\r\n\r\n console.log('token format i.e. [602] 687 (LegQty) = 33589')\r\n console.log('jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/quickfix/FIX.4.4/execution-report/fix.txt --delimiter=\"|\" --tokens')\r\n console.log()\r\n\r\n console.log('token format use fix repo dictionary')\r\n console.log('jsfix-cmd --dict=data/fix_repo/FIX.4.4/Base --fix=data/examples/quickfix/FIX.4.4/execution-report/fix.txt'\r\n + ' --delimiter=\"|\" --tokens')\r\n console.log()\r\n\r\n console.log('structure format i.e. show locations of components etc.')\r\n console.log('jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt' +\r\n ' --delimiter=\"|\" --tokens --structures')\r\n console.log()\r\n\r\n console.log('full JS object in JSON format.')\r\n console.log('jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt' +\r\n ' --delimiter=\"|\" --tokens --objects')\r\n console.log()\r\n\r\n console.log('full JS object in JSON format - filter only type messages.')\r\n console.log('jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt' +\r\n ' --delimiter=\"|\" --tokens --type=8 --objects')\r\n console.log()\r\n\r\n console.log('timing stats and message counts. Structured parsing of all messages.')\r\n console.log('jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt --stats')\r\n console.log()\r\n\r\n console.log('encode a json object to fix format')\r\n console.log('jsfix-cmd --json=data/examples/FIX.4.4/quickfix/execution-report/object.json' +\r\n ' --session=data/session.json --type=8 --delimiter=\"|\"')\r\n console.log()\r\n\r\n console.log('display field definition')\r\n console.log('jsfix-cmd --dict=data/FIX44.xml --field=MsgType|35')\r\n console.log()\r\n\r\n console.log('display field use fix repo dictionary e.g. 271 MDEntrySize QTY Quantity or volume represented by the Market Data Entry.')\r\n console.log('jsfix-cmd --dict=data/fix_repo/FIX.4.4/Base --field=MsgType')\r\n console.log('jsfix-cmd --dict=data/fix_repo/FIX.4.4/Base --field=35')\r\n console.log()\r\n\r\n console.log('script to describe field in repository version 4.4')\r\n console.log('npm run repo44 -- --field=8')\r\n console.log()\r\n\r\n console.log('script to describe field in fixml')\r\n console.log('npm run fixml -- --field=50')\r\n console.log()\r\n\r\n console.log('generate unit test set of files - i.e. randomly generate an object, encode to fix. density 1 is all fields')\r\n console.log('jsfix-cmd --generate --type=AE --density=0.8 --unit --delimiter=\"|\" --session=data/session/test-initiator.json')\r\n console.log('npm run repo44-unit -- --type=AE')\r\n console.log('test script with no repeat groups')\r\n console.log('npm run repo44-unit -- --type=AE --groups=false')\r\n console.log()\r\n\r\n console.log('generate a fix log of randomly generated but syntactically correct messages')\r\n console.log('jsfix-cmd --generate --density=0.8 --repeats=50 --script --delimiter=\"|\" --session=data/session/test-initiator.json')\r\n console.log('npm run repo44-script')\r\n console.log('parse above generated script')\r\n console.log('npm run repo44-repscr')\r\n console.log()\r\n\r\n console.log('replay example repo fix file of 50 messages.')\r\n console.log('jsfix-cmd --session=data/session/test-initiator.json --fix=data/examples/FIX.4.4/fix.txt --delimiter=\"|\" --stats')\r\n console.log('npm run repo44-replay -- --stats')\r\n console.log('npm run repo44-replay -- --objects')\r\n console.log('npm run repo44-replay -- --tokens')\r\n console.log('npm run repo44-replay -- --structures')\r\n console.log()\r\n\r\n console.log('benchmark parse a message')\r\n console.log('jsfix-cmd --delimiter=\"|\" --session=data/session/test-initiator.json --fix=data/examples/FIX.4.4/repo/trade-capture-no-groups/fix.txt --benchmark')\r\n console.log('npm run repo44-bench -- --fix=data/examples/FIX.4.4/repo/trade-capture-no-groups/fix.txt')\r\n console.log()\r\n\r\n console.log('compile typescript interfaces - i.e. outputs to src/types/FIX4.4 - requires set and enum sub folders')\r\n console.log('npm run cmd -- --dict=repo40 --compile')\r\n console.log('npm run cmd -- --dict=repo41 --compile')\r\n console.log('npm run cmd -- --dict=repo42 --compile')\r\n console.log('npm run cmd -- --dict=repo43 --compile')\r\n console.log('npm run cmd -- --dict=repo44 --compile')\r\n console.log('npm run cmd -- --dict=repo50 --compile')\r\n console.log('npm run cmd -- --dict=repo50sp1 --compile')\r\n console.log('npm run cmd -- --dict=repo50sp2 --compile')\r\n console.log('npm run cmd -- --dict=repofixml --compile')\r\n console.log('npm run cmd -- --dict=qf44 --compile')\r\n console.log('npm run cmd -- --dict=data/handmade.xml --compile --output=src/types/handmade')\r\n\r\n console.log()\r\n}\r\n\r\nconst help: boolean = argv.h || argv.help\r\nif (help) {\r\n showHelp()\r\n} else {\r\n const cmd: JsfixCmd = new JsfixCmd()\r\n cmd.exec().then((res: boolean) => {\r\n if (!res) {\r\n showHelp()\r\n }\r\n }).catch((e: Error) => {\r\n console.log(`error ${e.message}`)\r\n })\r\n}\r\n"]}
@@ -10,11 +10,11 @@ class AppLauncher extends launcher_1.Launcher {
10
10
  super('data/session/test-http-initiator.json', 'data/session/test-http-acceptor.json');
11
11
  }
12
12
  getAcceptor(config) {
13
- return (0, fixml_1.acceptor)(config, (c) => new http_server_1.HttpServer(c));
13
+ return fixml_1.acceptor(config, (c) => new http_server_1.HttpServer(c));
14
14
  }
15
15
  getInitiator(config) {
16
16
  config.description.application.http.adapter = new http_1.HttpJsonSampleAdapter(config);
17
- return (0, http_1.httpInitiator)(config, (c) => new http_client_1.HttpClient(c));
17
+ return http_1.httpInitiator(config, (c) => new http_client_1.HttpClient(c));
18
18
  }
19
19
  }
20
20
  const l = new AppLauncher();
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/http/oms/app.ts"],"names":[],"mappings":";;AAAA,+CAA0C;AAC1C,+CAA0C;AAE1C,6CAAyC;AACzC,kDAA8E;AAC9E,oDAAmD;AAEnD,MAAM,WAAY,SAAQ,mBAAQ;IAChC;QACE,KAAK,CACH,uCAAuC,EACvC,sCAAsC,CAAC,CAAA;IAC3C,CAAC;IAES,WAAW,CAAE,MAAoB;QACzC,OAAO,IAAA,gBAAQ,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,wBAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACnD,CAAC;IAES,YAAY,CAAE,MAAoB;QAC1C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,4BAAqB,CAAC,MAAM,CAAC,CAAA;QAC/E,OAAO,IAAA,oBAAa,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,wBAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC;CACF;AAED,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAA;AAC3B,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AAC1B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChB,CAAC,CAAC,CAAA","sourcesContent":["import { HttpServer } from './http-server'\r\nimport { HttpClient } from './http-client'\r\nimport { IJsFixConfig } from '../../../config'\r\nimport { Launcher } from '../../launcher'\r\nimport { httpInitiator, HttpJsonSampleAdapter } from '../../../transport/http'\r\nimport { acceptor } from '../../../transport/fixml'\r\n\r\nclass AppLauncher extends Launcher {\r\n public constructor () {\r\n super(\r\n 'data/session/test-http-initiator.json',\r\n 'data/session/test-http-acceptor.json')\r\n }\r\n\r\n protected getAcceptor (config: IJsFixConfig): Promise<any> {\r\n return acceptor(config, (c) => new HttpServer(c))\r\n }\r\n\r\n protected getInitiator (config: IJsFixConfig): Promise<any> {\r\n config.description.application.http.adapter = new HttpJsonSampleAdapter(config)\r\n return httpInitiator(config, (c) => new HttpClient(c))\r\n }\r\n}\r\n\r\nconst l = new AppLauncher()\r\nl.run().then(() => {\r\n console.log('finished.')\r\n}).catch(e => {\r\n console.log(e)\r\n})\r\n"]}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/http/oms/app.ts"],"names":[],"mappings":";;AAAA,+CAA0C;AAC1C,+CAA0C;AAE1C,6CAAyC;AACzC,kDAA8E;AAC9E,oDAAmD;AAEnD,MAAM,WAAY,SAAQ,mBAAQ;IAChC;QACE,KAAK,CACH,uCAAuC,EACvC,sCAAsC,CAAC,CAAA;IAC3C,CAAC;IAES,WAAW,CAAE,MAAoB;QACzC,OAAO,gBAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,wBAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACnD,CAAC;IAES,YAAY,CAAE,MAAoB;QAC1C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,4BAAqB,CAAC,MAAM,CAAC,CAAA;QAC/E,OAAO,oBAAa,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,wBAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC;CACF;AAED,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAA;AAC3B,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AAC1B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChB,CAAC,CAAC,CAAA","sourcesContent":["import { HttpServer } from './http-server'\r\nimport { HttpClient } from './http-client'\r\nimport { IJsFixConfig } from '../../../config'\r\nimport { Launcher } from '../../launcher'\r\nimport { httpInitiator, HttpJsonSampleAdapter } from '../../../transport/http'\r\nimport { acceptor } from '../../../transport/fixml'\r\n\r\nclass AppLauncher extends Launcher {\r\n public constructor () {\r\n super(\r\n 'data/session/test-http-initiator.json',\r\n 'data/session/test-http-acceptor.json')\r\n }\r\n\r\n protected getAcceptor (config: IJsFixConfig): Promise<any> {\r\n return acceptor(config, (c) => new HttpServer(c))\r\n }\r\n\r\n protected getInitiator (config: IJsFixConfig): Promise<any> {\r\n config.description.application.http.adapter = new HttpJsonSampleAdapter(config)\r\n return httpInitiator(config, (c) => new HttpClient(c))\r\n }\r\n}\r\n\r\nconst l = new AppLauncher()\r\nl.run().then(() => {\r\n console.log('finished.')\r\n}).catch(e => {\r\n console.log(e)\r\n})\r\n"]}