jspurefix 5.10.2 → 5.10.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/buffer/encode-proxy.js.map +1 -1
- package/dist/buffer/fixml/fixml-encoder.js.map +1 -1
- package/dist/buffer/msg-view.js.map +1 -1
- package/dist/config/winston-logger.js.map +1 -1
- package/dist/dictionary/compiler/standard-snippet.js +2 -2
- package/dist/dictionary/compiler/standard-snippet.js.map +1 -1
- package/dist/dictionary/parser/fixml/components-parser.js.map +1 -1
- package/dist/dictionary/parser/fixml/fields-parser.js.map +1 -1
- package/dist/dictionary/parser/fixml/include-graph.js.map +1 -1
- package/dist/jsfix-bench.js.map +1 -1
- package/dist/jsfix-cmd.js +2 -2
- package/dist/jsfix-cmd.js.map +1 -1
- package/dist/runtime/session-container.js +11 -8
- package/dist/runtime/session-container.js.map +1 -1
- package/dist/sample/http/oms/app.js.map +1 -1
- package/dist/sample/http/oms/oms-factory.js.map +1 -1
- package/dist/sample/tcp/qf-md/app.js.map +1 -1
- package/dist/sample/tcp/skeleton/app.js.map +1 -1
- package/dist/sample/tcp/trade-capture/app-launcher.js.map +1 -1
- package/dist/store/fix-msg-memory-store.js.map +1 -1
- package/dist/transport/duplex/http-duplex.d.ts +1 -1
- package/dist/transport/duplex/http-duplex.js +2 -5
- package/dist/transport/duplex/http-duplex.js.map +1 -1
- package/dist/transport/fixml/fixml-session-msg-factory.js.map +1 -1
- package/dist/transport/session/clone-session-description.js.map +1 -1
- package/dist/transport/tcp/tls-options-factory.js.map +1 -1
- package/jsfix.test_client.txt +62 -62
- package/jsfix.test_server.txt +72 -72
- package/package.json +5 -5
- package/src/buffer/encode-proxy.ts +1 -1
- package/src/buffer/fixml/fixml-encoder.ts +1 -1
- package/src/buffer/msg-view.ts +1 -1
- package/src/config/winston-logger.ts +1 -1
- package/src/dictionary/compiler/standard-snippet.ts +2 -2
- package/src/dictionary/parser/fixml/components-parser.ts +2 -2
- package/src/dictionary/parser/fixml/fields-parser.ts +1 -1
- package/src/dictionary/parser/fixml/include-graph.ts +1 -1
- package/src/jsfix-bench.ts +1 -1
- package/src/jsfix-cmd.ts +2 -2
- package/src/runtime/session-container.ts +12 -4
- package/src/sample/http/oms/app.ts +1 -1
- package/src/sample/http/oms/oms-factory.ts +4 -4
- package/src/sample/tcp/qf-md/app.ts +1 -1
- package/src/sample/tcp/skeleton/app.ts +1 -1
- package/src/sample/tcp/trade-capture/app-launcher.ts +1 -1
- package/src/store/fix-msg-memory-store.ts +1 -1
- package/src/transport/duplex/http-duplex.ts +4 -2
- package/src/transport/fixml/fixml-session-msg-factory.ts +5 -5
- package/src/transport/session/clone-session-description.ts +1 -1
- package/src/transport/tcp/tls-options-factory.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"include-graph.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/fixml/include-graph.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"include-graph.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/fixml/include-graph.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,2CAA4B;AAC5B,uCAAwB;AAkBxB,MAAa,YAAY;IAIvB,YAA6B,IAAY,EAAkB,IAAY;QAA1C,SAAI,GAAJ,IAAI,CAAQ;QAAkB,SAAI,GAAJ,IAAI,CAAQ;IACvE,CAAC;IAEY,KAAK;;YAChB,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjD,IAAI,CAAC,WAAW,EAAE,CAAA;YAClB,IAAI,CAAC,QAAQ,EAAE,CAAA;QACjB,CAAC;KAAA;IAEM,OAAO,CAAE,IAAY;QAC1B,MAAM,KAAK,GAAuB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACtD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAClC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC3B,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,aAAa,CAAE,KAAa,EAAE,OAAiB;QACrD,MAAM,IAAI,GAAe,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACrB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;gBAChC,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IAEO,QAAQ;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAA4B,CAAC,CAA4B,EAAE,OAAiB,EAAE,EAAE;YAC/G,MAAM,MAAM,GAAuB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAC5D,IAAI,MAAM,IAAI,IAAI;gBAAE,OAAO,CAAC,CAAA;YAC5B,IAAI,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG;oBACvB,IAAI,EAAE,OAAO,CAAC,MAAM;oBACpB,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,EAAE;iBACI,CAAA;YACjB,CAAC;YACD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;gBACrC,MAAM,KAAK,GAAuB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBAC9C,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBACtC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBAC9B,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAO,CAAC,CAAA;QACV,CAAC,EAAE,EAAE,CAAC,CAAA;IACR,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,GAAW,CAAC,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAsB,EAAE,OAAiB,EAAE,EAAE;YAC9E,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAC/B,CAAC;YACD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;gBACrC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACd,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAO,CAAC,CAAA;QACV,CAAC,EAAE,IAAI,GAAG,EAAkB,CAAC,CAAA;IAC/B,CAAC;IAEa,YAAY,CAAE,IAAY;;YACtC,OAAO,MAAM,IAAI,OAAO,CAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrD,MAAM,QAAQ,GAAa,EAAE,CAAA;gBAC7B,MAAM,IAAI,GAAkB,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;gBAC3E,MAAM,SAAS,GAAc,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;gBAClE,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC/B,MAAM,OAAO,GAAa,IAAI,CAAA;oBAC9B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;wBACrB,KAAK,YAAY,CAAC,CAAC,CAAC;4BAClB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;4BAChD,MAAK;wBACP,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAA;gBACF,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;oBACzB,OAAO,CAAC,QAAQ,CAAC,CAAA;gBACnB,CAAC,CAAC,CAAA;gBACF,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBAC1B,MAAM,CAAC,CAAC,CAAC,CAAA;gBACX,CAAC,CAAC,CAAA;gBACF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACtB,CAAC,CAAC,CAAA;QACJ,CAAC;KAAA;IAEa,WAAW,CAAE,IAAY;;YACrC,MAAM,CAAC,GAAU,EAAE,CAAA;YACnB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YACd,MAAM,OAAO,GAAe,EAAE,CAAA;YAC9B,MAAM,IAAI,GAAyB,IAAI,GAAG,EAAmB,CAAA;YAC7D,OAAO,MAAM,IAAI,OAAO,CAAa,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC7D,IAAI,CAAC;oBACH,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpB,MAAM,KAAK,GAAa,CAAC,CAAC,GAAG,EAAE,CAAA;wBAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;4BACzB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gCACnB,SAAQ;4BACV,CAAC;4BACD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;4BACpB,MAAM,QAAQ,GAAa,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;4BACxD,OAAO,CAAC,IAAI,CAAC;gCACX,MAAM,EAAE,IAAI;gCACZ,QAAQ,EAAE,QAAQ;6BACnB,CAAC,CAAA;4BACF,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;wBAClB,CAAC;oBACH,CAAC;oBACD,OAAO,CAAC,OAAO,CAAC,CAAA;gBAClB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,CAAC,CAAC,CAAC,CAAA;gBACX,CAAC;YACH,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;CACF;AAjID,oCAiIC","sourcesContent":["import { SAXStream } from '../../dict-primitive'\nimport { INumericKeyed } from '../../../collections/collection'\nimport * as path from 'path'\nimport * as fs from 'fs'\nimport { ISaxNode } from '../../sax-node'\n\nexport interface IInclude {\n parent: string\n children: string[]\n}\n\nexport interface IGraphNode {\n file: string\n node: number\n edges: number[]\n}\n\n/*\n construct a dependency graph from all the xsd files to compute an order to build the definition\n */\n\nexport class IncludeGraph {\n private nodes: Map<string, number>\n private includes: IInclude[]\n private graph: INumericKeyed<IGraphNode>\n constructor (public readonly root: string, public readonly main: string) {\n }\n\n public async build (): Promise<any> {\n this.includes = await this.getIncludes(this.main)\n this.assignNodes()\n this.getGraph()\n }\n\n public resolve (file: string): string[] | null {\n const label: number | undefined = this.nodes.get(file)\n if (label == null) {\n return null\n }\n const depends: number[] = []\n this.resolve_nodes(label, depends)\n return depends.map((i: number) => {\n return this.graph[i].file\n })\n }\n\n private resolve_nodes (label: number, depends: number[]): void {\n const node: IGraphNode = this.graph[label]\n if (node) {\n node.edges.forEach(e => {\n if (!depends.includes(e)) {\n this.resolve_nodes(e, depends)\n }\n })\n }\n depends.push(label)\n }\n\n private getGraph (): void {\n const nodes = this.nodes\n this.graph = this.includes.reduce<INumericKeyed<IGraphNode>>((a: INumericKeyed<IGraphNode>, current: IInclude) => {\n const parent: number | undefined = nodes.get(current.parent)\n if (parent == null) return a\n let parentNode = a[parent]\n if (!parentNode) {\n a[parent] = parentNode = {\n file: current.parent,\n node: parent,\n edges: []\n } as IGraphNode\n }\n current.children.forEach((s: string) => {\n const child: number | undefined = nodes.get(s)\n if (child) {\n if (!parentNode.edges.includes(child)) {\n parentNode.edges.push(child)\n }\n }\n })\n return a\n }, {})\n }\n\n private assignNodes (): void {\n let next: number = 0\n this.nodes = this.includes.reduce((a: Map<string, number>, current: IInclude) => {\n if (!a.has(current.parent)) {\n a.set(current.parent, next++)\n }\n current.children.forEach((c: string) => {\n if (!a.has(c)) {\n a.set(c, next++)\n }\n })\n return a\n }, new Map<string, number>())\n }\n\n private async scanIncludes (file: string): Promise<string[]> {\n return await new Promise<string[]>((resolve, reject) => {\n const includes: string[] = []\n const pass: fs.ReadStream = fs.createReadStream(path.join(this.root, file))\n const saxStream: SAXStream = require('sax').createStream(true, {})\n saxStream.on('opentag', (node) => {\n const saxNode: ISaxNode = node\n switch (saxNode.name) {\n case 'xs:include': {\n includes.push(saxNode.attributes.schemaLocation)\n break\n }\n }\n })\n saxStream.on('ready', () => {\n resolve(includes)\n })\n saxStream.on('error', (r) => {\n reject(r)\n })\n pass.pipe(saxStream)\n })\n }\n\n private async getIncludes (main: string): Promise<IInclude[]> {\n const q: any[] = []\n q.push([main])\n const ordered: IInclude[] = []\n const seen: Map<string, boolean> = new Map<string, boolean>()\n return await new Promise<IInclude[]>(async (resolve, reject) => {\n try {\n while (q.length > 0) {\n const batch: string[] = q.pop()\n for (const next of batch) {\n if (seen.has(next)) {\n continue\n }\n seen.set(next, true)\n const includes: string[] = await this.scanIncludes(next)\n ordered.push({\n parent: next,\n children: includes\n })\n q.push(includes)\n }\n }\n resolve(ordered)\n } catch (e) {\n reject(e)\n }\n })\n }\n}\n"]}
|
package/dist/jsfix-bench.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsfix-bench.js","sourceRoot":"","sources":["../src/jsfix-bench.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata'\n\nimport * as path from 'path'\nimport * as fs from 'fs'\nimport minimist = require('minimist')\nimport buildOptions from 'minimist-options'\n\nimport { AsciiChars } from './buffer/ascii'\nimport { IJsFixConfig } from './config'\nimport { DefinitionFactory } from './util'\nimport { SessionContainer } from './runtime'\nimport { DITokens } from './runtime/di-tokens'\nimport {\n BenchRunner,\n IBenchCase,\n IBenchOptions,\n IBenchSuiteResult,\n ParseCase,\n ParseDepth,\n defaultBenchOptions,\n formatComparison,\n formatSuite\n} from './benchmark'\n\nconst options = buildOptions({\n dict: {\n type: 'string',\n alias: 'd',\n default: 'qf44'\n },\n\n fix: {\n type: 'string',\n alias: 'f',\n default: 'data/examples/FIX.4.4/quickfix/execution-report/fix.txt'\n },\n\n session: {\n type: 'string',\n alias: 's',\n default: 'data/session/test-initiator.json'\n },\n\n delimiter: {\n type: 'string',\n alias: 'l',\n default: '|'\n },\n\n depth: {\n type: 'string',\n default: 'view,object'\n },\n\n rounds: {\n type: 'number',\n default: defaultBenchOptions.rounds\n },\n\n msgs: {\n type: 'number',\n default: defaultBenchOptions.operationsPerRound\n },\n\n warmup: {\n type: 'number',\n default: defaultBenchOptions.warmupOperations\n },\n\n label: {\n type: 'string',\n default: 'jspurefix'\n },\n\n save: {\n type: 'string'\n },\n\n baseline: {\n type: 'string'\n },\n\n json: {\n type: 'boolean',\n default: false\n },\n\n help: {\n type: 'boolean',\n alias: 'h',\n default: false\n }\n})\n\nconst argv: any = minimist(process.argv.slice(2), options)\n\nconst root: string = path.join(__dirname, '../')\n\nfunction norm (p: string): string {\n return path.isAbsolute(p) ? p : path.join(root, p)\n}\n\nfunction usage (): void {\n console.log('measure the parse path and what it costs in time and in garbage')\n console.log()\n console.log(' --fix=<path> fix log to parse, defaults to a 4.4 execution report')\n console.log(' --dict=<name> dictionary, e.g. qf44, repo44, qf50sp2')\n console.log(' --delimiter=<char> field delimiter in the log, defaults to |')\n console.log(' --depth=view,object which stages to measure, comma separated')\n console.log(' --rounds=<n> measured rounds, one sample each')\n console.log(' --msgs=<n> messages per round')\n console.log(' --warmup=<n> messages discarded before measuring')\n console.log(' --save=<path> write the suite to json')\n console.log(' --baseline=<path> compare against a previously saved suite')\n console.log(' --json print the suite as json instead of a report')\n console.log()\n console.log('run under --expose-gc so rounds can be isolated and heap read cleanly:')\n console.log(' node --expose-gc dist/jsfix-bench --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt')\n console.log(' npm run bench')\n}\n\nasync function makeConfig (): Promise<IJsFixConfig> {\n const sys = new SessionContainer()\n sys.registerGlobal('error')\n const sessionDescription = require(norm(argv.session))\n const container = await sys.makeSystem(sessionDescription)\n const config = container.resolve<IJsFixConfig>(DITokens.IJsFixConfig)\n config.definitions = await new DefinitionFactory().getDefinitions(argv.dict)\n // the parser reads the delimiter when it is constructed, so this has to be\n // settled before any case is built\n config.delimiter = AsciiChars.firstChar(argv.delimiter)\n return config\n}\n\nfunction requestedDepths (): ParseDepth[] {\n const known = new Map<string, ParseDepth>([\n ['view', ParseDepth.View],\n ['object', ParseDepth.Object]\n ])\n const asked = String(argv.depth).split(',').map(d => d.trim().toLowerCase()).filter(d => d.length > 0)\n return asked.map(d => {\n const depth = known.get(d)\n if (!depth) {\n throw new Error(`unknown depth ${d}, expected view or object`)\n }\n return depth\n })\n}\n\nfunction readSuite (p: string): IBenchSuiteResult {\n return JSON.parse(fs.readFileSync(norm(p), 'utf8'))\n}\n\nasync function main (): Promise<void> {\n if (argv.help) {\n usage()\n return\n }\n const fixPath = norm(argv.fix)\n if (!fs.existsSync(fixPath)) {\n throw new Error(`no such fix log ${fixPath}`)\n }\n const contents = fs.readFileSync(fixPath, 'utf8')\n const config = await makeConfig()\n\n const cases: ParseCase[] = requestedDepths().map(depth =>\n new ParseCase(`parse:${depth}`, { config, contents, depth }))\n\n // every case walks the same input, so one alignment covers the suite and all\n // of them stay directly comparable\n const perInvocation = cases[0].operationsPerInvocation\n const operationsPerRound = cases[0].alignOperations(argv.msgs)\n const benchOptions: IBenchOptions = {\n warmupOperations: cases[0].alignOperations(argv.warmup),\n rounds: argv.rounds,\n operationsPerRound,\n gcBetweenRounds: true\n }\n\n console.log(`${path.relative(root, fixPath)} ${perInvocation} msg/pass dict ${argv.dict}`)\n const suite = await new BenchRunner(benchOptions).runAll(argv.label, cases as IBenchCase[])\n\n if (argv.json) {\n console.log(JSON.stringify(suite, null, 2))\n } else {\n console.log()\n console.log(formatSuite(suite))\n }\n if (argv.baseline) {\n console.log()\n console.log(formatComparison(readSuite(argv.baseline), suite))\n }\n if (argv.save) {\n const target = norm(argv.save)\n fs.mkdirSync(path.dirname(target), { recursive: true })\n fs.writeFileSync(target, JSON.stringify(suite, null, 2), 'utf8')\n console.log(`saved ${path.relative(root, target)}`)\n }\n}\n\nmain().catch(e => {\n console.error(e instanceof Error ? e.message : e)\n process.exit(1)\n})\n"]}
|
|
1
|
+
{"version":3,"file":"jsfix-bench.js","sourceRoot":"","sources":["../src/jsfix-bench.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata'\n\nimport * as path from 'path'\nimport * as fs from 'fs'\nimport minimist = require('minimist')\nimport buildOptions from 'minimist-options'\n\nimport { AsciiChars } from './buffer/ascii'\nimport { IJsFixConfig } from './config'\nimport { DefinitionFactory } from './util'\nimport { SessionContainer } from './runtime'\nimport { DITokens } from './runtime/di-tokens'\nimport {\n BenchRunner,\n IBenchCase,\n IBenchOptions,\n IBenchSuiteResult,\n ParseCase,\n ParseDepth,\n defaultBenchOptions,\n formatComparison,\n formatSuite\n} from './benchmark'\n\nconst options = buildOptions({\n dict: {\n type: 'string',\n alias: 'd',\n default: 'qf44'\n },\n\n fix: {\n type: 'string',\n alias: 'f',\n default: 'data/examples/FIX.4.4/quickfix/execution-report/fix.txt'\n },\n\n session: {\n type: 'string',\n alias: 's',\n default: 'data/session/test-initiator.json'\n },\n\n delimiter: {\n type: 'string',\n alias: 'l',\n default: '|'\n },\n\n depth: {\n type: 'string',\n default: 'view,object'\n },\n\n rounds: {\n type: 'number',\n default: defaultBenchOptions.rounds\n },\n\n msgs: {\n type: 'number',\n default: defaultBenchOptions.operationsPerRound\n },\n\n warmup: {\n type: 'number',\n default: defaultBenchOptions.warmupOperations\n },\n\n label: {\n type: 'string',\n default: 'jspurefix'\n },\n\n save: {\n type: 'string'\n },\n\n baseline: {\n type: 'string'\n },\n\n json: {\n type: 'boolean',\n default: false\n },\n\n help: {\n type: 'boolean',\n alias: 'h',\n default: false\n }\n})\n\nconst argv: any = minimist(process.argv.slice(2), options)\n\nconst root: string = path.join(__dirname, '../')\n\nfunction norm (p: string): string {\n return path.isAbsolute(p) ? p : path.join(root, p)\n}\n\nfunction usage (): void {\n console.log('measure the parse path and what it costs in time and in garbage')\n console.log()\n console.log(' --fix=<path> fix log to parse, defaults to a 4.4 execution report')\n console.log(' --dict=<name> dictionary, e.g. qf44, repo44, qf50sp2')\n console.log(' --delimiter=<char> field delimiter in the log, defaults to |')\n console.log(' --depth=view,object which stages to measure, comma separated')\n console.log(' --rounds=<n> measured rounds, one sample each')\n console.log(' --msgs=<n> messages per round')\n console.log(' --warmup=<n> messages discarded before measuring')\n console.log(' --save=<path> write the suite to json')\n console.log(' --baseline=<path> compare against a previously saved suite')\n console.log(' --json print the suite as json instead of a report')\n console.log()\n console.log('run under --expose-gc so rounds can be isolated and heap read cleanly:')\n console.log(' node --expose-gc dist/jsfix-bench --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt')\n console.log(' npm run bench')\n}\n\nasync function makeConfig (): Promise<IJsFixConfig> {\n const sys = new SessionContainer()\n sys.registerGlobal('error')\n const sessionDescription = require(norm(argv.session))\n const container = await sys.makeSystem(sessionDescription)\n const config = container.resolve<IJsFixConfig>(DITokens.IJsFixConfig)\n config.definitions = await new DefinitionFactory().getDefinitions(argv.dict)\n // the parser reads the delimiter when it is constructed, so this has to be\n // settled before any case is built\n config.delimiter = AsciiChars.firstChar(argv.delimiter)\n return config\n}\n\nfunction requestedDepths (): ParseDepth[] {\n const known = new Map<string, ParseDepth>([\n ['view', ParseDepth.View],\n ['object', ParseDepth.Object]\n ])\n const asked = String(argv.depth).split(',').map(d => d.trim().toLowerCase()).filter(d => d.length > 0)\n return asked.map(d => {\n const depth = known.get(d)\n if (!depth) {\n throw new Error(`unknown depth ${d}, expected view or object`)\n }\n return depth\n })\n}\n\nfunction readSuite (p: string): IBenchSuiteResult {\n return JSON.parse(fs.readFileSync(norm(p), 'utf8'))\n}\n\nasync function main (): Promise<void> {\n if (argv.help) {\n usage()\n return\n }\n const fixPath = norm(argv.fix)\n if (!fs.existsSync(fixPath)) {\n throw new Error(`no such fix log ${fixPath}`)\n }\n const contents = fs.readFileSync(fixPath, 'utf8')\n const config = await makeConfig()\n\n const cases: ParseCase[] = requestedDepths().map(depth =>\n new ParseCase(`parse:${depth}`, { config, contents, depth }))\n\n // every case walks the same input, so one alignment covers the suite and all\n // of them stay directly comparable\n const perInvocation = cases[0].operationsPerInvocation\n const operationsPerRound = cases[0].alignOperations(argv.msgs)\n const benchOptions: IBenchOptions = {\n warmupOperations: cases[0].alignOperations(argv.warmup),\n rounds: argv.rounds,\n operationsPerRound,\n gcBetweenRounds: true\n }\n\n console.log(`${path.relative(root, fixPath)} ${perInvocation} msg/pass dict ${argv.dict}`)\n const suite = await new BenchRunner(benchOptions).runAll(argv.label, cases)\n\n if (argv.json) {\n console.log(JSON.stringify(suite, null, 2))\n } else {\n console.log()\n console.log(formatSuite(suite))\n }\n if (argv.baseline) {\n console.log()\n console.log(formatComparison(readSuite(argv.baseline), suite))\n }\n if (argv.save) {\n const target = norm(argv.save)\n fs.mkdirSync(path.dirname(target), { recursive: true })\n fs.writeFileSync(target, JSON.stringify(suite, null, 2), 'utf8')\n console.log(`saved ${path.relative(root, target)}`)\n }\n}\n\nmain().catch(e => {\n console.error(e instanceof Error ? e.message : e)\n process.exit(1)\n})\n"]}
|
package/dist/jsfix-cmd.js
CHANGED
|
@@ -61,7 +61,7 @@ const runtime_1 = require("./runtime");
|
|
|
61
61
|
const di_tokens_1 = require("./runtime/di-tokens");
|
|
62
62
|
const minimist_options_1 = __importDefault(require("minimist-options"));
|
|
63
63
|
const quick_fix_xml_file_builder_1 = require("./dictionary/parser/quickfix/quick-fix-xml-file-builder");
|
|
64
|
-
const fs = require('
|
|
64
|
+
const fs = require('fs');
|
|
65
65
|
const options = (0, minimist_options_1.default)({
|
|
66
66
|
dict: {
|
|
67
67
|
type: 'string',
|
|
@@ -436,7 +436,7 @@ class JsfixCmd {
|
|
|
436
436
|
ensureExists(path) {
|
|
437
437
|
return __awaiter(this, void 0, void 0, function* () {
|
|
438
438
|
return yield new Promise((resolve, reject) => {
|
|
439
|
-
fs.
|
|
439
|
+
fs.mkdir(path, { recursive: true }, (err) => {
|
|
440
440
|
if (err) {
|
|
441
441
|
reject(err);
|
|
442
442
|
}
|
package/dist/jsfix-cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsfix-cmd.js","sourceRoot":"","sources":["../src/jsfix-cmd.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata'\n\nimport { ElasticBuffer, MsgView, MsgParser } from './buffer'\nimport { AsciiParser, AsciiView, AsciiChars } from './buffer/ascii'\nimport { ILooseObject } from './collections/collection'\nimport { SimpleFieldDefinition, FixDefinitions } from './dictionary/definition'\nimport { MessageGenerator, JsonHelper, getWords, DefinitionFactory } from './util'\nimport { ISessionDescription, FileDuplex, StringDuplex } from './transport'\n\nimport { MsgTag } from './types'\nimport { IJsFixConfig } from './config'\n\nimport * as util from 'util'\nimport minimist = require('minimist')\nimport * as path from 'path'\nimport { MsgTransport } from './transport/factory'\nimport { EnumCompiler, ICompilerSettings, MsgCompiler } from './dictionary/compiler'\nimport { AsciiMsgTransmitter } from './transport/ascii/ascii-msg-transmitter'\nimport { SessionContainer } from './runtime'\nimport { DITokens } from './runtime/di-tokens'\nimport buildOptions from 'minimist-options'\nimport { QuickFixXmlFileBuilder } from './dictionary/parser/quickfix/quick-fix-xml-file-builder'\n\nconst fs = require('node-fs-extra')\n\nconst options = buildOptions({\n dict: {\n type: 'string',\n alias: 'd',\n default: 'data/FIX44.xml'\n },\n\n type: {\n type: 'string-array',\n alias: 't'\n },\n\n fix: {\n type: 'string',\n alias: 'f',\n default: 'data/FIX44.xml'\n },\n\n session: {\n type: 'string',\n alias: 's'\n },\n\n delimiter: {\n type: 'string',\n alias: 'l',\n default: '|'\n },\n\n help: {\n type: 'boolean',\n alias: ['h'],\n default: false\n },\n\n unit: {\n type: 'boolean',\n alias: ['u'],\n default: false\n },\n\n generate: {\n type: 'boolean',\n alias: ['g'],\n default: false\n },\n\n stats: {\n type: 'boolean',\n alias: ['st'],\n default: false\n },\n\n tokens: {\n type: 'boolean',\n alias: ['t'],\n default: false\n },\n\n objects: {\n type: 'boolean',\n alias: ['o'],\n default: true\n },\n\n structures: {\n type: 'boolean',\n alias: ['r'],\n default: false\n },\n\n script: {\n type: 'boolean',\n alias: ['i'],\n default: false\n },\n\n compile: {\n type: 'boolean',\n alias: ['c'],\n default: false\n },\n\n groups: {\n type: 'boolean',\n alias: ['g'],\n default: true\n },\n\n density: {\n type: 'number',\n alias: 'd',\n default: 0.8\n },\n\n repeats: {\n type: 'number',\n alias: 'r',\n default: 1\n },\n\n arr: {\n type: 'array',\n alias: 'a',\n default: []\n }\n\n /*\n booleans: {\n type: 'boolean-array',\n alias: 'b',\n default: [true, false]\n },\n\n numbers: {\n type: 'number-array',\n alias: 'n',\n default: [0, 1]\n },\n\n published: 'boolean',\n\n // Special option for positional arguments (`_` in minimist)\n arguments: 'string'\n */\n})\n\nconst argv: any = minimist(process.argv.slice(2), options)\n\nenum PrintMode {\n Structure = 1,\n Object = 2,\n Verbose = 3,\n Stats = 4,\n Token = 5,\n Encoded = 6\n}\n\nenum Command {\n Generate = 1,\n Replay = 2,\n Lookup = 3,\n Encode = 4,\n Benchmark = 5,\n Compile = 6,\n Trim,\n Unknown = 8\n}\n\nclass ParseSummary {\n public readonly micros_per_msg: number\n public readonly chars_per_second: number\n public readonly fields_per_second: number\n public readonly content_length: number\n\n constructor (\n public readonly content: string,\n public readonly view: string,\n public readonly msg_type: string,\n public readonly iterations: number,\n public readonly elapsed_ms: number,\n public readonly fields: number\n ) {\n this.content_length = this.content.length\n this.micros_per_msg = (this.elapsed_ms / this.iterations) * 1000\n this.chars_per_second = Math.round(this.content_length * this.iterations / this.elapsed_ms * 1000)\n this.fields_per_second = Math.round(this.fields * this.iterations / this.elapsed_ms * 1000)\n }\n}\n\nexport class JsfixCmd {\n private readonly root: string = path.join(__dirname, '../')\n private definitions: FixDefinitions\n private jsonHelper: JsonHelper\n private session: AsciiMsgTransmitter\n private sessionDescription: ISessionDescription\n private delimiter: number = AsciiChars.Soh\n private stats: ILooseObject = {}\n private readonly filter: Map<string, boolean> = new Map<string, boolean>()\n private messages: number = 0\n private print: boolean = true\n\n private static getCommand (): Command {\n let command: Command = Command.Unknown\n if (argv.trim) {\n command = Command.Trim\n } else if (argv.compile) {\n command = Command.Compile\n } else if (argv.generate) {\n command = Command.Generate\n } else if (argv.fix) {\n command = argv.benchmark ? Command.Benchmark : Command.Replay\n } else if (argv.field) {\n command = Command.Lookup\n } else if (argv.json) {\n command = Command.Encode\n } else if (argv.msg) {\n command = Command.Lookup\n }\n return command\n }\n\n private static getPrintMode (): PrintMode {\n let mode: PrintMode = PrintMode.Stats\n if (argv.tokens) {\n mode = PrintMode.Token\n } else if (argv.stats) {\n mode = PrintMode.Stats\n } else if (argv.objects) {\n mode = PrintMode.Object\n } else if (argv.verbose) {\n mode = PrintMode.Verbose\n } else if (argv.structures) {\n mode = PrintMode.Structure\n } else if (argv.encoded) {\n mode = PrintMode.Encoded\n } else if (argv.trim) {\n mode = PrintMode.Object\n }\n return mode\n }\n\n private static async writeFile (name: string, api: string): Promise<void> {\n const writer = util.promisify(fs.writeFile)\n await writer(name, api, { encoding: 'utf8' }\n ).catch((e: Error) => {\n throw e\n })\n }\n\n public async exec (): Promise<any> {\n return await new Promise<any>((resolve, reject) => {\n this.init().then(async () => {\n let actioned: boolean = true\n const command = JsfixCmd.getCommand()\n\n switch (command) {\n case Command.Generate: {\n // produce a test message or a valid fix log of n messages\n await this.generate()\n break\n }\n\n case Command.Encode: {\n // encode a json message back to fix\n this.encode()\n break\n }\n\n case Command.Replay: {\n // parse a file into either objects, tokens, structures or stats\n const repeats: number = !isNaN(argv.repeats) ? argv.repeats : 1\n try {\n for (let i: number = 0; i < repeats; ++i) {\n await this.replay()\n }\n } catch (e) {\n reject(e)\n }\n break\n }\n\n case Command.Benchmark: {\n // time how long to parse 10000 repeats of contents of file\n const repeats: number = !isNaN(argv.repeats) ? argv.repeats : 10000\n try {\n const summary = await this.benchmark(repeats)\n console.log(JSON.stringify(summary, null, 4))\n } catch (e) {\n reject(e)\n }\n break\n }\n\n case Command.Lookup: {\n // lookup a field\n if (argv.field) {\n this.field()\n } else {\n this.msg()\n }\n break\n }\n\n case Command.Compile: {\n await this.compile()\n break\n }\n\n case Command.Trim: {\n const xml = this.trim()\n console.log(xml)\n break\n }\n\n case Command.Unknown:\n default: {\n actioned = false\n }\n }\n resolve(actioned)\n }).catch((e) => {\n reject(e)\n })\n })\n }\n\n private async firstMessage (t: MsgTransport): Promise<MsgView> {\n return await new Promise<MsgView>((resolve, reject) => {\n t.receiver.on('msg', (msgType: string, msgView: MsgView) => {\n resolve(msgView.clone())\n })\n t.receiver.on('error', (e) => {\n reject(e)\n })\n })\n }\n\n protected async generate (): Promise<void> {\n const lipPath: string = path.join(this.root, 'data/examples/lipsum.txt')\n const words: string[] = await getWords(lipPath)\n const generator = new MessageGenerator(words, this.definitions)\n let density = 1\n if (argv.density) {\n density = parseFloat(argv.density)\n }\n if (isNaN(density)) {\n console.log('density must be numeric in range > 0 density <= 1.0')\n return\n }\n\n if (argv.script) {\n await this.script(generator, density)\n } else {\n await this.single(generator, density)\n }\n }\n\n private async single (generator: MessageGenerator, density: number): Promise<void> {\n if (!argv.type) {\n console.log('specify type to generate e.g. --type = AE')\n return\n }\n const msgType: string = `${argv.type}`\n let makeGroups: boolean = true\n if (argv.groups) {\n makeGroups = argv.groups === 'true'\n }\n const obj: ILooseObject = generator.generate(msgType, density, makeGroups)\n console.log(JSON.stringify(obj, null, 4))\n const fix: string = this.encodeObject(msgType, obj)\n const ft: MsgTransport = new MsgTransport(1, this.session.config, new StringDuplex(fix))\n if (argv.unit) {\n await this.unitTest(fix, obj, ft)\n } else {\n this.subscribe(ft)\n }\n }\n\n private async script (generator: MessageGenerator, density: number): Promise<void> {\n const buffer: ElasticBuffer = new ElasticBuffer()\n const repeats: number = argv.repeats || 50\n const key: string = MsgTag.MsgType.toString()\n const sf = this.definitions.simple.get(key)\n const session: AsciiMsgTransmitter = this.session\n for (let i = 0; i < repeats; ++i) {\n const msgType: string = sf ? MessageGenerator.getRandomEnum(sf).toString() : ''\n console.log(`i = ${i} ${msgType}`)\n const obj: ILooseObject = generator.generate(msgType, density)\n session.encodeMessage(msgType, obj)\n buffer.writeBuffer(session.buffer.slice())\n buffer.writeString(require('os').EOL)\n }\n await JsfixCmd.writeFile('./fix.txt', buffer.slice().toString('utf8'))\n }\n\n private async unitTest (fix: string, obj: ILooseObject, ft: MsgTransport): Promise<void> {\n const view: MsgView = await this.firstMessage(ft)\n const summary = view?.structure?.summary()\n\n await JsfixCmd.writeFile('./fix.txt', fix)\n await JsfixCmd.writeFile('./object.json', JSON.stringify(obj, null, 4))\n await JsfixCmd.writeFile('./token.txt', view.toString())\n await JsfixCmd.writeFile('./structure.json', JSON.stringify(summary, null, 4))\n }\n\n private encodeObject (msgType: string, object: ILooseObject): string {\n const session: AsciiMsgTransmitter = this.session\n session.encodeMessage(msgType, object)\n return session.buffer.toString()\n }\n\n private msg (): void {\n const definitions = this.definitions\n const m = definitions.message.get(argv.msg)\n if (m) {\n console.log(m.toString())\n }\n }\n\n private field (): void {\n let sf: SimpleFieldDefinition | undefined\n const tag: number = parseInt(argv.field, 10)\n const definitions = this.definitions\n if (!isNaN(tag)) {\n sf = definitions.tagToSimple[tag]\n } else {\n sf = definitions.simple.get(argv.field)\n }\n if (sf) {\n console.log(sf.toString())\n }\n }\n\n async ensureExists (path: string): Promise<any> {\n return await new Promise<any>((resolve, reject) => {\n fs.mkdirp(path, (err: Error) => {\n if (err) {\n reject(err)\n } else {\n resolve(true)\n }\n })\n })\n }\n\n private async compileDefinitions (outputPath: string): Promise<void> {\n await this.ensureExists(path.join(outputPath, 'set'))\n await this.ensureExists(path.join(outputPath, 'enum'))\n const definitions = this.definitions\n const compilerSettings: ICompilerSettings = require('../data/compiler.json')\n compilerSettings.output = outputPath\n const msgCompiler: MsgCompiler = new MsgCompiler(definitions, compilerSettings)\n await msgCompiler.generate()\n const enumCompiler: EnumCompiler = new EnumCompiler(definitions, compilerSettings)\n const writeFile = path.join(compilerSettings.output, './enum/all-enum.ts')\n await enumCompiler.generate(writeFile)\n }\n\n private trim (): string {\n this.setFilter()\n const types = this.filter.size > 0 ? Array.from(this.filter.keys()) : Array.from(this.definitions.simple.get('MsgType')?.enums.keys() ?? [])\n const qfb = new QuickFixXmlFileBuilder(this.definitions)\n qfb.write(types)\n return qfb.elasticBuffer.toString()\n }\n\n private async compile (): Promise<void> {\n let output = argv.output\n const dp = new DefinitionFactory().getDictPath(argv.dict)\n if (dp) {\n output = dp.output\n }\n output = path.join(this.root, output)\n await this.compileDefinitions(output)\n }\n\n sys: SessionContainer\n config: IJsFixConfig\n\n private async init (): Promise<any> {\n let session: string = argv.session || 'data/session/test-initiator.json'\n this.sys = new SessionContainer()\n this.sys.registerGlobal('error')\n session = this.norm(session)\n this.sessionDescription = require(session)\n const container = await this.sys.makeSystem(this.sessionDescription)\n this.config = container.resolve<IJsFixConfig>(DITokens.IJsFixConfig)\n this.definitions = this.config.definitions\n let dict: string\n if (argv.dict) {\n dict = argv.dict\n const df = await new DefinitionFactory().getDefinitions(dict)\n this.config.definitions = df\n this.definitions = df\n }\n const definitions = this.definitions\n if (argv.delimiter) {\n this.delimiter = AsciiChars.firstChar(argv.delimiter)\n this.config.delimiter = this.delimiter\n }\n this.jsonHelper = new JsonHelper(definitions)\n if (argv.session) {\n this.session = container.resolve<AsciiMsgTransmitter>(DITokens.MsgTransmitter)\n }\n }\n\n private setFilter (): void {\n const types: string[] = []\n if (argv.type != null) {\n if (Array.isArray(argv.type)) {\n argv.type.forEach((mt: any) => {\n types.push(mt)\n })\n } else {\n argv.type.split(',').forEach((mt: string) => {\n types.push(mt)\n })\n }\n types.forEach((mt: any) => {\n this.filter.set(mt, true)\n })\n }\n }\n\n private async dispatch (ft: MsgTransport): Promise<any> {\n this.setFilter()\n let time: boolean = false\n if (argv.time || argv.stats) {\n this.print = false\n time = true\n }\n this.subscribe(ft)\n const startsAt: Date = new Date()\n await ft.wait()\n const elapsed: number = new Date().getTime() - startsAt.getTime()\n if (time) {\n console.log(`messages ${this.messages} elapsed ms ${elapsed}`)\n }\n if (argv.stats) {\n console.log(JSON.stringify(this.stats, null, 4))\n }\n }\n\n private subscribe (ft: MsgTransport): void {\n this.messages = 0\n this.stats = {}\n const filter = this.filter\n // the receiver is message parser which is piped from an input stream - file, socket\n ft.receiver.on('msg', (msgType: string, m: AsciiView) => {\n if (filter) {\n if (filter.has(msgType)) {\n return\n }\n }\n ++this.messages\n this.onMsg(msgType, m)\n })\n }\n\n private onMsg (msgType: string, m: MsgView): void {\n const mode: PrintMode = JsfixCmd.getPrintMode()\n const print = this.print\n const stats = this.stats\n switch (mode) {\n case PrintMode.Stats: {\n let i: number = 0\n if (!stats[msgType]) {\n i = 1\n } else {\n i = stats[msgType] as number + 1\n }\n stats[msgType] = i\n break\n }\n\n case PrintMode.Verbose: {\n const verbose = m.toVerbose()\n if (verbose) {\n console.log(verbose)\n }\n break\n }\n\n case PrintMode.Object: {\n const asObject: ILooseObject = m.toObject() as ILooseObject\n if (print) {\n const def = this.definitions.message.get(msgType)\n console.log(`${msgType} [${def?.name}] = ${JSON.stringify(asObject, null, 4)}`)\n console.log()\n }\n break\n }\n\n case PrintMode.Structure: {\n const summary = m?.structure?.summary()\n if (print) {\n console.log(JSON.stringify(summary, null, 4))\n }\n break\n }\n\n case PrintMode.Token: {\n const tokens = m.toString()\n if (print) {\n console.log(tokens)\n }\n break\n }\n\n case PrintMode.Encoded: {\n const fix: string = this.encodeObject(msgType, m.toObject() as ILooseObject)\n console.log(fix)\n break\n }\n\n default:\n throw new Error(`unknown mode ${mode}`)\n }\n }\n\n private async replay (): Promise<any> {\n if (!argv.fix) {\n console.log('provide a path to fix file i.e. --fix=data/examples/execution-report/fix.txt')\n return\n }\n const fix: string = this.norm(argv.fix)\n const config = this.config\n const ft: MsgTransport = new MsgTransport(1, config, new FileDuplex(fix))\n await this.dispatch(ft)\n }\n\n private async promisedRead (f: string): Promise<string> {\n return new Promise((resolve, reject) => {\n fs.readFile(f, 'utf8', async (err: Error, contents: string) => {\n if (err) {\n reject(err)\n }\n resolve(contents)\n })\n })\n }\n\n async benchParse (contents: string, iterations: number): Promise<ParseSummary> {\n return new Promise((resolve, reject) => {\n const toParse = new StringDuplex(contents.repeat(iterations))\n const startsAt: Date = new Date()\n let i = 0\n const config = this.config\n const buffer = config.sessionContainer.resolve<ElasticBuffer>(DITokens.ParseBuffer)\n const asciiParser: MsgParser = new AsciiParser(config, toParse.readable, buffer)\n asciiParser.on('msg', (msgType: string, v: MsgView) => {\n ++i\n if (i === iterations) {\n const elapsed: number = new Date().getTime() - startsAt.getTime()\n const fields = v?.structure?.tags.nextTagPos ?? 0\n const summary = new ParseSummary(contents, v.toString(), msgType, iterations, elapsed, fields)\n resolve(summary)\n }\n })\n asciiParser.on('error', e => {\n reject(e)\n })\n })\n }\n\n private async benchmark (repeats: number): Promise<(ParseSummary | null)> {\n if (!argv.fix) {\n console.log('provide a path to fix file i.e. --fix=data/examples/execution-report/fix.txt')\n return null\n }\n return await new Promise<any>((resolve, reject) => {\n const fix: string = this.norm(argv.fix)\n this.promisedRead(fix)\n .then(contents => {\n this.benchParse(contents, repeats)\n .then((a: ParseSummary) => {\n resolve(a)\n })\n .catch(e => { reject(e) })\n }).catch(e => {\n reject(e)\n })\n })\n }\n\n private encode (): void {\n const session: AsciiMsgTransmitter = this.session\n if (!session) {\n console.log('provide a session json file e.g. --session=data/session/test-initiator.json')\n return\n }\n if (!argv.type) {\n console.log('provide a message type e.g. --type=8')\n return\n }\n if (!argv.json) {\n console.log('provide a json representation e.g. data/examples/execution-report/object.json')\n return\n }\n const ts: string = argv.type.toString()\n const msg: ILooseObject = this.jsonHelper.fromJson(path.join(this.root, argv.json), ts)\n session.encodeMessage(ts, msg)\n const fix: string = session.buffer.toString()\n console.log(fix)\n }\n\n private norm (p: string): string {\n let f: string = p\n if (!path.isAbsolute(p)) {\n f = path.join(this.root, f)\n }\n return f\n }\n}\n\nfunction showHelp (): void {\n console.log('this help page')\n console.log('npm run cmd')\n console.log('npm run cmd -- --help')\n console.log()\n\n console.log('print to console a trim quickfix format xml only including given message types')\n console.log('node dist/jsfix-cmd --dict=qf44 --trim --type=\"0,1,2,3,4,5,AE\"')\n\n console.log('token format i.e. [602] 687 (LegQty) = 33589')\n console.log('node dist/jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/quickfix/FIX.4.4/execution-report/fix.txt --delimiter=\"|\" --tokens')\n console.log()\n\n console.log('token format use fix repo dictionary')\n console.log('node dist/jsfix-cmd --dict=data/fix_repo/FIX.4.4/Base --fix=data/examples/quickfix/FIX.4.4/execution-report/fix.txt' +\n ' --delimiter=\"|\" --tokens')\n console.log()\n\n console.log('structure format i.e. show locations of components etc.')\n console.log('node dist/jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt' +\n ' --delimiter=\"|\" --tokens --structures')\n console.log()\n\n console.log('full JS object in JSON format.')\n console.log('node dist/jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt' +\n ' --delimiter=\"|\" --tokens --objects')\n console.log()\n\n console.log('full JS object in JSON format - filter only type messages.')\n console.log('node dist/jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt' +\n ' --delimiter=\"|\" --tokens --type=8 --objects')\n console.log()\n\n console.log('timing stats and message counts. Structured parsing of all messages.')\n console.log('node dist/jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt --stats')\n console.log()\n\n console.log('encode a json object to fix format')\n console.log('node dist/jsfix-cmd --json=data/examples/FIX.4.4/quickfix/execution-report/object.json' +\n ' --session=data/session.json --type=8 --delimiter=\"|\"')\n console.log()\n\n console.log('display field definition')\n console.log('node dist/jsfix-cmd --dict=data/FIX44.xml --field=MsgType|35')\n console.log()\n\n console.log('display field use fix repo dictionary e.g. 271 MDEntrySize QTY Quantity or volume represented by the Market Data Entry.')\n console.log('node dist/jsfix-cmd --dict=data/fix_repo/FIX.4.4/Base --field=MsgType')\n console.log('node dist/jsfix-cmd --dict=data/fix_repo/FIX.4.4/Base --field=35')\n console.log()\n\n console.log('script to describe field in repository version 4.4')\n console.log('npm run repo44 -- --field=8')\n console.log()\n\n console.log('script to describe field in fixml')\n console.log('npm run fixml -- --field=50')\n console.log()\n\n console.log('generate unit test set of files - i.e. randomly generate an object, encode to fix. density 1 is all fields')\n console.log('node dist/jsfix-cmd --generate --type=AE --density=0.8 --unit --delimiter=\"|\" --session=data/session/test-initiator.json')\n console.log('npm run repo44-unit -- --type=AE')\n console.log('test script with no repeat groups')\n console.log('npm run repo44-unit -- --type=AE --groups=false')\n console.log()\n\n console.log('generate a fix log of randomly generated but syntactically correct messages')\n console.log('node dist/jsfix-cmd --generate --density=0.8 --repeats=50 --script --delimiter=\"|\" --session=data/session/test-initiator.json')\n console.log('npm run repo44-script')\n console.log('parse above generated script')\n console.log('npm run repo44-repscr')\n console.log()\n\n console.log('replay example repo fix file of 50 messages.')\n console.log('node dist/jsfix-cmd --session=data/session/test-initiator.json --fix=data/examples/FIX.4.4/fix.txt --delimiter=\"|\" --stats')\n console.log('npm run repo44-replay -- --stats')\n console.log('npm run repo44-replay -- --objects')\n console.log('npm run repo44-replay -- --tokens')\n console.log('npm run repo44-replay -- --structures')\n console.log()\n\n console.log('benchmark parse a message')\n console.log('node dist/jsfix-cmd --delimiter=\"|\" --session=data/session/test-initiator.json --fix=data/examples/FIX.4.4/repo/trade-capture-no-groups/fix.txt --benchmark')\n console.log('npm run repo44-bench -- --fix=data/examples/FIX.4.4/repo/trade-capture-no-groups/fix.txt')\n console.log()\n\n console.log('compile typescript interfaces - i.e. outputs to src/types/FIX4.4 - requires set and enum sub folders')\n console.log('npm run cmd -- --dict=repo40 --compile')\n console.log('npm run cmd -- --dict=repo41 --compile')\n console.log('npm run cmd -- --dict=repo42 --compile')\n console.log('npm run cmd -- --dict=repo43 --compile')\n console.log('npm run cmd -- --dict=repo44 --compile')\n console.log('npm run cmd -- --dict=repo50 --compile')\n console.log('npm run cmd -- --dict=repo50sp1 --compile')\n console.log('npm run cmd -- --dict=repo50sp2 --compile')\n console.log('npm run cmd -- --dict=repofixml --compile')\n console.log('npm run cmd -- --dict=qf44 --compile')\n console.log('npm run cmd -- --dict=data/handmade.xml --compile --output=src/types/handmade')\n\n console.log()\n}\n\nconst help: boolean = argv.h || argv.help\nif (help) {\n showHelp()\n} else {\n const cmd: JsfixCmd = new JsfixCmd()\n cmd.exec().then((res: boolean) => {\n if (!res) {\n showHelp()\n }\n }).catch((e: Error) => {\n console.error(e)\n })\n}\n"]}
|
|
1
|
+
{"version":3,"file":"jsfix-cmd.js","sourceRoot":"","sources":["../src/jsfix-cmd.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata'\n\nimport { ElasticBuffer, MsgView, MsgParser } from './buffer'\nimport { AsciiParser, AsciiView, AsciiChars } from './buffer/ascii'\nimport { ILooseObject } from './collections/collection'\nimport { SimpleFieldDefinition, FixDefinitions } from './dictionary/definition'\nimport { MessageGenerator, JsonHelper, getWords, DefinitionFactory } from './util'\nimport { ISessionDescription, FileDuplex, StringDuplex } from './transport'\n\nimport { MsgTag } from './types'\nimport { IJsFixConfig } from './config'\n\nimport * as util from 'util'\nimport minimist = require('minimist')\nimport * as path from 'path'\nimport { MsgTransport } from './transport/factory'\nimport { EnumCompiler, ICompilerSettings, MsgCompiler } from './dictionary/compiler'\nimport { AsciiMsgTransmitter } from './transport/ascii/ascii-msg-transmitter'\nimport { SessionContainer } from './runtime'\nimport { DITokens } from './runtime/di-tokens'\nimport buildOptions from 'minimist-options'\nimport { QuickFixXmlFileBuilder } from './dictionary/parser/quickfix/quick-fix-xml-file-builder'\n\nconst fs = require('fs')\n\nconst options = buildOptions({\n dict: {\n type: 'string',\n alias: 'd',\n default: 'data/FIX44.xml'\n },\n\n type: {\n type: 'string-array',\n alias: 't'\n },\n\n fix: {\n type: 'string',\n alias: 'f',\n default: 'data/FIX44.xml'\n },\n\n session: {\n type: 'string',\n alias: 's'\n },\n\n delimiter: {\n type: 'string',\n alias: 'l',\n default: '|'\n },\n\n help: {\n type: 'boolean',\n alias: ['h'],\n default: false\n },\n\n unit: {\n type: 'boolean',\n alias: ['u'],\n default: false\n },\n\n generate: {\n type: 'boolean',\n alias: ['g'],\n default: false\n },\n\n stats: {\n type: 'boolean',\n alias: ['st'],\n default: false\n },\n\n tokens: {\n type: 'boolean',\n alias: ['t'],\n default: false\n },\n\n objects: {\n type: 'boolean',\n alias: ['o'],\n default: true\n },\n\n structures: {\n type: 'boolean',\n alias: ['r'],\n default: false\n },\n\n script: {\n type: 'boolean',\n alias: ['i'],\n default: false\n },\n\n compile: {\n type: 'boolean',\n alias: ['c'],\n default: false\n },\n\n groups: {\n type: 'boolean',\n alias: ['g'],\n default: true\n },\n\n density: {\n type: 'number',\n alias: 'd',\n default: 0.8\n },\n\n repeats: {\n type: 'number',\n alias: 'r',\n default: 1\n },\n\n arr: {\n type: 'array',\n alias: 'a',\n default: []\n }\n\n /*\n booleans: {\n type: 'boolean-array',\n alias: 'b',\n default: [true, false]\n },\n\n numbers: {\n type: 'number-array',\n alias: 'n',\n default: [0, 1]\n },\n\n published: 'boolean',\n\n // Special option for positional arguments (`_` in minimist)\n arguments: 'string'\n */\n})\n\nconst argv: any = minimist(process.argv.slice(2), options)\n\nenum PrintMode {\n Structure = 1,\n Object = 2,\n Verbose = 3,\n Stats = 4,\n Token = 5,\n Encoded = 6\n}\n\nenum Command {\n Generate = 1,\n Replay = 2,\n Lookup = 3,\n Encode = 4,\n Benchmark = 5,\n Compile = 6,\n Trim,\n Unknown = 8\n}\n\nclass ParseSummary {\n public readonly micros_per_msg: number\n public readonly chars_per_second: number\n public readonly fields_per_second: number\n public readonly content_length: number\n\n constructor (\n public readonly content: string,\n public readonly view: string,\n public readonly msg_type: string,\n public readonly iterations: number,\n public readonly elapsed_ms: number,\n public readonly fields: number\n ) {\n this.content_length = this.content.length\n this.micros_per_msg = (this.elapsed_ms / this.iterations) * 1000\n this.chars_per_second = Math.round(this.content_length * this.iterations / this.elapsed_ms * 1000)\n this.fields_per_second = Math.round(this.fields * this.iterations / this.elapsed_ms * 1000)\n }\n}\n\nexport class JsfixCmd {\n private readonly root: string = path.join(__dirname, '../')\n private definitions: FixDefinitions\n private jsonHelper: JsonHelper\n private session: AsciiMsgTransmitter\n private sessionDescription: ISessionDescription\n private delimiter: number = AsciiChars.Soh\n private stats: ILooseObject = {}\n private readonly filter: Map<string, boolean> = new Map<string, boolean>()\n private messages: number = 0\n private print: boolean = true\n\n private static getCommand (): Command {\n let command: Command = Command.Unknown\n if (argv.trim) {\n command = Command.Trim\n } else if (argv.compile) {\n command = Command.Compile\n } else if (argv.generate) {\n command = Command.Generate\n } else if (argv.fix) {\n command = argv.benchmark ? Command.Benchmark : Command.Replay\n } else if (argv.field) {\n command = Command.Lookup\n } else if (argv.json) {\n command = Command.Encode\n } else if (argv.msg) {\n command = Command.Lookup\n }\n return command\n }\n\n private static getPrintMode (): PrintMode {\n let mode: PrintMode = PrintMode.Stats\n if (argv.tokens) {\n mode = PrintMode.Token\n } else if (argv.stats) {\n mode = PrintMode.Stats\n } else if (argv.objects) {\n mode = PrintMode.Object\n } else if (argv.verbose) {\n mode = PrintMode.Verbose\n } else if (argv.structures) {\n mode = PrintMode.Structure\n } else if (argv.encoded) {\n mode = PrintMode.Encoded\n } else if (argv.trim) {\n mode = PrintMode.Object\n }\n return mode\n }\n\n private static async writeFile (name: string, api: string): Promise<void> {\n const writer = util.promisify(fs.writeFile)\n await writer(name, api, { encoding: 'utf8' }\n ).catch((e: Error) => {\n throw e\n })\n }\n\n public async exec (): Promise<any> {\n return await new Promise<any>((resolve, reject) => {\n this.init().then(async () => {\n let actioned: boolean = true\n const command = JsfixCmd.getCommand()\n\n switch (command) {\n case Command.Generate: {\n // produce a test message or a valid fix log of n messages\n await this.generate()\n break\n }\n\n case Command.Encode: {\n // encode a json message back to fix\n this.encode()\n break\n }\n\n case Command.Replay: {\n // parse a file into either objects, tokens, structures or stats\n const repeats: number = !isNaN(argv.repeats) ? argv.repeats : 1\n try {\n for (let i: number = 0; i < repeats; ++i) {\n await this.replay()\n }\n } catch (e) {\n reject(e)\n }\n break\n }\n\n case Command.Benchmark: {\n // time how long to parse 10000 repeats of contents of file\n const repeats: number = !isNaN(argv.repeats) ? argv.repeats : 10000\n try {\n const summary = await this.benchmark(repeats)\n console.log(JSON.stringify(summary, null, 4))\n } catch (e) {\n reject(e)\n }\n break\n }\n\n case Command.Lookup: {\n // lookup a field\n if (argv.field) {\n this.field()\n } else {\n this.msg()\n }\n break\n }\n\n case Command.Compile: {\n await this.compile()\n break\n }\n\n case Command.Trim: {\n const xml = this.trim()\n console.log(xml)\n break\n }\n\n case Command.Unknown:\n default: {\n actioned = false\n }\n }\n resolve(actioned)\n }).catch((e) => {\n reject(e)\n })\n })\n }\n\n private async firstMessage (t: MsgTransport): Promise<MsgView> {\n return await new Promise<MsgView>((resolve, reject) => {\n t.receiver.on('msg', (msgType: string, msgView: MsgView) => {\n resolve(msgView.clone())\n })\n t.receiver.on('error', (e) => {\n reject(e)\n })\n })\n }\n\n protected async generate (): Promise<void> {\n const lipPath: string = path.join(this.root, 'data/examples/lipsum.txt')\n const words: string[] = await getWords(lipPath)\n const generator = new MessageGenerator(words, this.definitions)\n let density = 1\n if (argv.density) {\n density = parseFloat(argv.density)\n }\n if (isNaN(density)) {\n console.log('density must be numeric in range > 0 density <= 1.0')\n return\n }\n\n if (argv.script) {\n await this.script(generator, density)\n } else {\n await this.single(generator, density)\n }\n }\n\n private async single (generator: MessageGenerator, density: number): Promise<void> {\n if (!argv.type) {\n console.log('specify type to generate e.g. --type = AE')\n return\n }\n const msgType: string = `${argv.type}`\n let makeGroups: boolean = true\n if (argv.groups) {\n makeGroups = argv.groups === 'true'\n }\n const obj: ILooseObject = generator.generate(msgType, density, makeGroups)\n console.log(JSON.stringify(obj, null, 4))\n const fix: string = this.encodeObject(msgType, obj)\n const ft: MsgTransport = new MsgTransport(1, this.session.config, new StringDuplex(fix))\n if (argv.unit) {\n await this.unitTest(fix, obj, ft)\n } else {\n this.subscribe(ft)\n }\n }\n\n private async script (generator: MessageGenerator, density: number): Promise<void> {\n const buffer: ElasticBuffer = new ElasticBuffer()\n const repeats: number = argv.repeats || 50\n const key: string = MsgTag.MsgType.toString()\n const sf = this.definitions.simple.get(key)\n const session: AsciiMsgTransmitter = this.session\n for (let i = 0; i < repeats; ++i) {\n const msgType: string = sf ? MessageGenerator.getRandomEnum(sf).toString() : ''\n console.log(`i = ${i} ${msgType}`)\n const obj: ILooseObject = generator.generate(msgType, density)\n session.encodeMessage(msgType, obj)\n buffer.writeBuffer(session.buffer.slice())\n buffer.writeString(require('os').EOL)\n }\n await JsfixCmd.writeFile('./fix.txt', buffer.slice().toString('utf8'))\n }\n\n private async unitTest (fix: string, obj: ILooseObject, ft: MsgTransport): Promise<void> {\n const view: MsgView = await this.firstMessage(ft)\n const summary = view?.structure?.summary()\n\n await JsfixCmd.writeFile('./fix.txt', fix)\n await JsfixCmd.writeFile('./object.json', JSON.stringify(obj, null, 4))\n await JsfixCmd.writeFile('./token.txt', view.toString())\n await JsfixCmd.writeFile('./structure.json', JSON.stringify(summary, null, 4))\n }\n\n private encodeObject (msgType: string, object: ILooseObject): string {\n const session: AsciiMsgTransmitter = this.session\n session.encodeMessage(msgType, object)\n return session.buffer.toString()\n }\n\n private msg (): void {\n const definitions = this.definitions\n const m = definitions.message.get(argv.msg)\n if (m) {\n console.log(m.toString())\n }\n }\n\n private field (): void {\n let sf: SimpleFieldDefinition | undefined\n const tag: number = parseInt(argv.field, 10)\n const definitions = this.definitions\n if (!isNaN(tag)) {\n sf = definitions.tagToSimple[tag]\n } else {\n sf = definitions.simple.get(argv.field)\n }\n if (sf) {\n console.log(sf.toString())\n }\n }\n\n async ensureExists (path: string): Promise<any> {\n return await new Promise<any>((resolve, reject) => {\n fs.mkdir(path, { recursive: true }, (err: Error) => {\n if (err) {\n reject(err)\n } else {\n resolve(true)\n }\n })\n })\n }\n\n private async compileDefinitions (outputPath: string): Promise<void> {\n await this.ensureExists(path.join(outputPath, 'set'))\n await this.ensureExists(path.join(outputPath, 'enum'))\n const definitions = this.definitions\n const compilerSettings: ICompilerSettings = require('../data/compiler.json')\n compilerSettings.output = outputPath\n const msgCompiler: MsgCompiler = new MsgCompiler(definitions, compilerSettings)\n await msgCompiler.generate()\n const enumCompiler: EnumCompiler = new EnumCompiler(definitions, compilerSettings)\n const writeFile = path.join(compilerSettings.output, './enum/all-enum.ts')\n await enumCompiler.generate(writeFile)\n }\n\n private trim (): string {\n this.setFilter()\n const types = this.filter.size > 0 ? Array.from(this.filter.keys()) : Array.from(this.definitions.simple.get('MsgType')?.enums.keys() ?? [])\n const qfb = new QuickFixXmlFileBuilder(this.definitions)\n qfb.write(types)\n return qfb.elasticBuffer.toString()\n }\n\n private async compile (): Promise<void> {\n let output = argv.output\n const dp = new DefinitionFactory().getDictPath(argv.dict)\n if (dp) {\n output = dp.output\n }\n output = path.join(this.root, output)\n await this.compileDefinitions(output)\n }\n\n sys: SessionContainer\n config: IJsFixConfig\n\n private async init (): Promise<any> {\n let session: string = argv.session || 'data/session/test-initiator.json'\n this.sys = new SessionContainer()\n this.sys.registerGlobal('error')\n session = this.norm(session)\n this.sessionDescription = require(session)\n const container = await this.sys.makeSystem(this.sessionDescription)\n this.config = container.resolve<IJsFixConfig>(DITokens.IJsFixConfig)\n this.definitions = this.config.definitions\n let dict: string\n if (argv.dict) {\n dict = argv.dict\n const df = await new DefinitionFactory().getDefinitions(dict)\n this.config.definitions = df\n this.definitions = df\n }\n const definitions = this.definitions\n if (argv.delimiter) {\n this.delimiter = AsciiChars.firstChar(argv.delimiter)\n this.config.delimiter = this.delimiter\n }\n this.jsonHelper = new JsonHelper(definitions)\n if (argv.session) {\n this.session = container.resolve<AsciiMsgTransmitter>(DITokens.MsgTransmitter)\n }\n }\n\n private setFilter (): void {\n const types: string[] = []\n if (argv.type != null) {\n if (Array.isArray(argv.type)) {\n argv.type.forEach((mt: any) => {\n types.push(mt)\n })\n } else {\n argv.type.split(',').forEach((mt: string) => {\n types.push(mt)\n })\n }\n types.forEach((mt: any) => {\n this.filter.set(mt, true)\n })\n }\n }\n\n private async dispatch (ft: MsgTransport): Promise<any> {\n this.setFilter()\n let time: boolean = false\n if (argv.time || argv.stats) {\n this.print = false\n time = true\n }\n this.subscribe(ft)\n const startsAt: Date = new Date()\n await ft.wait()\n const elapsed: number = new Date().getTime() - startsAt.getTime()\n if (time) {\n console.log(`messages ${this.messages} elapsed ms ${elapsed}`)\n }\n if (argv.stats) {\n console.log(JSON.stringify(this.stats, null, 4))\n }\n }\n\n private subscribe (ft: MsgTransport): void {\n this.messages = 0\n this.stats = {}\n const filter = this.filter\n // the receiver is message parser which is piped from an input stream - file, socket\n ft.receiver.on('msg', (msgType: string, m: AsciiView) => {\n if (filter) {\n if (filter.has(msgType)) {\n return\n }\n }\n ++this.messages\n this.onMsg(msgType, m)\n })\n }\n\n private onMsg (msgType: string, m: MsgView): void {\n const mode: PrintMode = JsfixCmd.getPrintMode()\n const print = this.print\n const stats = this.stats\n switch (mode) {\n case PrintMode.Stats: {\n let i: number = 0\n if (!stats[msgType]) {\n i = 1\n } else {\n i = stats[msgType] as number + 1\n }\n stats[msgType] = i\n break\n }\n\n case PrintMode.Verbose: {\n const verbose = m.toVerbose()\n if (verbose) {\n console.log(verbose)\n }\n break\n }\n\n case PrintMode.Object: {\n const asObject: ILooseObject = m.toObject() as ILooseObject\n if (print) {\n const def = this.definitions.message.get(msgType)\n console.log(`${msgType} [${def?.name}] = ${JSON.stringify(asObject, null, 4)}`)\n console.log()\n }\n break\n }\n\n case PrintMode.Structure: {\n const summary = m?.structure?.summary()\n if (print) {\n console.log(JSON.stringify(summary, null, 4))\n }\n break\n }\n\n case PrintMode.Token: {\n const tokens = m.toString()\n if (print) {\n console.log(tokens)\n }\n break\n }\n\n case PrintMode.Encoded: {\n const fix: string = this.encodeObject(msgType, m.toObject() as ILooseObject)\n console.log(fix)\n break\n }\n\n default:\n throw new Error(`unknown mode ${mode}`)\n }\n }\n\n private async replay (): Promise<any> {\n if (!argv.fix) {\n console.log('provide a path to fix file i.e. --fix=data/examples/execution-report/fix.txt')\n return\n }\n const fix: string = this.norm(argv.fix)\n const config = this.config\n const ft: MsgTransport = new MsgTransport(1, config, new FileDuplex(fix))\n await this.dispatch(ft)\n }\n\n private async promisedRead (f: string): Promise<string> {\n return new Promise((resolve, reject) => {\n fs.readFile(f, 'utf8', async (err: Error, contents: string) => {\n if (err) {\n reject(err)\n }\n resolve(contents)\n })\n })\n }\n\n async benchParse (contents: string, iterations: number): Promise<ParseSummary> {\n return new Promise((resolve, reject) => {\n const toParse = new StringDuplex(contents.repeat(iterations))\n const startsAt: Date = new Date()\n let i = 0\n const config = this.config\n const buffer = config.sessionContainer.resolve<ElasticBuffer>(DITokens.ParseBuffer)\n const asciiParser: MsgParser = new AsciiParser(config, toParse.readable, buffer)\n asciiParser.on('msg', (msgType: string, v: MsgView) => {\n ++i\n if (i === iterations) {\n const elapsed: number = new Date().getTime() - startsAt.getTime()\n const fields = v?.structure?.tags.nextTagPos ?? 0\n const summary = new ParseSummary(contents, v.toString(), msgType, iterations, elapsed, fields)\n resolve(summary)\n }\n })\n asciiParser.on('error', e => {\n reject(e)\n })\n })\n }\n\n private async benchmark (repeats: number): Promise<(ParseSummary | null)> {\n if (!argv.fix) {\n console.log('provide a path to fix file i.e. --fix=data/examples/execution-report/fix.txt')\n return null\n }\n return await new Promise<any>((resolve, reject) => {\n const fix: string = this.norm(argv.fix)\n this.promisedRead(fix)\n .then(contents => {\n this.benchParse(contents, repeats)\n .then((a: ParseSummary) => {\n resolve(a)\n })\n .catch(e => { reject(e) })\n }).catch(e => {\n reject(e)\n })\n })\n }\n\n private encode (): void {\n const session: AsciiMsgTransmitter = this.session\n if (!session) {\n console.log('provide a session json file e.g. --session=data/session/test-initiator.json')\n return\n }\n if (!argv.type) {\n console.log('provide a message type e.g. --type=8')\n return\n }\n if (!argv.json) {\n console.log('provide a json representation e.g. data/examples/execution-report/object.json')\n return\n }\n const ts: string = argv.type.toString()\n const msg: ILooseObject = this.jsonHelper.fromJson(path.join(this.root, argv.json), ts)\n session.encodeMessage(ts, msg)\n const fix: string = session.buffer.toString()\n console.log(fix)\n }\n\n private norm (p: string): string {\n let f: string = p\n if (!path.isAbsolute(p)) {\n f = path.join(this.root, f)\n }\n return f\n }\n}\n\nfunction showHelp (): void {\n console.log('this help page')\n console.log('npm run cmd')\n console.log('npm run cmd -- --help')\n console.log()\n\n console.log('print to console a trim quickfix format xml only including given message types')\n console.log('node dist/jsfix-cmd --dict=qf44 --trim --type=\"0,1,2,3,4,5,AE\"')\n\n console.log('token format i.e. [602] 687 (LegQty) = 33589')\n console.log('node dist/jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/quickfix/FIX.4.4/execution-report/fix.txt --delimiter=\"|\" --tokens')\n console.log()\n\n console.log('token format use fix repo dictionary')\n console.log('node dist/jsfix-cmd --dict=data/fix_repo/FIX.4.4/Base --fix=data/examples/quickfix/FIX.4.4/execution-report/fix.txt' +\n ' --delimiter=\"|\" --tokens')\n console.log()\n\n console.log('structure format i.e. show locations of components etc.')\n console.log('node dist/jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt' +\n ' --delimiter=\"|\" --tokens --structures')\n console.log()\n\n console.log('full JS object in JSON format.')\n console.log('node dist/jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt' +\n ' --delimiter=\"|\" --tokens --objects')\n console.log()\n\n console.log('full JS object in JSON format - filter only type messages.')\n console.log('node dist/jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt' +\n ' --delimiter=\"|\" --tokens --type=8 --objects')\n console.log()\n\n console.log('timing stats and message counts. Structured parsing of all messages.')\n console.log('node dist/jsfix-cmd --dict=data/FIX44.xml --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt --stats')\n console.log()\n\n console.log('encode a json object to fix format')\n console.log('node dist/jsfix-cmd --json=data/examples/FIX.4.4/quickfix/execution-report/object.json' +\n ' --session=data/session.json --type=8 --delimiter=\"|\"')\n console.log()\n\n console.log('display field definition')\n console.log('node dist/jsfix-cmd --dict=data/FIX44.xml --field=MsgType|35')\n console.log()\n\n console.log('display field use fix repo dictionary e.g. 271 MDEntrySize QTY Quantity or volume represented by the Market Data Entry.')\n console.log('node dist/jsfix-cmd --dict=data/fix_repo/FIX.4.4/Base --field=MsgType')\n console.log('node dist/jsfix-cmd --dict=data/fix_repo/FIX.4.4/Base --field=35')\n console.log()\n\n console.log('script to describe field in repository version 4.4')\n console.log('npm run repo44 -- --field=8')\n console.log()\n\n console.log('script to describe field in fixml')\n console.log('npm run fixml -- --field=50')\n console.log()\n\n console.log('generate unit test set of files - i.e. randomly generate an object, encode to fix. density 1 is all fields')\n console.log('node dist/jsfix-cmd --generate --type=AE --density=0.8 --unit --delimiter=\"|\" --session=data/session/test-initiator.json')\n console.log('npm run repo44-unit -- --type=AE')\n console.log('test script with no repeat groups')\n console.log('npm run repo44-unit -- --type=AE --groups=false')\n console.log()\n\n console.log('generate a fix log of randomly generated but syntactically correct messages')\n console.log('node dist/jsfix-cmd --generate --density=0.8 --repeats=50 --script --delimiter=\"|\" --session=data/session/test-initiator.json')\n console.log('npm run repo44-script')\n console.log('parse above generated script')\n console.log('npm run repo44-repscr')\n console.log()\n\n console.log('replay example repo fix file of 50 messages.')\n console.log('node dist/jsfix-cmd --session=data/session/test-initiator.json --fix=data/examples/FIX.4.4/fix.txt --delimiter=\"|\" --stats')\n console.log('npm run repo44-replay -- --stats')\n console.log('npm run repo44-replay -- --objects')\n console.log('npm run repo44-replay -- --tokens')\n console.log('npm run repo44-replay -- --structures')\n console.log()\n\n console.log('benchmark parse a message')\n console.log('node dist/jsfix-cmd --delimiter=\"|\" --session=data/session/test-initiator.json --fix=data/examples/FIX.4.4/repo/trade-capture-no-groups/fix.txt --benchmark')\n console.log('npm run repo44-bench -- --fix=data/examples/FIX.4.4/repo/trade-capture-no-groups/fix.txt')\n console.log()\n\n console.log('compile typescript interfaces - i.e. outputs to src/types/FIX4.4 - requires set and enum sub folders')\n console.log('npm run cmd -- --dict=repo40 --compile')\n console.log('npm run cmd -- --dict=repo41 --compile')\n console.log('npm run cmd -- --dict=repo42 --compile')\n console.log('npm run cmd -- --dict=repo43 --compile')\n console.log('npm run cmd -- --dict=repo44 --compile')\n console.log('npm run cmd -- --dict=repo50 --compile')\n console.log('npm run cmd -- --dict=repo50sp1 --compile')\n console.log('npm run cmd -- --dict=repo50sp2 --compile')\n console.log('npm run cmd -- --dict=repofixml --compile')\n console.log('npm run cmd -- --dict=qf44 --compile')\n console.log('npm run cmd -- --dict=data/handmade.xml --compile --output=src/types/handmade')\n\n console.log()\n}\n\nconst help: boolean = argv.h || argv.help\nif (help) {\n showHelp()\n} else {\n const cmd: JsfixCmd = new JsfixCmd()\n cmd.exec().then((res: boolean) => {\n if (!res) {\n showHelp()\n }\n }).catch((e: Error) => {\n console.error(e)\n })\n}\n"]}
|
|
@@ -16,7 +16,6 @@ const config_1 = require("../config");
|
|
|
16
16
|
const di_tokens_1 = require("./di-tokens");
|
|
17
17
|
const make_config_1 = require("./make-config");
|
|
18
18
|
const tcp_1 = require("../transport/tcp");
|
|
19
|
-
const http_1 = require("../transport/http");
|
|
20
19
|
const ascii_msg_transmitter_1 = require("../transport/ascii/ascii-msg-transmitter");
|
|
21
20
|
const fixml_msg_transmitter_1 = require("../transport/fixml/fixml-msg-transmitter");
|
|
22
21
|
const fixml_1 = require("../transport/fixml");
|
|
@@ -24,6 +23,9 @@ const ascii_1 = require("../transport/ascii");
|
|
|
24
23
|
const buffer_1 = require("../buffer");
|
|
25
24
|
const ascii_2 = require("../buffer/ascii");
|
|
26
25
|
const fixml_2 = require("../buffer/fixml");
|
|
26
|
+
function httpTransport() {
|
|
27
|
+
return require('../transport/http');
|
|
28
|
+
}
|
|
27
29
|
class SessionContainer {
|
|
28
30
|
constructor(msgFactoryProvider = null) {
|
|
29
31
|
this.msgFactoryProvider = msgFactoryProvider;
|
|
@@ -151,23 +153,24 @@ class SessionContainer {
|
|
|
151
153
|
useClass: fixml_2.FixmlEncoder
|
|
152
154
|
});
|
|
153
155
|
sessionContainer.registerInstance(di_tokens_1.DITokens.TransmitBuffer, new buffer_1.ElasticBuffer(sendSize));
|
|
154
|
-
|
|
155
|
-
|
|
156
|
+
const { HttpInitiator, HttpAcceptorListener, HttpJsonSampleAdapter } = httpTransport();
|
|
157
|
+
sessionContainer.register(HttpAcceptorListener, {
|
|
158
|
+
useClass: HttpAcceptorListener
|
|
156
159
|
});
|
|
157
|
-
sessionContainer.register(
|
|
158
|
-
useClass:
|
|
160
|
+
sessionContainer.register(HttpInitiator, {
|
|
161
|
+
useClass: HttpInitiator
|
|
159
162
|
});
|
|
160
163
|
if (this.isInitiator(description)) {
|
|
161
164
|
sessionContainer.register(di_tokens_1.DITokens.FixEntity, {
|
|
162
|
-
useClass:
|
|
165
|
+
useClass: HttpInitiator
|
|
163
166
|
});
|
|
164
167
|
sessionContainer.register(di_tokens_1.DITokens.IHttpAdapter, {
|
|
165
|
-
useClass:
|
|
168
|
+
useClass: HttpJsonSampleAdapter
|
|
166
169
|
});
|
|
167
170
|
}
|
|
168
171
|
else {
|
|
169
172
|
sessionContainer.register(di_tokens_1.DITokens.FixEntity, {
|
|
170
|
-
useClass:
|
|
173
|
+
useClass: HttpAcceptorListener
|
|
171
174
|
});
|
|
172
175
|
}
|
|
173
176
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-container.js","sourceRoot":"","sources":["../../src/runtime/session-container.ts"],"names":[],"mappings":"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","sourcesContent":["import { container, DependencyContainer } from 'tsyringe'\nimport { DefinitionFactory } from '../util'\nimport { IJsFixConfig, JsFixLoggerFactory, JsFixWinstonLogFactory, WinstonLogger } from '../config'\nimport { DITokens } from './di-tokens'\nimport { RuntimeFactory } from './make-config'\n\nimport {\n TcpAcceptorListener, RecoveringTcpInitiator,\n TcpInitiatorConnector, TcpInitiator\n} from '../transport/tcp'\nimport { HttpInitiator, HttpAcceptorListener, HttpJsonSampleAdapter } from '../transport/http'\nimport { ISessionMsgFactory, MsgTransmitter, ISessionDescription } from '../transport'\nimport { AsciiMsgTransmitter } from '../transport/ascii/ascii-msg-transmitter'\nimport { FixmlMsgTransmitter } from '../transport/fixml/fixml-msg-transmitter'\nimport { FixmlSessionMsgFactory } from '../transport/fixml'\nimport { AsciiSessionMsgFactory } from '../transport/ascii'\nimport { ElasticBuffer, MsgEncoder, MsgParser } from '../buffer'\nimport { AsciiParser, AsciiParserState, AsciiSegmentParser } from '../buffer/ascii'\nimport { FixmlEncoder, FiXmlParser } from '../buffer/fixml'\nimport { FixEntity } from '../transport/fix-entity'\nimport { IHttpAdapter } from '../transport/http/http-adapter'\n\n/**\n * Supplies the session message factory for a description. Return null to accept the\n * stock factory for the protocol.\n */\nexport type SessionMsgFactoryProvider = (description: ISessionDescription) => ISessionMsgFactory | null\n\nexport class SessionContainer {\n /**\n * @param msgFactoryProvider an application that needs its own session messages -\n * typically a Logon carrying tags the standard message does not - can pass one\n * here rather than subclassing to override makeSessionFactory:\n *\n * new SessionContainer(d => new MyFactory(d))\n */\n constructor (public readonly msgFactoryProvider: SessionMsgFactoryProvider | null = null) {\n }\n\n public reset (): void {\n container.reset()\n }\n\n public registerGlobal (loggerFactory?: JsFixLoggerFactory): void\n public registerGlobal (level: string): void\n public registerGlobal (levelOrLoggerFactory: string | JsFixLoggerFactory = 'info'): void {\n container.registerInstance(DefinitionFactory, new DefinitionFactory())\n let lf: JsFixLoggerFactory\n if (typeof levelOrLoggerFactory === 'string') {\n lf = new JsFixWinstonLogFactory(WinstonLogger.consoleOptions(levelOrLoggerFactory))\n } else {\n lf = levelOrLoggerFactory\n }\n container.registerInstance(DITokens.JsFixLoggerFactory, lf)\n container.register<RuntimeFactory>(RuntimeFactory, {\n useClass: RuntimeFactory\n })\n container.register<ElasticBuffer>(DITokens.ElasticBuffer, {\n useClass: ElasticBuffer\n })\n }\n\n protected makeSessionFactory (description: ISessionDescription): ISessionMsgFactory {\n const supplied = this.msgFactoryProvider?.(description)\n if (supplied) {\n return supplied\n }\n const fixml = !this.isAscii(description)\n return fixml\n ? new FixmlSessionMsgFactory(description)\n : new AsciiSessionMsgFactory(description)\n }\n\n public newChild (description: ISessionDescription): DependencyContainer {\n const sessionContainer = container.createChildContainer()\n const sf = this.makeSessionFactory(description)\n sessionContainer.registerInstance(DITokens.ISessionDescription, description)\n sessionContainer.registerInstance(DITokens.ISessionMsgFactory, sf)\n return sessionContainer\n }\n\n public async makeSystem (description: ISessionDescription): Promise<DependencyContainer> {\n return await new Promise<DependencyContainer>((resolve, reject) => {\n const sessionContainer = this.newChild(description)\n const factory = sessionContainer.resolve<RuntimeFactory>(RuntimeFactory)\n factory.makeConfig().then((c: IJsFixConfig) => {\n this.registerSession(c, sessionContainer)\n resolve(sessionContainer)\n }).catch(e => {\n reject(e)\n })\n })\n }\n\n public isAscii (description: ISessionDescription): boolean {\n return description.application?.protocol === 'ascii'\n }\n\n public isInitiator (description: ISessionDescription): boolean {\n return description.application?.type === 'initiator'\n }\n\n public asAscii (description: ISessionDescription, sessionContainer: DependencyContainer): void {\n sessionContainer.register<MsgTransmitter>(DITokens.MsgTransmitter, {\n useClass: AsciiMsgTransmitter\n })\n sessionContainer.register<MsgParser>(DITokens.MsgParser, {\n useClass: AsciiParser\n })\n const parseSize = 160 * 1024\n const sendSize = 10 * 1024\n\n sessionContainer.register(DITokens.maxMessageLen, {\n useValue: parseSize\n })\n sessionContainer.register<AsciiSegmentParser>(AsciiSegmentParser, {\n useClass: AsciiSegmentParser\n })\n sessionContainer.register<AsciiParserState>(AsciiParserState, {\n useClass: AsciiParserState\n })\n\n sessionContainer.registerInstance<ElasticBuffer>(DITokens.TransmitBuffer, new ElasticBuffer(sendSize))\n sessionContainer.registerInstance<ElasticBuffer>(DITokens.ParseBuffer, new ElasticBuffer(parseSize))\n\n if (this.isInitiator(description)) {\n sessionContainer.register<TcpInitiator>(TcpInitiator, {\n useClass: TcpInitiator\n })\n sessionContainer.register<RecoveringTcpInitiator>(RecoveringTcpInitiator, {\n useClass: RecoveringTcpInitiator\n })\n sessionContainer.register<TcpInitiatorConnector>(TcpInitiatorConnector, {\n useClass: TcpInitiatorConnector\n })\n if (description.application?.resilient) {\n sessionContainer.register<FixEntity>(DITokens.FixEntity, {\n useClass: RecoveringTcpInitiator\n })\n } else {\n sessionContainer.register<FixEntity>(DITokens.FixEntity, {\n useClass: TcpInitiatorConnector\n })\n }\n } else {\n sessionContainer.register<FixEntity>(DITokens.FixEntity, {\n useClass: TcpAcceptorListener\n })\n }\n }\n\n public asFixml (description: ISessionDescription, sessionContainer: DependencyContainer): void {\n sessionContainer.register<MsgTransmitter>(DITokens.MsgTransmitter, {\n useClass: FixmlMsgTransmitter\n })\n const sendSize = 10 * 1024\n\n sessionContainer.register<MsgParser>(DITokens.MsgParser, {\n useClass: FiXmlParser\n })\n sessionContainer.register(DITokens.maxMessageLocations, {\n useValue: sendSize\n })\n sessionContainer.register<MsgEncoder>(DITokens.MsgEncoder, {\n useClass: FixmlEncoder\n })\n sessionContainer.registerInstance<ElasticBuffer>(DITokens.TransmitBuffer, new ElasticBuffer(sendSize))\n sessionContainer.register<HttpAcceptorListener>(HttpAcceptorListener, {\n useClass: HttpAcceptorListener\n })\n sessionContainer.register<HttpInitiator>(HttpInitiator, {\n useClass: HttpInitiator\n })\n if (this.isInitiator(description)) {\n sessionContainer.register<FixEntity>(DITokens.FixEntity, {\n useClass: HttpInitiator\n })\n sessionContainer.register<IHttpAdapter>(DITokens.IHttpAdapter, {\n useClass: HttpJsonSampleAdapter\n })\n } else {\n sessionContainer.register<FixEntity>(DITokens.FixEntity, {\n useClass: HttpAcceptorListener\n })\n }\n }\n\n protected asciiConstants (c: IJsFixConfig, sessionContainer: DependencyContainer): void {\n sessionContainer.register(DITokens.delimiter, {\n useValue: c.delimiter\n })\n sessionContainer.register(DITokens.logDelimiter, {\n useValue: c.logDelimiter\n })\n }\n\n public registerSession (c: IJsFixConfig, sessionContainer: DependencyContainer): void {\n if (this.isAscii(c.description)) {\n this.asAscii(c.description, sessionContainer)\n this.asciiConstants(c, sessionContainer)\n } else {\n this.asFixml(c.description, sessionContainer)\n }\n c.sessionContainer = sessionContainer\n sessionContainer.registerInstance(DITokens.IJsFixConfig, c)\n sessionContainer.registerInstance(DITokens.Definitions, c.definitions)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"session-container.js","sourceRoot":"","sources":["../../src/runtime/session-container.ts"],"names":[],"mappings":"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","sourcesContent":["import { container, DependencyContainer } from 'tsyringe'\nimport { DefinitionFactory } from '../util'\nimport { IJsFixConfig, JsFixLoggerFactory, JsFixWinstonLogFactory, WinstonLogger } from '../config'\nimport { DITokens } from './di-tokens'\nimport { RuntimeFactory } from './make-config'\n\nimport {\n TcpAcceptorListener, RecoveringTcpInitiator,\n TcpInitiatorConnector, TcpInitiator\n} from '../transport/tcp'\nimport { ISessionMsgFactory, MsgTransmitter, ISessionDescription } from '../transport'\nimport { AsciiMsgTransmitter } from '../transport/ascii/ascii-msg-transmitter'\nimport { FixmlMsgTransmitter } from '../transport/fixml/fixml-msg-transmitter'\nimport { FixmlSessionMsgFactory } from '../transport/fixml'\nimport { AsciiSessionMsgFactory } from '../transport/ascii'\nimport { ElasticBuffer, MsgEncoder, MsgParser } from '../buffer'\nimport { AsciiParser, AsciiParserState, AsciiSegmentParser } from '../buffer/ascii'\nimport { FixmlEncoder, FiXmlParser } from '../buffer/fixml'\nimport { FixEntity } from '../transport/fix-entity'\nimport type { IHttpAdapter } from '../transport/http/http-adapter'\n\n/**\n * The http transport pulls in express. Only a fixml session registers it, so resolve\n * it on demand - an ascii application should neither load that tree nor inherit it.\n */\nfunction httpTransport (): typeof import('../transport/http') {\n return require('../transport/http')\n}\n\n/**\n * Supplies the session message factory for a description. Return null to accept the\n * stock factory for the protocol.\n */\nexport type SessionMsgFactoryProvider = (description: ISessionDescription) => ISessionMsgFactory | null\n\nexport class SessionContainer {\n /**\n * @param msgFactoryProvider an application that needs its own session messages -\n * typically a Logon carrying tags the standard message does not - can pass one\n * here rather than subclassing to override makeSessionFactory:\n *\n * new SessionContainer(d => new MyFactory(d))\n */\n constructor (public readonly msgFactoryProvider: SessionMsgFactoryProvider | null = null) {\n }\n\n public reset (): void {\n container.reset()\n }\n\n public registerGlobal (loggerFactory?: JsFixLoggerFactory): void\n public registerGlobal (level: string): void\n public registerGlobal (levelOrLoggerFactory: string | JsFixLoggerFactory = 'info'): void {\n container.registerInstance(DefinitionFactory, new DefinitionFactory())\n let lf: JsFixLoggerFactory\n if (typeof levelOrLoggerFactory === 'string') {\n lf = new JsFixWinstonLogFactory(WinstonLogger.consoleOptions(levelOrLoggerFactory))\n } else {\n lf = levelOrLoggerFactory\n }\n container.registerInstance(DITokens.JsFixLoggerFactory, lf)\n container.register<RuntimeFactory>(RuntimeFactory, {\n useClass: RuntimeFactory\n })\n container.register<ElasticBuffer>(DITokens.ElasticBuffer, {\n useClass: ElasticBuffer\n })\n }\n\n protected makeSessionFactory (description: ISessionDescription): ISessionMsgFactory {\n const supplied = this.msgFactoryProvider?.(description)\n if (supplied) {\n return supplied\n }\n const fixml = !this.isAscii(description)\n return fixml\n ? new FixmlSessionMsgFactory(description)\n : new AsciiSessionMsgFactory(description)\n }\n\n public newChild (description: ISessionDescription): DependencyContainer {\n const sessionContainer = container.createChildContainer()\n const sf = this.makeSessionFactory(description)\n sessionContainer.registerInstance(DITokens.ISessionDescription, description)\n sessionContainer.registerInstance(DITokens.ISessionMsgFactory, sf)\n return sessionContainer\n }\n\n public async makeSystem (description: ISessionDescription): Promise<DependencyContainer> {\n return await new Promise<DependencyContainer>((resolve, reject) => {\n const sessionContainer = this.newChild(description)\n const factory = sessionContainer.resolve<RuntimeFactory>(RuntimeFactory)\n factory.makeConfig().then((c: IJsFixConfig) => {\n this.registerSession(c, sessionContainer)\n resolve(sessionContainer)\n }).catch(e => {\n reject(e)\n })\n })\n }\n\n public isAscii (description: ISessionDescription): boolean {\n return description.application?.protocol === 'ascii'\n }\n\n public isInitiator (description: ISessionDescription): boolean {\n return description.application?.type === 'initiator'\n }\n\n public asAscii (description: ISessionDescription, sessionContainer: DependencyContainer): void {\n sessionContainer.register<MsgTransmitter>(DITokens.MsgTransmitter, {\n useClass: AsciiMsgTransmitter\n })\n sessionContainer.register<MsgParser>(DITokens.MsgParser, {\n useClass: AsciiParser\n })\n const parseSize = 160 * 1024\n const sendSize = 10 * 1024\n\n sessionContainer.register(DITokens.maxMessageLen, {\n useValue: parseSize\n })\n sessionContainer.register<AsciiSegmentParser>(AsciiSegmentParser, {\n useClass: AsciiSegmentParser\n })\n sessionContainer.register<AsciiParserState>(AsciiParserState, {\n useClass: AsciiParserState\n })\n\n sessionContainer.registerInstance<ElasticBuffer>(DITokens.TransmitBuffer, new ElasticBuffer(sendSize))\n sessionContainer.registerInstance<ElasticBuffer>(DITokens.ParseBuffer, new ElasticBuffer(parseSize))\n\n if (this.isInitiator(description)) {\n sessionContainer.register<TcpInitiator>(TcpInitiator, {\n useClass: TcpInitiator\n })\n sessionContainer.register<RecoveringTcpInitiator>(RecoveringTcpInitiator, {\n useClass: RecoveringTcpInitiator\n })\n sessionContainer.register<TcpInitiatorConnector>(TcpInitiatorConnector, {\n useClass: TcpInitiatorConnector\n })\n if (description.application?.resilient) {\n sessionContainer.register<FixEntity>(DITokens.FixEntity, {\n useClass: RecoveringTcpInitiator\n })\n } else {\n sessionContainer.register<FixEntity>(DITokens.FixEntity, {\n useClass: TcpInitiatorConnector\n })\n }\n } else {\n sessionContainer.register<FixEntity>(DITokens.FixEntity, {\n useClass: TcpAcceptorListener\n })\n }\n }\n\n public asFixml (description: ISessionDescription, sessionContainer: DependencyContainer): void {\n sessionContainer.register<MsgTransmitter>(DITokens.MsgTransmitter, {\n useClass: FixmlMsgTransmitter\n })\n const sendSize = 10 * 1024\n\n sessionContainer.register<MsgParser>(DITokens.MsgParser, {\n useClass: FiXmlParser\n })\n sessionContainer.register(DITokens.maxMessageLocations, {\n useValue: sendSize\n })\n sessionContainer.register<MsgEncoder>(DITokens.MsgEncoder, {\n useClass: FixmlEncoder\n })\n sessionContainer.registerInstance<ElasticBuffer>(DITokens.TransmitBuffer, new ElasticBuffer(sendSize))\n const { HttpInitiator, HttpAcceptorListener, HttpJsonSampleAdapter } = httpTransport()\n sessionContainer.register(HttpAcceptorListener, {\n useClass: HttpAcceptorListener\n })\n sessionContainer.register(HttpInitiator, {\n useClass: HttpInitiator\n })\n if (this.isInitiator(description)) {\n sessionContainer.register<FixEntity>(DITokens.FixEntity, {\n useClass: HttpInitiator\n })\n sessionContainer.register<IHttpAdapter>(DITokens.IHttpAdapter, {\n useClass: HttpJsonSampleAdapter\n })\n } else {\n sessionContainer.register<FixEntity>(DITokens.FixEntity, {\n useClass: HttpAcceptorListener\n })\n }\n }\n\n protected asciiConstants (c: IJsFixConfig, sessionContainer: DependencyContainer): void {\n sessionContainer.register(DITokens.delimiter, {\n useValue: c.delimiter\n })\n sessionContainer.register(DITokens.logDelimiter, {\n useValue: c.logDelimiter\n })\n }\n\n public registerSession (c: IJsFixConfig, sessionContainer: DependencyContainer): void {\n if (this.isAscii(c.description)) {\n this.asAscii(c.description, sessionContainer)\n this.asciiConstants(c, sessionContainer)\n } else {\n this.asFixml(c.description, sessionContainer)\n }\n c.sessionContainer = sessionContainer\n sessionContainer.registerInstance(DITokens.IJsFixConfig, c)\n sessionContainer.registerInstance(DITokens.Definitions, c.definitions)\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/http/oms/app.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4BAAyB;AAEzB,+CAA0C;AAC1C,+CAA0C;AAE1C,8CAA2E;AAI3E,2CAA4B;AAE5B,MAAM,WAAY,SAAQ,yBAAe;IACvC;QACE,KAAK,CACH,uCAAuC,EACvC,sCAAsC,CAAC,CAAA;IAC3C,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACxD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,WAAW;gBACvD,CAAC,CAAC,IAAI,wBAAU,CAAC,aAAa,CAAC;gBAC/B,CAAC,CAAC,IAAI,wBAAU,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/http/oms/app.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4BAAyB;AAEzB,+CAA0C;AAC1C,+CAA0C;AAE1C,8CAA2E;AAI3E,2CAA4B;AAE5B,MAAM,WAAY,SAAQ,yBAAe;IACvC;QACE,KAAK,CACH,uCAAuC,EACvC,sCAAsC,CAAC,CAAA;IAC3C,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACxD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,WAAW;gBACvD,CAAC,CAAC,IAAI,wBAAU,CAAC,aAAa,CAAC;gBAC/B,CAAC,CAAC,IAAI,wBAAU,CAAC,aAAa,CAAC;SAClC,CAAA;IACH,CAAC;IAEK,OAAO,CAAE,EAAU;;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;YACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;oBACf,OAAO,CAAC,IAAI,CAAC,CAAA;gBACf,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBACX,MAAM,CAAC,CAAC,CAAC,CAAA;gBACX,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;KAAA;IAEwB,YAAY,CAAE,gBAAqC;;;YAC1E,MAAM,MAAM,GAAiB,gBAAgB,CAAC,OAAO,CAAe,kBAAQ,CAAC,YAAY,CAAC,CAAA;YAC1F,MAAM,IAAI,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,0CAAE,WAAW,0CAAE,IAAI,CAAA;YACnD,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAe,kBAAQ,CAAC,YAAY,CAAC,CAAA;gBAC5E,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAY,kBAAQ,CAAC,SAAS,CAAC,CAAA;gBACzE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAS,EAAE;oBACxC,OAAO,SAAS,CAAC,KAAK,EAAE,CAAA;gBAC1B,CAAC,CAAA,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;KAAA;CACF;AAED,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAA;AAC3B,CAAC,CAAC,IAAI,EAAE,CAAA","sourcesContent":["import 'reflect-metadata'\n\nimport { HttpServer } from './http-server'\nimport { HttpClient } from './http-client'\nimport { IJsFixConfig } from '../../../config'\nimport { DITokens, EngineFactory, SessionLauncher } from '../../../runtime'\nimport { DependencyContainer } from 'tsyringe'\nimport { FixEntity } from '../../../transport'\nimport { IHttpAdapter } from '../../../transport/http/http-adapter'\nimport * as util from 'util'\n\nclass AppLauncher extends SessionLauncher {\n public constructor () {\n super(\n 'data/session/test-http-initiator.json',\n 'data/session/test-http-acceptor.json')\n }\n\n protected override makeFactory (config: IJsFixConfig): EngineFactory {\n const isInitiator = this.isInitiator(config.description)\n return {\n makeSession: (sessionConfig: IJsFixConfig) => isInitiator\n ? new HttpClient(sessionConfig)\n : new HttpServer(sessionConfig)\n }\n }\n\n async waitFor (ms: number): Promise<any> {\n const to = util.promisify(setTimeout)\n return new Promise((resolve, reject) => {\n to(ms).then(() => {\n resolve(null)\n }).catch(e => {\n reject(e)\n })\n })\n }\n\n protected override async getInitiator (sessionContainer: DependencyContainer): Promise<any> {\n const config: IJsFixConfig = sessionContainer.resolve<IJsFixConfig>(DITokens.IJsFixConfig)\n const http = config?.description?.application?.http\n if (http) {\n http.adapter = sessionContainer.resolve<IHttpAdapter>(DITokens.IHttpAdapter)\n const initiator = sessionContainer.resolve<FixEntity>(DITokens.FixEntity)\n return this.waitFor(1000).then(async () => {\n return initiator.start()\n })\n }\n }\n}\n\nconst l = new AppLauncher()\nl.exec()\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oms-factory.js","sourceRoot":"","sources":["../../../../src/sample/http/oms/oms-factory.ts"],"names":[],"mappings":";;;AAAA,0DAWkC;AAElC,MAAa,UAAU;IAGrB,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAFpC,OAAE,GAAW,CAAC,CAAA;QACd,WAAM,GAAW,CAAC,CAAA;IAE1B,CAAC;IAEM,WAAW,CAAE,MAAc,EAAE,IAAU,EAAE,GAAW,EAAE,KAAa;QACxE,MAAM,EAAE,GAAW,IAAI,CAAC,EAAE,EAAE,CAAA;QAC5B,OAAO;YACL,OAAO,EAAE,MAAM,EAAE,EAAE;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,oBAAO,CAAC,KAAK;YACtB,YAAY,EAAE;gBACZ,QAAQ,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"oms-factory.js","sourceRoot":"","sources":["../../../../src/sample/http/oms/oms-factory.ts"],"names":[],"mappings":";;;AAAA,0DAWkC;AAElC,MAAa,UAAU;IAGrB,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAFpC,OAAE,GAAW,CAAC,CAAA;QACd,WAAM,GAAW,CAAC,CAAA;IAE1B,CAAC;IAEM,WAAW,CAAE,MAAc,EAAE,IAAU,EAAE,GAAW,EAAE,KAAa;QACxE,MAAM,EAAE,GAAW,IAAI,CAAC,EAAE,EAAE,CAAA;QAC5B,OAAO;YACL,OAAO,EAAE,MAAM,EAAE,EAAE;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,oBAAO,CAAC,KAAK;YACtB,YAAY,EAAE;gBACZ,QAAQ,EAAE,GAAG;aACd;YACD,UAAU,EAAE;gBACV,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,WAAW;gBACvB,gBAAgB,EAAE,6BAAgB,CAAC,UAAU;aAC9C;YACD,WAAW,EAAE,wBAAW,CAAC,iBAAiB;SACxB,CAAA;IACtB,CAAC;IAEM,SAAS,CAAE,KAAsB;;QACtC,MAAM,EAAE,GAAW,IAAI,CAAC,MAAM,EAAE,CAAA;QAChC,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,IAAI,IAAI,EAAE;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,KAAK,CAAC,KAAK;YACnB,QAAQ,EAAE,qBAAQ,CAAC,WAAW;YAC9B,SAAS,EAAE,sBAAS,CAAC,MAAM;YAC3B,MAAM,EAAE,OAAO,EAAE,EAAE;YACnB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,YAAY,EAAE;gBACZ,QAAQ,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,0CAAE,QAAQ;aACxC;YACD,UAAU,EAAE;gBACV,MAAM,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,MAAM;gBACjC,UAAU,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,UAAU;gBACzC,gBAAgB,EAAE,6BAAgB,CAAC,UAAU;aAC9C;SACkB,CAAA;IACvB,CAAC;CACF;AAlDD,gCAkDC","sourcesContent":["import {\n INewOrderSingle,\n ExecType,\n OrdStatus,\n OrdType,\n SecurityIDSource,\n Side,\n TimeInForce,\n IOrderQtyData,\n IInstrument,\n IExecutionReport\n} from '../../../types/FIXML50SP2'\n\nexport class OmsFactory {\n private id: number = 1\n private execId: number = 1\n constructor (public readonly account: string) {\n }\n\n public createOrder (symbol: string, side: Side, qty: number, price: number): INewOrderSingle {\n const id: number = this.id++\n return {\n ClOrdID: `Cli${id}`,\n Account: this.account,\n Side: side,\n Price: price,\n OrdType: OrdType.Limit,\n OrderQtyData: {\n OrderQty: qty\n },\n Instrument: {\n Symbol: symbol,\n SecurityID: '459200101',\n SecurityIDSource: SecurityIDSource.IsinNumber\n },\n TimeInForce: TimeInForce.GoodTillCancelGtc\n } as INewOrderSingle\n }\n\n public fillOrder (order: INewOrderSingle): IExecutionReport {\n const id: number = this.execId++\n return {\n ClOrdID: order.ClOrdID,\n OrdType: order.OrdType,\n TransactTime: new Date(),\n AvgPx: order.Price,\n LeavesQty: 0,\n LastPx: order.Price,\n ExecType: ExecType.OrderStatus,\n OrdStatus: OrdStatus.Filled,\n ExecID: `exec${id}`,\n Side: order.Side,\n Price: order.Price,\n OrderQtyData: {\n OrderQty: order?.OrderQtyData?.OrderQty\n },\n Instrument: {\n Symbol: order?.Instrument?.Symbol,\n SecurityID: order?.Instrument?.SecurityID,\n SecurityIDSource: SecurityIDSource.IsinNumber\n }\n } as IExecutionReport\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/tcp/qf-md/app.ts"],"names":[],"mappings":";;AAAA,4BAAyB;AAEzB,2CAAsC;AACtC,2CAAsC;AAEtC,8CAAiE;AAEjE,MAAM,WAAY,SAAQ,yBAAe;IACvC;QACE,KAAK,CACH,uCAAuC,EACvC,sCAAsC,CAAC,CAAA;IAC3C,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACxD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,WAAW;gBACvD,CAAC,CAAC,IAAI,oBAAQ,CAAC,aAAa,CAAC;gBAC7B,CAAC,CAAC,IAAI,oBAAQ,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/tcp/qf-md/app.ts"],"names":[],"mappings":";;AAAA,4BAAyB;AAEzB,2CAAsC;AACtC,2CAAsC;AAEtC,8CAAiE;AAEjE,MAAM,WAAY,SAAQ,yBAAe;IACvC;QACE,KAAK,CACH,uCAAuC,EACvC,sCAAsC,CAAC,CAAA;IAC3C,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACxD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,WAAW;gBACvD,CAAC,CAAC,IAAI,oBAAQ,CAAC,aAAa,CAAC;gBAC7B,CAAC,CAAC,IAAI,oBAAQ,CAAC,aAAa,CAAC;SAChC,CAAA;IACH,CAAC;CACF;AAED,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAA;AAC3B,CAAC,CAAC,IAAI,EAAE,CAAA","sourcesContent":["import 'reflect-metadata'\n\nimport { MDClient } from './md-client'\nimport { MDServer } from './md-server'\nimport { IJsFixConfig } from '../../../config'\nimport { EngineFactory, SessionLauncher } from '../../../runtime'\n\nclass AppLauncher extends SessionLauncher {\n public constructor () {\n super(\n 'data/session/test-qf44-initiator.json',\n 'data/session/test-qf44-acceptor.json')\n }\n\n protected override makeFactory (config: IJsFixConfig): EngineFactory {\n const isInitiator = this.isInitiator(config.description)\n return {\n makeSession: (sessionConfig: IJsFixConfig) => isInitiator\n ? new MDClient(sessionConfig)\n : new MDServer(sessionConfig)\n }\n }\n}\n\nconst l = new AppLauncher()\nl.exec()\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/tcp/skeleton/app.ts"],"names":[],"mappings":";;AAAA,4BAAyB;AAEzB,8CAAiE;AACjE,yDAAoD;AAGpD,MAAM,WAAY,SAAQ,yBAAe;IACvC;QACE,KAAK,CACH,kCAAkC,EAClC,iCAAiC,CAAC,CAAA;IACtC,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,IAAI,kCAAe,CAAC,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/tcp/skeleton/app.ts"],"names":[],"mappings":";;AAAA,4BAAyB;AAEzB,8CAAiE;AACjE,yDAAoD;AAGpD,MAAM,WAAY,SAAQ,yBAAe;IACvC;QACE,KAAK,CACH,kCAAkC,EAClC,iCAAiC,CAAC,CAAA;IACtC,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,IAAI,kCAAe,CAAC,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC;SAC5F,CAAA;IACH,CAAC;CACF;AAED,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAA;AAC3B,CAAC,CAAC,IAAI,EAAE,CAAA","sourcesContent":["import 'reflect-metadata'\n\nimport { SessionLauncher, EngineFactory } from '../../../runtime'\nimport { SkeletonSession } from './skeleton-session'\nimport { IJsFixConfig } from '../../../config'\n\nclass AppLauncher extends SessionLauncher {\n public constructor () {\n super(\n 'data/session/test-initiator.json',\n 'data/session/test-acceptor.json')\n }\n\n protected override makeFactory (config: IJsFixConfig): EngineFactory {\n return {\n makeSession: (sessionConfig: IJsFixConfig) => new SkeletonSession(sessionConfig, 45, false)\n }\n }\n}\n\nconst l = new AppLauncher()\nl.exec()\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-launcher.js","sourceRoot":"","sources":["../../../../src/sample/tcp/trade-capture/app-launcher.ts"],"names":[],"mappings":";;;AAAA,8CAAiE;AAEjE,iEAA2D;AAC3D,iEAA2D;AAE3D,MAAa,WAAY,SAAQ,yBAAe;IAC9C,YAAoB,SAAiB,kCAAkC,EACrE,SAAiB,iCAAiC;QAClD,KAAK,CACH,MAAM,EACN,MAAM,CAAC,CAAA;IACX,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACxD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,WAAW;gBACvD,CAAC,CAAC,IAAI,yCAAkB,CAAC,aAAa,CAAC;gBACvC,CAAC,CAAC,IAAI,yCAAkB,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"app-launcher.js","sourceRoot":"","sources":["../../../../src/sample/tcp/trade-capture/app-launcher.ts"],"names":[],"mappings":";;;AAAA,8CAAiE;AAEjE,iEAA2D;AAC3D,iEAA2D;AAE3D,MAAa,WAAY,SAAQ,yBAAe;IAC9C,YAAoB,SAAiB,kCAAkC,EACrE,SAAiB,iCAAiC;QAClD,KAAK,CACH,MAAM,EACN,MAAM,CAAC,CAAA;IACX,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACxD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,WAAW;gBACvD,CAAC,CAAC,IAAI,yCAAkB,CAAC,aAAa,CAAC;gBACvC,CAAC,CAAC,IAAI,yCAAkB,CAAC,aAAa,CAAC;SAC1C,CAAA;IACH,CAAC;CACF;AAhBD,kCAgBC","sourcesContent":["import { EngineFactory, SessionLauncher } from '../../../runtime'\nimport { IJsFixConfig } from '../../../config'\nimport { TradeCaptureClient } from './trade-capture-client'\nimport { TradeCaptureServer } from './trade-capture-server'\n\nexport class AppLauncher extends SessionLauncher {\n public constructor (client: string = 'data/session/test-initiator.json',\n server: string = 'data/session/test-acceptor.json') {\n super(\n client,\n server)\n }\n\n protected override makeFactory (config: IJsFixConfig): EngineFactory {\n const isInitiator = this.isInitiator(config.description)\n return {\n makeSession: (sessionConfig: IJsFixConfig) => isInitiator\n ? new TradeCaptureClient(sessionConfig)\n : new TradeCaptureServer(sessionConfig)\n }\n }\n}\n"]}
|