jspurefix 3.4.0 → 4.0.0
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/appveyor.yml +1 -1
- package/dist/buffer/ascii/ascii-encoder.d.ts +2 -2
- package/dist/buffer/ascii/ascii-encoder.js +1 -1
- package/dist/buffer/ascii/ascii-encoder.js.map +1 -1
- package/dist/buffer/ascii/ascii-parser-state.d.ts +3 -2
- package/dist/buffer/ascii/ascii-parser-state.js +1 -2
- package/dist/buffer/ascii/ascii-parser-state.js.map +1 -1
- package/dist/buffer/ascii/ascii-parser.d.ts +1 -1
- package/dist/buffer/ascii/ascii-parser.js +5 -4
- package/dist/buffer/ascii/ascii-parser.js.map +1 -1
- package/dist/buffer/ascii/ascii-segment-parser.js.map +1 -1
- package/dist/buffer/ascii/ascii-view.d.ts +4 -3
- package/dist/buffer/ascii/ascii-view.js +8 -5
- package/dist/buffer/ascii/ascii-view.js.map +1 -1
- package/dist/buffer/encode-proxy.js +1 -1
- package/dist/buffer/encode-proxy.js.map +1 -1
- package/dist/buffer/fixml/fixml-encoder.d.ts +2 -2
- package/dist/buffer/fixml/fixml-encoder.js +1 -1
- package/dist/buffer/fixml/fixml-encoder.js.map +1 -1
- package/dist/buffer/fixml/fixml-parser.js +2 -2
- package/dist/buffer/fixml/fixml-parser.js.map +1 -1
- package/dist/buffer/fixml/fixml-view.d.ts +3 -2
- package/dist/buffer/fixml/fixml-view.js +5 -4
- package/dist/buffer/fixml/fixml-view.js.map +1 -1
- package/dist/buffer/msg-encoder.d.ts +2 -2
- package/dist/buffer/msg-encoder.js.map +1 -1
- package/dist/buffer/msg-view.d.ts +8 -6
- package/dist/buffer/msg-view.js +10 -8
- package/dist/buffer/msg-view.js.map +1 -1
- package/dist/buffer/segment/segment-description.d.ts +3 -3
- package/dist/buffer/segment/segment-description.js.map +1 -1
- package/dist/buffer/tag/tags.d.ts +2 -5
- package/dist/buffer/tag/tags.js +4 -5
- package/dist/buffer/tag/tags.js.map +1 -1
- package/dist/collections/collection.d.ts +0 -1
- package/dist/collections/collection.js.map +1 -1
- package/dist/collections/index.d.ts +0 -1
- package/dist/collections/index.js +0 -17
- package/dist/collections/index.js.map +1 -1
- package/dist/config/js-fix-config.d.ts +2 -1
- package/dist/config/js-fix-config.js +3 -3
- package/dist/config/js-fix-config.js.map +1 -1
- package/dist/dictionary/compiler/compiler-type.d.ts +3 -3
- package/dist/dictionary/compiler/compiler-type.js.map +1 -1
- package/dist/dictionary/compiler/enum-compiler.js +2 -2
- package/dist/dictionary/compiler/enum-compiler.js.map +1 -1
- package/dist/dictionary/compiler/msg-compiler.d.ts +1 -2
- package/dist/dictionary/compiler/msg-compiler.js +6 -7
- package/dist/dictionary/compiler/msg-compiler.js.map +1 -1
- package/dist/dictionary/contained/contained-component-field.d.ts +1 -1
- package/dist/dictionary/contained/contained-component-field.js.map +1 -1
- package/dist/dictionary/contained/contained-field-set.d.ts +9 -20
- package/dist/dictionary/contained/contained-field-set.js +16 -149
- package/dist/dictionary/contained/contained-field-set.js.map +1 -1
- package/dist/dictionary/contained/contained-group-field.d.ts +1 -1
- package/dist/dictionary/contained/contained-group-field.js.map +1 -1
- package/dist/dictionary/contained/contained-set-builder.d.ts +15 -0
- package/dist/dictionary/contained/contained-set-builder.js +142 -0
- package/dist/dictionary/contained/contained-set-builder.js.map +1 -0
- package/dist/dictionary/contained/contained-set.d.ts +32 -0
- package/dist/{types/FIX.5.0SP2/quickfix/xm_lnon_fix.js → dictionary/contained/contained-set.js} +1 -1
- package/dist/dictionary/contained/contained-set.js.map +1 -0
- package/dist/dictionary/contained/contained-simple-field.d.ts +1 -1
- package/dist/dictionary/contained/contained-simple-field.js.map +1 -1
- package/dist/dictionary/contained/index.d.ts +4 -1
- package/dist/dictionary/contained/index.js +4 -1
- package/dist/dictionary/contained/index.js.map +1 -1
- package/dist/dictionary/definition/category-simple-set.d.ts +1 -2
- package/dist/dictionary/definition/category-simple-set.js +1 -2
- package/dist/dictionary/definition/category-simple-set.js.map +1 -1
- package/dist/dictionary/definition/component-field-definition.d.ts +1 -1
- package/dist/dictionary/definition/component-field-definition.js +2 -2
- package/dist/dictionary/definition/component-field-definition.js.map +1 -1
- package/dist/dictionary/definition/fix-definitions.d.ts +8 -9
- package/dist/dictionary/definition/fix-definitions.js +22 -20
- package/dist/dictionary/definition/fix-definitions.js.map +1 -1
- package/dist/dictionary/definition/group-field-definition.d.ts +1 -1
- package/dist/dictionary/definition/group-field-definition.js +2 -2
- package/dist/dictionary/definition/group-field-definition.js.map +1 -1
- package/dist/dictionary/definition/message-definition.d.ts +1 -1
- package/dist/dictionary/definition/message-definition.js +2 -2
- package/dist/dictionary/definition/message-definition.js.map +1 -1
- package/dist/dictionary/definition/simple-field-definition.d.ts +2 -3
- package/dist/dictionary/definition/simple-field-definition.js +6 -7
- package/dist/dictionary/definition/simple-field-definition.js.map +1 -1
- package/dist/dictionary/parser/fix-repository/repository.js +20 -20
- package/dist/dictionary/parser/fix-repository/repository.js.map +1 -1
- package/dist/dictionary/parser/fixml/components-parser.js +18 -16
- package/dist/dictionary/parser/fixml/components-parser.js.map +1 -1
- package/dist/dictionary/parser/fixml/fields-parser.js +2 -3
- package/dist/dictionary/parser/fixml/fields-parser.js.map +1 -1
- package/dist/dictionary/parser/fixml/include-graph.js +8 -9
- package/dist/dictionary/parser/fixml/include-graph.js.map +1 -1
- package/dist/dictionary/parser/quickfix/field-definition-parser.js.map +1 -1
- package/dist/dictionary/parser/quickfix/message-parser.js +2 -1
- package/dist/dictionary/parser/quickfix/message-parser.js.map +1 -1
- package/dist/dictionary/parser/quickfix/node-parser.js +3 -2
- package/dist/dictionary/parser/quickfix/node-parser.js.map +1 -1
- package/dist/dictionary/parser/quickfix/parse-context.d.ts +3 -3
- package/dist/dictionary/parser/quickfix/parse-context.js.map +1 -1
- package/dist/dictionary/parser/quickfix/parse-progress.d.ts +1 -2
- package/dist/dictionary/parser/quickfix/parse-progress.js +2 -3
- package/dist/dictionary/parser/quickfix/parse-progress.js.map +1 -1
- package/dist/dictionary/parser/quickfix/quick-fix-xml-file-builder.js +4 -5
- package/dist/dictionary/parser/quickfix/quick-fix-xml-file-builder.js.map +1 -1
- package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js +6 -6
- package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js.map +1 -1
- package/dist/dictionary/parser/quickfix/quick-fix-xml-formatter.d.ts +1 -1
- package/dist/dictionary/parser/quickfix/quick-fix-xml-formatter.js.map +1 -1
- package/dist/dictionary/set-reduce.d.ts +2 -2
- package/dist/dictionary/set-reduce.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/jsfix-cmd.js +4 -5
- package/dist/jsfix-cmd.js.map +1 -1
- package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js +7 -8
- package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js.map +1 -1
- package/dist/sample/tcp/trade-capture/trade-capture-client.js +3 -4
- package/dist/sample/tcp/trade-capture/trade-capture-client.js.map +1 -1
- package/dist/sample/tcp/trade-capture/trade-capture-server.js.map +1 -1
- package/dist/store/fix-msg-ascii-store-resend.d.ts +4 -3
- package/dist/store/fix-msg-ascii-store-resend.js +21 -5
- package/dist/store/fix-msg-ascii-store-resend.js.map +1 -1
- package/dist/store/fix-msg-memory-store.js +3 -4
- package/dist/store/fix-msg-memory-store.js.map +1 -1
- package/dist/store/fix-msg-store-record.js.map +1 -1
- package/dist/test/ascii/ascii-encoder.test.js.map +1 -1
- package/dist/test/ascii/ascii-store-replay.test.js +14 -1
- package/dist/test/ascii/ascii-store-replay.test.js.map +1 -1
- package/dist/test/ascii/fix-log-replay.test.js.map +1 -1
- package/dist/test/ascii/fix-repo-dict.test.js.map +1 -1
- package/dist/test/ascii/qf-50sp0-dict.test.js +7 -7
- package/dist/test/ascii/qf-50sp0-dict.test.js.map +1 -1
- package/dist/test/ascii/qf-50sp2-dict.test.js +5 -2
- package/dist/test/ascii/qf-50sp2-dict.test.js.map +1 -1
- package/dist/test/ascii/session.test.js +64 -15
- package/dist/test/ascii/session.test.js.map +1 -1
- package/dist/test/env/encoder-test.d.ts +3 -3
- package/dist/test/env/encoder-test.js.map +1 -1
- package/dist/test/env/set-constraint-helper.d.ts +4 -4
- package/dist/test/env/set-constraint-helper.js.map +1 -1
- package/dist/transport/ascii/ascii-msg-transmitter.js.map +1 -1
- package/dist/transport/ascii/ascii-session.js +5 -2
- package/dist/transport/ascii/ascii-session.js.map +1 -1
- package/dist/transport/fixml/fixml-session.js.map +1 -1
- package/dist/transport/http/http-acceptor.js +3 -4
- package/dist/transport/http/http-acceptor.js.map +1 -1
- package/dist/transport/http/http-json-sample-adapter.js +3 -4
- package/dist/transport/http/http-json-sample-adapter.js.map +1 -1
- package/dist/transport/session/dynamic-session-manager.d.ts +8 -0
- package/dist/transport/session/dynamic-session-manager.js +15 -0
- package/dist/transport/session/dynamic-session-manager.js.map +1 -0
- package/dist/transport/session/session-description.d.ts +9 -7
- package/dist/transport/session/session-description.js.map +1 -1
- package/dist/util/json-helper.d.ts +2 -2
- package/dist/util/json-helper.js.map +1 -1
- package/dist/util/message-generator.js +1 -1
- package/dist/util/message-generator.js.map +1 -1
- package/package.json +21 -21
- package/src/buffer/ascii/ascii-encoder.ts +7 -7
- package/src/buffer/ascii/ascii-parser-state.ts +4 -4
- package/src/buffer/ascii/ascii-parser.ts +6 -5
- package/src/buffer/ascii/ascii-segment-parser.ts +2 -2
- package/src/buffer/ascii/ascii-view.ts +9 -7
- package/src/buffer/encode-proxy.ts +9 -9
- package/src/buffer/fixml/fixml-encoder.ts +14 -10
- package/src/buffer/fixml/fixml-parser.ts +5 -5
- package/src/buffer/fixml/fixml-view.ts +5 -5
- package/src/buffer/msg-encoder.ts +3 -3
- package/src/buffer/msg-view.ts +18 -18
- package/src/buffer/segment/segment-description.ts +2 -2
- package/src/buffer/tag/tags.ts +4 -6
- package/src/collections/collection.ts +0 -1
- package/src/collections/index.ts +1 -1
- package/src/config/js-fix-config.ts +3 -2
- package/src/dictionary/compiler/compiler-type.ts +8 -2
- package/src/dictionary/compiler/enum-compiler.ts +2 -2
- package/src/dictionary/compiler/msg-compiler.ts +11 -12
- package/src/dictionary/contained/contained-component-field.ts +1 -1
- package/src/dictionary/contained/contained-field-set.ts +21 -176
- package/src/dictionary/contained/contained-group-field.ts +1 -1
- package/src/dictionary/contained/contained-set-builder.ts +164 -0
- package/src/dictionary/contained/contained-set.ts +83 -0
- package/src/dictionary/contained/contained-simple-field.ts +1 -1
- package/src/dictionary/contained/index.ts +4 -1
- package/src/dictionary/definition/category-simple-set.ts +1 -2
- package/src/dictionary/definition/component-field-definition.ts +1 -1
- package/src/dictionary/definition/fix-definitions.ts +28 -26
- package/src/dictionary/definition/group-field-definition.ts +1 -1
- package/src/dictionary/definition/message-definition.ts +6 -6
- package/src/dictionary/definition/simple-field-definition.ts +9 -10
- package/src/dictionary/parser/fix-repository/repository.ts +47 -40
- package/src/dictionary/parser/fixml/components-parser.ts +41 -38
- package/src/dictionary/parser/fixml/fields-parser.ts +3 -4
- package/src/dictionary/parser/fixml/include-graph.ts +13 -14
- package/src/dictionary/parser/quickfix/field-definition-parser.ts +5 -5
- package/src/dictionary/parser/quickfix/message-parser.ts +7 -5
- package/src/dictionary/parser/quickfix/node-parser.ts +13 -6
- package/src/dictionary/parser/quickfix/parse-context.ts +2 -2
- package/src/dictionary/parser/quickfix/parse-progress.ts +2 -3
- package/src/dictionary/parser/quickfix/quick-fix-xml-file-builder.ts +4 -5
- package/src/dictionary/parser/quickfix/quick-fix-xml-file-parser.ts +10 -12
- package/src/dictionary/parser/quickfix/quick-fix-xml-formatter.ts +1 -1
- package/src/dictionary/set-reduce.ts +3 -3
- package/src/index.ts +0 -1
- package/src/jsfix-cmd.ts +5 -6
- package/src/sample/tcp/recovering-skeleton/respawn-acceptor.ts +7 -8
- package/src/sample/tcp/trade-capture/trade-capture-client.ts +4 -5
- package/src/sample/tcp/trade-capture/trade-capture-server.ts +1 -1
- package/src/store/fix-msg-ascii-store-resend.ts +64 -8
- package/src/store/fix-msg-memory-store.ts +3 -4
- package/src/store/fix-msg-store-record.ts +1 -1
- package/src/transport/ascii/ascii-msg-transmitter.ts +6 -6
- package/src/transport/ascii/ascii-session.ts +11 -7
- package/src/transport/fixml/fixml-session.ts +3 -3
- package/src/transport/http/http-acceptor.ts +4 -5
- package/src/transport/http/http-json-sample-adapter.ts +3 -4
- package/src/transport/session/dynamic-session-manager.ts +16 -0
- package/src/transport/session/session-description.ts +10 -7
- package/src/util/json-helper.ts +3 -3
- package/src/util/message-generator.ts +4 -4
- package/dist/collections/dictionary.d.ts +0 -15
- package/dist/collections/dictionary.js +0 -57
- package/dist/collections/dictionary.js.map +0 -1
- package/dist/types/FIX.5.0SP2/quickfix/execution_acknowledgement.d.ts +0 -31
- package/dist/types/FIX.5.0SP2/quickfix/execution_acknowledgement.js +0 -3
- package/dist/types/FIX.5.0SP2/quickfix/execution_acknowledgement.js.map +0 -1
- package/dist/types/FIX.5.0SP2/quickfix/mass_quote_acknowledgement.d.ts +0 -26
- package/dist/types/FIX.5.0SP2/quickfix/mass_quote_acknowledgement.js +0 -3
- package/dist/types/FIX.5.0SP2/quickfix/mass_quote_acknowledgement.js.map +0 -1
- package/dist/types/FIX.5.0SP2/quickfix/set/hop_grp.d.ts +0 -5
- package/dist/types/FIX.5.0SP2/quickfix/set/hop_grp.js +0 -3
- package/dist/types/FIX.5.0SP2/quickfix/set/hop_grp.js.map +0 -1
- package/dist/types/FIX.5.0SP2/quickfix/set/msg_type_grp.d.ts +0 -8
- package/dist/types/FIX.5.0SP2/quickfix/set/msg_type_grp.js +0 -3
- package/dist/types/FIX.5.0SP2/quickfix/set/msg_type_grp.js.map +0 -1
- package/dist/types/FIX.5.0SP2/quickfix/set/not_affected_orders_grp.d.ts +0 -4
- package/dist/types/FIX.5.0SP2/quickfix/set/not_affected_orders_grp.js +0 -3
- package/dist/types/FIX.5.0SP2/quickfix/set/not_affected_orders_grp.js.map +0 -1
- package/dist/types/FIX.5.0SP2/quickfix/xm_lnon_fix.d.ts +0 -6
- package/dist/types/FIX.5.0SP2/quickfix/xm_lnon_fix.js.map +0 -1
- package/src/collections/dictionary.ts +0 -62
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"include-graph.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/fixml/include-graph.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"include-graph.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/fixml/include-graph.ts"],"names":[],"mappings":"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","sourcesContent":["import { SAXStream } from '../../dict-primitive'\r\nimport { INumericKeyed } from '../../../collections/collection'\r\nimport * as path from 'path'\r\nimport * as fs from 'fs'\r\nimport { ISaxNode } from '../../sax-node'\r\n\r\nexport interface IInclude {\r\n parent: string\r\n children: string[]\r\n}\r\n\r\nexport interface IGraphNode {\r\n file: string\r\n node: number\r\n edges: number[]\r\n}\r\n\r\n/*\r\n construct a dependency graph from all the xsd files to compute an order to build the definition\r\n */\r\n\r\nexport class IncludeGraph {\r\n private nodes: Map<string, number>\r\n private includes: IInclude[]\r\n private graph: INumericKeyed<IGraphNode>\r\n constructor (public readonly root: string, public readonly main: string) {\r\n }\r\n\r\n public async build (): Promise<any> {\r\n this.includes = await this.getIncludes(this.main)\r\n this.assignNodes()\r\n this.getGraph()\r\n }\r\n\r\n public resolve (file: string): string[] | null {\r\n const label: number | undefined = this.nodes.get(file)\r\n if (label == null) {\r\n return null\r\n }\r\n const depends: number[] = []\r\n this.resolve_nodes(label, depends)\r\n return depends.map((i: number) => {\r\n return this.graph[i].file\r\n })\r\n }\r\n\r\n private resolve_nodes (label: number, depends: number[]): void {\r\n const node: IGraphNode = this.graph[label]\r\n if (node) {\r\n node.edges.forEach(e => {\r\n if (!depends.includes(e)) {\r\n this.resolve_nodes(e, depends)\r\n }\r\n })\r\n }\r\n depends.push(label)\r\n }\r\n\r\n private getGraph (): void {\r\n const nodes = this.nodes\r\n this.graph = this.includes.reduce<INumericKeyed<IGraphNode>>((a: INumericKeyed<IGraphNode>, current: IInclude) => {\r\n const parent: number | undefined = nodes.get(current.parent)\r\n if (parent == null) return a\r\n let parentNode = a[parent]\r\n if (!parentNode) {\r\n a[parent] = parentNode = {\r\n file: current.parent,\r\n node: parent,\r\n edges: []\r\n } as IGraphNode\r\n }\r\n current.children.forEach((s: string) => {\r\n const child: number | undefined = nodes.get(s)\r\n if (child) {\r\n if (!parentNode.edges.includes(child)) {\r\n parentNode.edges.push(child)\r\n }\r\n }\r\n })\r\n return a\r\n }, {})\r\n }\r\n\r\n private assignNodes (): void {\r\n let next: number = 0\r\n this.nodes = this.includes.reduce((a: Map<string, number>, current: IInclude) => {\r\n if (!a.has(current.parent)) {\r\n a.set(current.parent, next++)\r\n }\r\n current.children.forEach((c: string) => {\r\n if (!a.has(c)) {\r\n a.set(c, next++)\r\n }\r\n })\r\n return a\r\n }, new Map<string, number>())\r\n }\r\n\r\n private async scanIncludes (file: string): Promise<string[]> {\r\n return await new Promise<string[]>((resolve, reject) => {\r\n const includes: string[] = []\r\n const pass: fs.ReadStream = fs.createReadStream(path.join(this.root, file))\r\n const saxStream: SAXStream = require('sax').createStream(true, {})\r\n saxStream.on('opentag', (node) => {\r\n const saxNode: ISaxNode = node\r\n switch (saxNode.name) {\r\n case 'xs:include': {\r\n includes.push(saxNode.attributes.schemaLocation)\r\n break\r\n }\r\n }\r\n })\r\n saxStream.on('ready', () => {\r\n resolve(includes)\r\n })\r\n saxStream.on('error', (r) => {\r\n reject(r)\r\n })\r\n pass.pipe(saxStream)\r\n })\r\n }\r\n\r\n private async getIncludes (main: string): Promise<IInclude[]> {\r\n const q: any[] = []\r\n q.push([main])\r\n const ordered: IInclude[] = []\r\n const seen: Map<string, boolean> = new Map<string, boolean>()\r\n return await new Promise<IInclude[]>(async (resolve, reject) => {\r\n try {\r\n while (q.length > 0) {\r\n const batch: string[] = q.pop()\r\n for (const next of batch) {\r\n if (seen.has(next)) {\r\n continue\r\n }\r\n seen.set(next, true)\r\n const includes: string[] = await this.scanIncludes(next)\r\n ordered.push({\r\n parent: next,\r\n children: includes\r\n } as IInclude)\r\n q.push(includes)\r\n }\r\n }\r\n resolve(ordered)\r\n } catch (e) {\r\n reject(e)\r\n }\r\n })\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-definition-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/field-definition-parser.ts"],"names":[],"mappings":";;;AAAA,iDAAwD;AACxD,+CAA0C;AAI1C,MAAa,qBAAsB,SAAQ,wBAAU;IAEnD,YAAgC,QAAuB;QACrD,KAAK,CAAC,QAAQ,CAAC,CAAA;QADe,aAAQ,GAAR,QAAQ,CAAe;IAEvD,CAAC;IAEM,IAAI,CAAE,IAAY,EAAE,IAAc;QACvC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,YAAY,GAAG,IAAI,kCAAqB,CAC3C,IAAI,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"field-definition-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/field-definition-parser.ts"],"names":[],"mappings":";;;AAAA,iDAAwD;AACxD,+CAA0C;AAI1C,MAAa,qBAAsB,SAAQ,wBAAU;IAEnD,YAAgC,QAAuB;QACrD,KAAK,CAAC,QAAQ,CAAC,CAAA;QADe,aAAQ,GAAR,QAAQ,CAAe;IAEvD,CAAC;IAEM,IAAI,CAAE,IAAY,EAAE,IAAc;QACvC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,YAAY,GAAG,IAAI,kCAAqB,CAC3C,IAAI,CAAC,UAAU,CAAC,MAAgB,EAChC,IAAI,CAAC,UAAU,CAAC,IAAc,EAC9B,IAAI,CAAC,UAAU,CAAC,IAAc,EAC9B,IAAI,EACJ,IAAI,EACJ,IAAI,CAAC,UAAU,CAAC,IAAc,EAC9B,IAAI,CAAC,CAAA;gBACP,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;gBAC1B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBAC9D,MAAK;YACP,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAc,EAAE,IAAI,CAAC,UAAU,CAAC,WAAqB,CAAC,CAAA;gBAChG,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;IAEM,KAAK,CAAE,IAAY,EAAE,IAAY;IACxC,CAAC;CACF;AA/BD,sDA+BC","sourcesContent":["import { SimpleFieldDefinition } from '../../definition'\r\nimport { NodeParser } from './node-parser'\r\nimport { ISaxNode } from '../../sax-node'\r\nimport { ParseProgress } from './parse-progress'\r\n\r\nexport class FieldDefinitionParser extends NodeParser {\r\n private currentField: SimpleFieldDefinition\r\n constructor (protected readonly progress: ParseProgress) {\r\n super(progress)\r\n }\r\n\r\n public open (line: number, node: ISaxNode): void {\r\n switch (node.name) {\r\n case 'field': {\r\n this.currentField = new SimpleFieldDefinition(\r\n node.attributes.number as string,\r\n node.attributes.name as string,\r\n node.attributes.name as string,\r\n null,\r\n null,\r\n node.attributes.type as string,\r\n null)\r\n this.progress.newDefines++\r\n this.progress.definitions.addSimpleFieldDef(this.currentField)\r\n break\r\n }\r\n\r\n case 'value': {\r\n this.currentField.addEnum(node.attributes.enum as string, node.attributes.description as string)\r\n break\r\n }\r\n }\r\n }\r\n\r\n public close (line: number, name: string): void {\r\n }\r\n}\r\n"]}
|
|
@@ -39,12 +39,13 @@ class MessageParser extends node_parser_1.NodeParser {
|
|
|
39
39
|
}
|
|
40
40
|
header(msg, context) {
|
|
41
41
|
const hdr = this.progress.definitions.component.get('StandardHeader');
|
|
42
|
+
const builder = new contained_1.ContainedSetBuilder(msg);
|
|
42
43
|
const contained = hdr
|
|
43
44
|
? new contained_1.ContainedComponentField(hdr, msg.fields.length, true)
|
|
44
45
|
: null;
|
|
45
46
|
if (contained) {
|
|
46
47
|
this.progress.newAdds++;
|
|
47
|
-
|
|
48
|
+
builder.add(contained);
|
|
48
49
|
this.startContext(context);
|
|
49
50
|
}
|
|
50
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/message-parser.ts"],"names":[],"mappings":";;;AAAA,iDAAoD;AACpD,+CAA0C;AAC1C,mDAA8C;AAC9C,+
|
|
1
|
+
{"version":3,"file":"message-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/message-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { MessageDefinition } from '../../definition'\r\nimport { NodeParser } from './node-parser'\r\nimport { ParseContext } from './parse-context'\r\nimport { ContainedComponentField, ContainedSetBuilder } from '../../contained'\r\nimport { ISaxNode } from '../../sax-node'\r\nimport { ParseProgress } from './parse-progress'\r\nimport { ILooseObject } from '../../../collections/collection'\r\n\r\nexport class MessageParser extends NodeParser {\r\n constructor (protected readonly progress: ParseProgress) {\r\n super(progress)\r\n }\r\n\r\n public open (line: number, node: ISaxNode): void {\r\n switch (node.name) {\r\n case 'message': {\r\n const att: ILooseObject = node.attributes\r\n const msg: MessageDefinition = new MessageDefinition(att.name as string, att.name as string, att.msgtype as string, att.msgcat as string, null)\r\n const context: ParseContext = new ParseContext(msg.name, true, msg)\r\n this.header(msg, context)\r\n break\r\n }\r\n\r\n case 'field': {\r\n this.addSimple(node)\r\n break\r\n }\r\n\r\n case 'component': {\r\n if (node.isSelfClosing) {\r\n this.addComponentField(node.attributes.name as string, node)\r\n }\r\n break\r\n }\r\n\r\n case 'group': {\r\n if (!node.isSelfClosing) {\r\n this.beginGroupDefinition(node)\r\n }\r\n break\r\n }\r\n }\r\n }\r\n\r\n private header (msg: MessageDefinition, context: ParseContext): void {\r\n const hdr = this.progress.definitions.component.get('StandardHeader')\r\n const builder = new ContainedSetBuilder(msg)\r\n const contained = hdr\r\n ? new ContainedComponentField(hdr, msg.fields.length, true)\r\n : null\r\n if (contained) {\r\n this.progress.newAdds++\r\n builder.add(contained)\r\n this.startContext(context)\r\n }\r\n }\r\n\r\n public close (line: number, name: string): void {\r\n switch (name) {\r\n case 'message': {\r\n const parent: ParseContext | null = this.parseContexts.pop() ?? null\r\n const message: MessageDefinition | null = parent?.asMessage() ?? null\r\n if (message) {\r\n this.progress.newDefines++\r\n this.progress.definitions.addMessage(message)\r\n }\r\n break\r\n }\r\n\r\n case 'group': {\r\n this.addGroupField(name)\r\n break\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -12,7 +12,8 @@ class NodeParser {
|
|
|
12
12
|
addto(context, containedField) {
|
|
13
13
|
if (context.set != null) {
|
|
14
14
|
this.progress.newAdds++;
|
|
15
|
-
context.set
|
|
15
|
+
const builder = new contained_1.ContainedSetBuilder(context.set);
|
|
16
|
+
builder.add(containedField);
|
|
16
17
|
}
|
|
17
18
|
else {
|
|
18
19
|
this.progress.cacheMisses++;
|
|
@@ -143,7 +144,7 @@ class NodeParser {
|
|
|
143
144
|
let cached = this.progress.groupDefinitionCache.get(fullQualifiedName);
|
|
144
145
|
if (!cached) {
|
|
145
146
|
cached = new definition_1.GroupFieldDefinition(groupName, groupName, null, noOfField, null);
|
|
146
|
-
this.progress.groupDefinitionCache.
|
|
147
|
+
this.progress.groupDefinitionCache.set(fullQualifiedName, cached);
|
|
147
148
|
}
|
|
148
149
|
else {
|
|
149
150
|
cached.reset();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/node-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContainedComponentField, ContainedField, ContainedGroupField, ContainedSimpleField } from '../../contained'\r\nimport { ComponentFieldDefinition, GroupFieldDefinition, SimpleFieldDefinition } from '../../definition'\r\nimport { ParseContext } from './parse-context'\r\nimport { ISaxNode } from '../../sax-node'\r\nimport { ParseProgress } from './parse-progress'\r\n\r\nexport abstract class NodeParser {\r\n protected readonly parseContexts: ParseContext[] = []\r\n\r\n protected constructor (protected readonly progress: ParseProgress) {\r\n }\r\n\r\n public abstract open (line: number, node: ISaxNode): void\r\n\r\n public abstract close (line: number, node: string): void\r\n\r\n protected addto (context: ParseContext, containedField: ContainedField): void {\r\n if (context.set != null) {\r\n this.progress.newAdds++\r\n context.set.add(containedField)\r\n } else {\r\n this.progress.cacheMisses++\r\n }\r\n }\r\n\r\n protected fullContextName (): string {\r\n return this.parseContexts.map(c => c.name).join('.')\r\n }\r\n\r\n protected addSimple (node: ISaxNode): void {\r\n if (node.isSelfClosing) {\r\n const parent: ParseContext | null = this.peek()\r\n if (!parent) {\r\n throw new Error(`simple field ${node.name} has no parent on which to add.`)\r\n }\r\n const fieldName: string = node.attributes.name\r\n const fieldDefinition: SimpleFieldDefinition | null = this.progress.definitions.simple.get(fieldName)\r\n if (!fieldDefinition) {\r\n throw new Error(`simple field ${fieldName} has no declaration in dictionary.`)\r\n }\r\n const containedField: ContainedSimpleField = this.makeContainedSimple(fieldDefinition, parent, node.attributes.required === 'Y')\r\n this.addto(parent, containedField)\r\n }\r\n }\r\n\r\n protected makeContainedSimple (fieldDefinition: SimpleFieldDefinition, context: ParseContext, required: boolean): ContainedSimpleField {\r\n return new ContainedSimpleField(fieldDefinition, context?.set?.fields?.length ?? 0, required, false)\r\n }\r\n\r\n protected makeContainedComponent (fieldDef: ComponentFieldDefinition, context: ParseContext): ContainedComponentField {\r\n return new ContainedComponentField(fieldDef, context?.set?.fields?.length ?? 0, context.required)\r\n }\r\n\r\n protected makeContainedGroup (fieldDef: GroupFieldDefinition, context: ParseContext, required: boolean): ContainedGroupField {\r\n return new ContainedGroupField(fieldDef, context?.set?.fields?.length ?? 0, required)\r\n }\r\n\r\n protected addComponentField (componentName: string, node: ISaxNode): void {\r\n const parent: ParseContext | null = this.peek()\r\n if (!parent) {\r\n throw new Error(`component ${node.name} has no parent on which to add.`)\r\n }\r\n const fieldDef: ComponentFieldDefinition | null = this.progress.definitions.component.get(componentName)\r\n if (fieldDef) {\r\n const containedField: ContainedComponentField = this.makeContainedComponent(fieldDef, parent)\r\n this.addto(parent, containedField)\r\n } else {\r\n if (this.progress.numberPasses >= this.progress.maxIterations) {\r\n throw new Error(`field ${node.name} includes unknown component ${componentName}.`)\r\n } else {\r\n this.progress.cacheMisses++\r\n }\r\n }\r\n }\r\n\r\n protected addComponentDefinition (name: string): void {\r\n const latest: ParseContext | null = this.parseContexts.pop() ?? null\r\n if (!latest) {\r\n throw new Error(`component field ${name} closes yet does not exist.`)\r\n }\r\n if (!latest.defining) {\r\n return\r\n }\r\n const asComponent: ComponentFieldDefinition | null = latest.asComponent() ?? null\r\n if (asComponent) {\r\n this.progress.newDefines++\r\n this.progress.definitions.addComponentFieldDef(asComponent)\r\n } else {\r\n throw new Error(`latest not instance of component field ${latest.name} `)\r\n }\r\n }\r\n\r\n protected addGroupField (name: string): void {\r\n const group: ParseContext | null = this.parseContexts.pop() ?? null\r\n if (!group) {\r\n throw new Error(`group field ${name} closes yet does not exist.`)\r\n }\r\n const parent: ParseContext | null = this.peek()\r\n if (parent) {\r\n const asGroup: GroupFieldDefinition | null = group.asGroup()\r\n if (asGroup) {\r\n const containedField: ContainedGroupField = this.makeContainedGroup(asGroup, parent, group.required)\r\n this.addto(parent, containedField)\r\n }\r\n } else {\r\n throw new Error(`group field ${group.name} has no parent on which to add.`)\r\n }\r\n }\r\n\r\n private expandName (componentName: string): string {\r\n switch (componentName) {\r\n case 'header': {\r\n return 'StandardHeader'\r\n }\r\n\r\n case 'trailer': {\r\n return 'StandardTrailer'\r\n }\r\n\r\n default:\r\n return componentName\r\n }\r\n }\r\n\r\n protected beginComponentDefinition (node: ISaxNode): void {\r\n const componentName: string = node.attributes.name || node.name\r\n const fullName = this.expandName(componentName)\r\n if (!node.isSelfClosing) {\r\n const set: ComponentFieldDefinition = new ComponentFieldDefinition(fullName, componentName, null, null)\r\n const context: ParseContext = new ParseContext(fullName, true, set)\r\n this.startContext(context)\r\n } else {\r\n this.addComponentField(fullName, node)\r\n const context: ParseContext = new ParseContext(fullName, false, null)\r\n this.startContext(context)\r\n }\r\n }\r\n\r\n protected beginGroupDefinition (node: ISaxNode): void {\r\n if (node.isSelfClosing) return\r\n // a group should have a field that matches its name\r\n const groupName: string = node.attributes.name\r\n const noOfField: SimpleFieldDefinition | null = this.progress.definitions.simple.get(groupName) ?? null\r\n if (!noOfField) {\r\n const msg: string = `group ${groupName} has no field defined.`\r\n throw new Error(msg)\r\n }\r\n const fullQualifiedName = `${this.fullContextName()}.${groupName}`\r\n let cached: (GroupFieldDefinition | null) = this.progress.groupDefinitionCache.get(fullQualifiedName)\r\n if (!cached) {\r\n cached = new GroupFieldDefinition(groupName, groupName, null, noOfField, null)\r\n this.progress.groupDefinitionCache.add(fullQualifiedName, cached)\r\n } else {\r\n cached.reset()\r\n }\r\n const context: ParseContext = new ParseContext(node.attributes.name, true, cached)\r\n context.required = node.attributes.required === 'Y'\r\n this.startContext(context)\r\n }\r\n\r\n protected startContext (context: ParseContext): void {\r\n this.progress.newContexts++\r\n this.parseContexts.push(context)\r\n }\r\n\r\n private peek (): ParseContext | null {\r\n return this.parseContexts.length > 0 ? this.parseContexts[this.parseContexts.length - 1] : null\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"node-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/node-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n ContainedComponentField,\r\n ContainedField,\r\n ContainedGroupField,\r\n ContainedSetBuilder,\r\n ContainedSimpleField\r\n} from '../../contained'\r\nimport { ComponentFieldDefinition, GroupFieldDefinition, SimpleFieldDefinition } from '../../definition'\r\nimport { ParseContext } from './parse-context'\r\nimport { ISaxNode } from '../../sax-node'\r\nimport { ParseProgress } from './parse-progress'\r\n\r\nexport abstract class NodeParser {\r\n protected readonly parseContexts: ParseContext[] = []\r\n\r\n protected constructor (protected readonly progress: ParseProgress) {\r\n }\r\n\r\n public abstract open (line: number, node: ISaxNode): void\r\n\r\n public abstract close (line: number, node: string): void\r\n\r\n protected addto (context: ParseContext, containedField: ContainedField): void {\r\n if (context.set != null) {\r\n this.progress.newAdds++\r\n const builder = new ContainedSetBuilder(context.set)\r\n builder.add(containedField)\r\n } else {\r\n this.progress.cacheMisses++\r\n }\r\n }\r\n\r\n protected fullContextName (): string {\r\n return this.parseContexts.map(c => c.name).join('.')\r\n }\r\n\r\n protected addSimple (node: ISaxNode): void {\r\n if (node.isSelfClosing) {\r\n const parent: ParseContext | null = this.peek()\r\n if (!parent) {\r\n throw new Error(`simple field ${node.name} has no parent on which to add.`)\r\n }\r\n const fieldName: string = node.attributes.name\r\n const fieldDefinition: SimpleFieldDefinition | undefined = this.progress.definitions.simple.get(fieldName)\r\n if (!fieldDefinition) {\r\n throw new Error(`simple field ${fieldName} has no declaration in dictionary.`)\r\n }\r\n const containedField: ContainedSimpleField = this.makeContainedSimple(fieldDefinition, parent, node.attributes.required === 'Y')\r\n this.addto(parent, containedField)\r\n }\r\n }\r\n\r\n protected makeContainedSimple (fieldDefinition: SimpleFieldDefinition, context: ParseContext, required: boolean): ContainedSimpleField {\r\n return new ContainedSimpleField(fieldDefinition, context?.set?.fields?.length ?? 0, required, false)\r\n }\r\n\r\n protected makeContainedComponent (fieldDef: ComponentFieldDefinition, context: ParseContext): ContainedComponentField {\r\n return new ContainedComponentField(fieldDef, context?.set?.fields?.length ?? 0, context.required)\r\n }\r\n\r\n protected makeContainedGroup (fieldDef: GroupFieldDefinition, context: ParseContext, required: boolean): ContainedGroupField {\r\n return new ContainedGroupField(fieldDef, context?.set?.fields?.length ?? 0, required)\r\n }\r\n\r\n protected addComponentField (componentName: string, node: ISaxNode): void {\r\n const parent: ParseContext | null = this.peek()\r\n if (!parent) {\r\n throw new Error(`component ${node.name} has no parent on which to add.`)\r\n }\r\n const fieldDef: ComponentFieldDefinition | undefined = this.progress.definitions.component.get(componentName)\r\n if (fieldDef) {\r\n const containedField: ContainedComponentField = this.makeContainedComponent(fieldDef, parent)\r\n this.addto(parent, containedField)\r\n } else {\r\n if (this.progress.numberPasses >= this.progress.maxIterations) {\r\n throw new Error(`field ${node.name} includes unknown component ${componentName}.`)\r\n } else {\r\n this.progress.cacheMisses++\r\n }\r\n }\r\n }\r\n\r\n protected addComponentDefinition (name: string): void {\r\n const latest: ParseContext | null = this.parseContexts.pop() ?? null\r\n if (!latest) {\r\n throw new Error(`component field ${name} closes yet does not exist.`)\r\n }\r\n if (!latest.defining) {\r\n return\r\n }\r\n const asComponent: ComponentFieldDefinition | null = latest.asComponent() ?? null\r\n if (asComponent) {\r\n this.progress.newDefines++\r\n this.progress.definitions.addComponentFieldDef(asComponent)\r\n } else {\r\n throw new Error(`latest not instance of component field ${latest.name} `)\r\n }\r\n }\r\n\r\n protected addGroupField (name: string): void {\r\n const group: ParseContext | null = this.parseContexts.pop() ?? null\r\n if (!group) {\r\n throw new Error(`group field ${name} closes yet does not exist.`)\r\n }\r\n const parent: ParseContext | null = this.peek()\r\n if (parent) {\r\n const asGroup: GroupFieldDefinition | null = group.asGroup()\r\n if (asGroup) {\r\n const containedField: ContainedGroupField = this.makeContainedGroup(asGroup, parent, group.required)\r\n this.addto(parent, containedField)\r\n }\r\n } else {\r\n throw new Error(`group field ${group.name} has no parent on which to add.`)\r\n }\r\n }\r\n\r\n private expandName (componentName: string): string {\r\n switch (componentName) {\r\n case 'header': {\r\n return 'StandardHeader'\r\n }\r\n\r\n case 'trailer': {\r\n return 'StandardTrailer'\r\n }\r\n\r\n default:\r\n return componentName\r\n }\r\n }\r\n\r\n protected beginComponentDefinition (node: ISaxNode): void {\r\n const componentName: string = node.attributes.name || node.name\r\n const fullName = this.expandName(componentName)\r\n if (!node.isSelfClosing) {\r\n const set: ComponentFieldDefinition = new ComponentFieldDefinition(fullName, componentName, null, null)\r\n const context: ParseContext = new ParseContext(fullName, true, set)\r\n this.startContext(context)\r\n } else {\r\n this.addComponentField(fullName, node)\r\n const context: ParseContext = new ParseContext(fullName, false, null)\r\n this.startContext(context)\r\n }\r\n }\r\n\r\n protected beginGroupDefinition (node: ISaxNode): void {\r\n if (node.isSelfClosing) return\r\n // a group should have a field that matches its name\r\n const groupName: string = node.attributes.name\r\n const noOfField: SimpleFieldDefinition | null = this.progress.definitions.simple.get(groupName) ?? null\r\n if (!noOfField) {\r\n const msg: string = `group ${groupName} has no field defined.`\r\n throw new Error(msg)\r\n }\r\n const fullQualifiedName = `${this.fullContextName()}.${groupName}`\r\n let cached: (GroupFieldDefinition | undefined) = this.progress.groupDefinitionCache.get(fullQualifiedName)\r\n if (!cached) {\r\n cached = new GroupFieldDefinition(groupName, groupName, null, noOfField, null)\r\n this.progress.groupDefinitionCache.set(fullQualifiedName, cached)\r\n } else {\r\n cached.reset()\r\n }\r\n const context: ParseContext = new ParseContext(node.attributes.name, true, cached)\r\n context.required = node.attributes.required === 'Y'\r\n this.startContext(context)\r\n }\r\n\r\n protected startContext (context: ParseContext): void {\r\n this.progress.newContexts++\r\n this.parseContexts.push(context)\r\n }\r\n\r\n private peek (): ParseContext | null {\r\n return this.parseContexts.length > 0 ? this.parseContexts[this.parseContexts.length - 1] : null\r\n }\r\n}\r\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IContainedSet } from '../../contained';
|
|
2
2
|
import { ComponentFieldDefinition, GroupFieldDefinition, MessageDefinition } from '../../definition';
|
|
3
3
|
export declare class ParseContext {
|
|
4
4
|
name: string;
|
|
5
5
|
defining: boolean;
|
|
6
|
-
set:
|
|
6
|
+
set: IContainedSet | null;
|
|
7
7
|
required: boolean;
|
|
8
|
-
constructor(name: string, defining: boolean, set:
|
|
8
|
+
constructor(name: string, defining: boolean, set: IContainedSet | null);
|
|
9
9
|
asMessage(): MessageDefinition | null;
|
|
10
10
|
asComponent(): ComponentFieldDefinition | null;
|
|
11
11
|
asGroup(): GroupFieldDefinition | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-context.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/parse-context.ts"],"names":[],"mappings":";;;AACA,iDAAoG;AAEpG,MAAa,YAAY;IAGvB,YAAoB,IAAY,EAAS,QAAiB,EAAS,
|
|
1
|
+
{"version":3,"file":"parse-context.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/parse-context.ts"],"names":[],"mappings":";;;AACA,iDAAoG;AAEpG,MAAa,YAAY;IAGvB,YAAoB,IAAY,EAAS,QAAiB,EAAS,GAAyB;QAAxE,SAAI,GAAJ,IAAI,CAAQ;QAAS,aAAQ,GAAR,QAAQ,CAAS;QAAS,QAAG,GAAH,GAAG,CAAsB;QAC1F,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;IACvB,CAAC;IAEM,SAAS;QACd,MAAM,GAAG,GAAY,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,YAAY,8BAAiB,CAAA;QAC9E,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,GAAG,CAAsB,CAAA;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAEM,WAAW;QAChB,MAAM,GAAG,GAAY,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,YAAY,qCAAwB,CAAA;QACrF,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,GAAG,CAA6B,CAAA;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAEM,OAAO;QACZ,MAAM,GAAG,GAAY,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,YAAY,iCAAoB,CAAA;QACjF,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,GAAG,CAAyB,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;CACF;AAjCD,oCAiCC","sourcesContent":["import { IContainedSet } from '../../contained'\r\nimport { ComponentFieldDefinition, GroupFieldDefinition, MessageDefinition } from '../../definition'\r\n\r\nexport class ParseContext {\r\n public required: boolean\r\n\r\n constructor (public name: string, public defining: boolean, public set: IContainedSet | null) {\r\n this.required = false\r\n }\r\n\r\n public asMessage (): MessageDefinition | null {\r\n const res: boolean = this.set != null && this.set instanceof MessageDefinition\r\n if (res) {\r\n return (this.set) as MessageDefinition\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n public asComponent (): ComponentFieldDefinition | null {\r\n const res: boolean = this.set != null && this.set instanceof ComponentFieldDefinition\r\n if (res) {\r\n return (this.set) as ComponentFieldDefinition\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n public asGroup (): GroupFieldDefinition | null {\r\n const res: boolean = this.set != null && this.set instanceof GroupFieldDefinition\r\n if (res) {\r\n return (this.set) as GroupFieldDefinition\r\n } else {\r\n return null\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ParseState } from './parse-state';
|
|
2
2
|
import { FixDefinitions, GroupFieldDefinition } from '../../definition';
|
|
3
|
-
import { Dictionary } from '../../../collections';
|
|
4
3
|
export declare class ParseProgress {
|
|
5
4
|
definitions: FixDefinitions;
|
|
6
5
|
parseState: ParseState;
|
|
@@ -12,7 +11,7 @@ export declare class ParseProgress {
|
|
|
12
11
|
previousDelta: number;
|
|
13
12
|
componentPasses: number;
|
|
14
13
|
readonly maxIterations: number;
|
|
15
|
-
groupDefinitionCache:
|
|
14
|
+
groupDefinitionCache: Map<string, GroupFieldDefinition>;
|
|
16
15
|
toString(): string;
|
|
17
16
|
delta(): number;
|
|
18
17
|
changed(): boolean;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ParseProgress = void 0;
|
|
4
4
|
const parse_state_1 = require("./parse-state");
|
|
5
|
-
const collections_1 = require("../../../collections");
|
|
6
5
|
class ParseProgress {
|
|
7
6
|
constructor() {
|
|
8
7
|
this.parseState = parse_state_1.ParseState.Begin;
|
|
@@ -14,10 +13,10 @@ class ParseProgress {
|
|
|
14
13
|
this.previousDelta = 0;
|
|
15
14
|
this.componentPasses = 0;
|
|
16
15
|
this.maxIterations = 5;
|
|
17
|
-
this.groupDefinitionCache = new
|
|
16
|
+
this.groupDefinitionCache = new Map();
|
|
18
17
|
}
|
|
19
18
|
toString() {
|
|
20
|
-
return `parseState = ${this.parseState}, numberPasses = ${this.numberPasses}, componentPasses = ${this.componentPasses}, groupCount = ${this.groupDefinitionCache.
|
|
19
|
+
return `parseState = ${this.parseState}, numberPasses = ${this.numberPasses}, componentPasses = ${this.componentPasses}, groupCount = ${this.groupDefinitionCache.size}, cacheMisses = ${this.cacheMisses}, newContexts = ${this.newContexts}, newDefines = ${this.newDefines}, newAdds = ${this.newAdds}, previousDelta = ${this.previousDelta}, delta = ${this.delta()}, changed = ${this.changed()}`;
|
|
21
20
|
}
|
|
22
21
|
delta() {
|
|
23
22
|
return this.newDefines + this.newAdds + this.newContexts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-progress.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/parse-progress.ts"],"names":[],"mappings":";;;AAAA,+CAA0C;
|
|
1
|
+
{"version":3,"file":"parse-progress.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/parse-progress.ts"],"names":[],"mappings":";;;AAAA,+CAA0C;AAG1C,MAAa,aAAa;IAA1B;QAES,eAAU,GAAe,wBAAU,CAAC,KAAK,CAAA;QACzC,iBAAY,GAAW,CAAC,CAAA;QACxB,gBAAW,GAAW,CAAC,CAAA;QACvB,eAAU,GAAW,CAAC,CAAA;QACtB,YAAO,GAAW,CAAC,CAAA;QACnB,gBAAW,GAAW,CAAC,CAAA;QACvB,kBAAa,GAAW,CAAC,CAAA;QACzB,oBAAe,GAAW,CAAC,CAAA;QAClB,kBAAa,GAAW,CAAC,CAAA;QAClC,yBAAoB,GAAsC,IAAI,GAAG,EAAgC,CAAA;IA+C1G,CAAC;IA7CQ,QAAQ;QACb,OAAO,gBAAgB,IAAI,CAAC,UAAU,oBAAoB,IAAI,CAAC,YAAY,uBAAuB,IAAI,CAAC,eAAe,kBAAkB,IAAI,CAAC,oBAAoB,CAAC,IAAI,mBAAmB,IAAI,CAAC,WAAW,mBAAmB,IAAI,CAAC,WAAW,kBAAkB,IAAI,CAAC,UAAU,eAAe,IAAI,CAAC,OAAO,qBAAqB,IAAI,CAAC,aAAa,aAAa,IAAI,CAAC,KAAK,EAAE,eAAe,IAAI,CAAC,OAAO,EAAE,EAAE,CAAA;IACzY,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAA;IAC1D,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,aAAa,CAAA;IACpE,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QACjC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAChB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;IACtB,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,KAAK,wBAAU,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,UAAU,GAAG,wBAAU,CAAC,gBAAgB,CAAA;gBAC7C,MAAK;YACP,CAAC;YACD,KAAK,wBAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,UAAU,GAAG,wBAAU,CAAC,UAAU,CAAA;gBACvC,MAAK;YACP,CAAC;YACD,KAAK,wBAAU,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,eAAe,EAAE,CAAA;gBACtB,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAA;gBAC/D,IAAI,gBAAgB,EAAE,CAAC;oBACrB,IAAI,CAAC,UAAU,GAAG,wBAAU,CAAC,QAAQ,CAAA;gBACvC,CAAC;gBACD,MAAK;YACP,CAAC;YACD,KAAK,wBAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,UAAU,GAAG,wBAAU,CAAC,GAAG,CAAA;gBAChC,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;CACF;AA1DD,sCA0DC","sourcesContent":["import { ParseState } from './parse-state'\r\nimport { FixDefinitions, GroupFieldDefinition } from '../../definition'\r\n\r\nexport class ParseProgress {\r\n public definitions: FixDefinitions\r\n public parseState: ParseState = ParseState.Begin\r\n public numberPasses: number = 0\r\n public cacheMisses: number = 0\r\n public newDefines: number = 0\r\n public newAdds: number = 0\r\n public newContexts: number = 0\r\n public previousDelta: number = 0\r\n public componentPasses: number = 0\r\n public readonly maxIterations: number = 5\r\n public groupDefinitionCache: Map<string, GroupFieldDefinition> = new Map<string, GroupFieldDefinition>()\r\n\r\n public toString (): string {\r\n return `parseState = ${this.parseState}, numberPasses = ${this.numberPasses}, componentPasses = ${this.componentPasses}, groupCount = ${this.groupDefinitionCache.size}, cacheMisses = ${this.cacheMisses}, newContexts = ${this.newContexts}, newDefines = ${this.newDefines}, newAdds = ${this.newAdds}, previousDelta = ${this.previousDelta}, delta = ${this.delta()}, changed = ${this.changed()}`\r\n }\r\n\r\n public delta (): number {\r\n return this.newDefines + this.newAdds + this.newContexts\r\n }\r\n\r\n public changed (): boolean {\r\n return this.cacheMisses > 0 || this.delta() !== this.previousDelta\r\n }\r\n\r\n public reset (): void {\r\n this.previousDelta = this.delta()\r\n this.cacheMisses = 0\r\n this.newDefines = 0\r\n this.newAdds = 0\r\n this.newContexts = 0\r\n }\r\n\r\n public next (): void {\r\n this.numberPasses++\r\n switch (this.parseState) {\r\n case ParseState.Begin: {\r\n this.parseState = ParseState.FieldDefinitions\r\n break\r\n }\r\n case ParseState.FieldDefinitions: {\r\n this.parseState = ParseState.Components\r\n break\r\n }\r\n case ParseState.Components: {\r\n this.componentPasses++\r\n const endComponentPass = this.numberPasses > this.maxIterations\r\n if (endComponentPass) {\r\n this.parseState = ParseState.Messages\r\n }\r\n break\r\n }\r\n case ParseState.Messages: {\r\n this.parseState = ParseState.End\r\n break\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -4,14 +4,13 @@ exports.QuickFixXmlFileBuilder = void 0;
|
|
|
4
4
|
const buffer_1 = require("../../../buffer");
|
|
5
5
|
const contained_1 = require("../../contained");
|
|
6
6
|
const lodash_1 = require("lodash");
|
|
7
|
-
const collections_1 = require("../../../collections");
|
|
8
7
|
const quick_fix_xml_formatter_1 = require("./quick-fix-xml-formatter");
|
|
9
8
|
class QuickFixXmlFileBuilder {
|
|
10
9
|
constructor(definitions) {
|
|
11
10
|
this.definitions = definitions;
|
|
12
11
|
this.usedTags = {};
|
|
13
12
|
this.requiredComponents = [];
|
|
14
|
-
this.seenComponents = new
|
|
13
|
+
this.seenComponents = new Map();
|
|
15
14
|
this.indent = 2;
|
|
16
15
|
this.dispatcher = new contained_1.FieldsDispatch();
|
|
17
16
|
this.elasticBuffer = new buffer_1.ElasticBuffer(10 * 1024);
|
|
@@ -92,7 +91,7 @@ class QuickFixXmlFileBuilder {
|
|
|
92
91
|
}
|
|
93
92
|
writeEnumDefinition(sf, leadingIndent) {
|
|
94
93
|
const eb = new buffer_1.ElasticBuffer(2 * 1024);
|
|
95
|
-
const keys = sf.enums.keys();
|
|
94
|
+
const keys = Array.from(sf.enums.keys());
|
|
96
95
|
keys.sort();
|
|
97
96
|
keys.forEach(k => {
|
|
98
97
|
eb.writeString(quick_fix_xml_formatter_1.QuickFixXmlFormatter.addEnum(sf.enums.get(k), leadingIndent));
|
|
@@ -115,8 +114,8 @@ class QuickFixXmlFileBuilder {
|
|
|
115
114
|
}
|
|
116
115
|
writeComponentField(cf, eb, leadingIndent) {
|
|
117
116
|
eb.writeString(quick_fix_xml_formatter_1.QuickFixXmlFormatter.addComponent(cf, leadingIndent));
|
|
118
|
-
if (!this.seenComponents.
|
|
119
|
-
this.seenComponents.
|
|
117
|
+
if (!this.seenComponents.has(cf.name)) {
|
|
118
|
+
this.seenComponents.set(cf.name, true);
|
|
120
119
|
this.requiredComponents.push(cf.name);
|
|
121
120
|
}
|
|
122
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-fix-xml-file-builder.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/quick-fix-xml-file-builder.ts"],"names":[],"mappings":"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","sourcesContent":["import { FixDefinitions, SimpleFieldDefinition } from '../../definition'\r\nimport { ElasticBuffer } from '../../../buffer'\r\nimport { INumericKeyed } from '../../../collections/collection'\r\nimport {\r\n ContainedComponentField,\r\n ContainedField,\r\n ContainedGroupField,\r\n ContainedSimpleField,\r\n FieldsDispatch\r\n} from '../../contained'\r\nimport { keys } from 'lodash'\r\nimport { Dictionary } from '../../../collections'\r\nimport { QuickFixXmlFormatter } from './quick-fix-xml-formatter'\r\n\r\nexport class QuickFixXmlFileBuilder {\r\n private readonly usedTags: INumericKeyed<string> = {}\r\n private readonly requiredComponents: string[] = []\r\n private readonly seenComponents: Dictionary<boolean> = new Dictionary<boolean>()\r\n private readonly indent: number = 2\r\n private readonly dispatcher: FieldsDispatch = new FieldsDispatch()\r\n public readonly elasticBuffer: ElasticBuffer = new ElasticBuffer(10 * 1024)\r\n\r\n /**\r\n * given an input parsed dictionary, build a new file based on only the input set of message types\r\n * providing a way of producing a fix file containing only those needed messages.\r\n * @param definitions parsed definitions from existing quick fix file\r\n */\r\n constructor (public readonly definitions: FixDefinitions) {\r\n }\r\n\r\n /**\r\n *\r\n * @param msgTypes the required message types represented in the new file\r\n */\r\n public write (msgTypes: string[]): void {\r\n const eb = this.elasticBuffer\r\n if (msgTypes == null || msgTypes.length === 0) return\r\n eb.reset()\r\n const m0def = this.definitions.message.get(msgTypes[0])\r\n // <fix major='4' type='FIX' servicepack='0' minor='4'>\r\n eb.writeString(QuickFixXmlFormatter.startFix(this.definitions.getMajor(), this.definitions.getMinor(), this.definitions.getServicePack()))\r\n const header = this.writeComponent(`${m0def?.name}.StandardHeader`, 'header')\r\n eb.writeString(header)\r\n const trailer = this.writeComponent(`${m0def?.name}.StandardTrailer`, 'trailer')\r\n eb.writeString(trailer)\r\n const messages = this.writeMessages(msgTypes, this.indent)\r\n eb.writeString(messages)\r\n const components = this.writeComponents(this.indent)\r\n eb.writeString(components)\r\n const fields = this.writeFieldDefinitions(this.indent)\r\n eb.writeString(fields)\r\n eb.writeString(QuickFixXmlFormatter.endFix())\r\n }\r\n\r\n private writeComponents (leadingIndent: number): string {\r\n const eb: ElasticBuffer = new ElasticBuffer(2 * 1024)\r\n eb.writeString(QuickFixXmlFormatter.startEntity('components', leadingIndent))\r\n const components = this.requiredComponents\r\n while (components.length > 0) {\r\n const k = components.pop()\r\n if (!k) continue\r\n const component = this.definitions.component.get(k)\r\n if (!component) continue\r\n eb.writeString(QuickFixXmlFormatter.startComponent(component.name, leadingIndent + this.indent))\r\n const def = this.writeFields(component.fields, leadingIndent + this.indent + this.indent)\r\n eb.writeString(def)\r\n eb.writeString(QuickFixXmlFormatter.endComponent(leadingIndent + this.indent))\r\n }\r\n eb.writeString(QuickFixXmlFormatter.endEntity('components', leadingIndent))\r\n return eb.toString()\r\n }\r\n\r\n /*\r\n <message name='Heartbeat' msgcat='admin' msgtype='0'>\r\n <field name='TestReqID' required='N' />\r\n </message>\r\n */\r\n private writeMessages (msgTypes: string[], leadingIndent: number): string {\r\n const eb: ElasticBuffer = new ElasticBuffer(2 * 1024)\r\n eb.writeString(QuickFixXmlFormatter.startEntity('messages', leadingIndent))\r\n msgTypes.forEach(mt => {\r\n const md = this.definitions.message.get(mt)\r\n if (!md) return\r\n eb.writeString(QuickFixXmlFormatter.defineMessage(md, leadingIndent + this.indent))\r\n const fields = this.writeFields(md.fields.slice(1, md.fields.length - 1), leadingIndent + this.indent + this.indent)\r\n eb.writeString(fields)\r\n eb.writeString(QuickFixXmlFormatter.endEntity('message', leadingIndent + this.indent))\r\n })\r\n eb.writeString(QuickFixXmlFormatter.endEntity('messages', leadingIndent))\r\n return eb.toString()\r\n }\r\n\r\n private writeFieldDefinitions (leadingIndent: number): string {\r\n const eb: ElasticBuffer = new ElasticBuffer(2 * 1024)\r\n\r\n const tags = keys(this.usedTags).map(s => parseInt(s))\r\n tags.sort(function (a, b) {\r\n return a - b\r\n })\r\n eb.writeString(QuickFixXmlFormatter.startEntity('fields', leadingIndent))\r\n tags.forEach(t => {\r\n const sf = this.definitions.tagToSimple[t]\r\n if (!sf) return\r\n // <field number='1' name='Account' type='STRING' />\r\n eb.writeString(QuickFixXmlFormatter.defineField(sf, leadingIndent + this.indent))\r\n if (sf.isEnum()) {\r\n const en = this.writeEnumDefinition(sf, leadingIndent + this.indent + this.indent)\r\n eb.writeString(en)\r\n eb.writeString(QuickFixXmlFormatter.endEntity('field', leadingIndent + this.indent))\r\n }\r\n })\r\n eb.writeString(QuickFixXmlFormatter.endEntity('fields', leadingIndent))\r\n return eb.toString()\r\n }\r\n\r\n /*\r\n <value enum='B' description='BUY' />\r\n <value enum='S' description='SELL' />\r\n <value enum='X' description='CROSS' />\r\n <value enum='T' description='TRADE' />\r\n */\r\n private writeEnumDefinition (sf: SimpleFieldDefinition, leadingIndent: number): string {\r\n const eb: ElasticBuffer = new ElasticBuffer(2 * 1024)\r\n const keys = sf.enums.keys()\r\n keys.sort()\r\n keys.forEach(k => {\r\n eb.writeString(QuickFixXmlFormatter.addEnum(sf.enums.get(k), leadingIndent))\r\n })\r\n return eb.toString()\r\n }\r\n\r\n private writeComponent (name: string, destName: string): string {\r\n const eb: ElasticBuffer = new ElasticBuffer(2 * 1024)\r\n const set = this.definitions.getSet(name)\r\n if (set == null) return ''\r\n eb.writeString(QuickFixXmlFormatter.startEntity(destName, this.indent))\r\n eb.writeString(this.writeFields(set.fields, this.indent + this.indent))\r\n eb.writeString(QuickFixXmlFormatter.endEntity(destName, this.indent))\r\n return eb.toString()\r\n }\r\n\r\n private writeSimpleField (sf: ContainedSimpleField, eb: ElasticBuffer, leadingIndent: number): void {\r\n eb.writeString(QuickFixXmlFormatter.addField(sf, leadingIndent))\r\n this.usedTags[sf.definition.tag] = sf.name\r\n }\r\n\r\n private writeComponentField (cf: ContainedComponentField, eb: ElasticBuffer, leadingIndent: number): void {\r\n eb.writeString(QuickFixXmlFormatter.addComponent(cf, leadingIndent))\r\n if (!this.seenComponents.containsKey(cf.name)) {\r\n this.seenComponents.add(cf.name, true)\r\n this.requiredComponents.push(cf.name)\r\n }\r\n }\r\n\r\n private writeGroupField (gf: ContainedGroupField, eb: ElasticBuffer, leadingIndent: number): void {\r\n this.usedTags[gf.definition.noOfField?.tag ?? 0] = gf.name\r\n eb.writeString(QuickFixXmlFormatter.addGroup(gf, leadingIndent))\r\n const groupDef = this.writeFields(gf.definition.fields, leadingIndent + this.indent)\r\n eb.writeString(groupDef)\r\n eb.writeString(QuickFixXmlFormatter.endGroup(leadingIndent))\r\n }\r\n\r\n /*\r\n <trailer>\r\n <field name='SignatureLength' required='N' />\r\n <field name='Signature' required='N' />\r\n <field name='CheckSum' required='Y' />\r\n </trailer>\r\n */\r\n private writeFields (fields: ContainedField[], leadingIndent: number): string {\r\n const eb: ElasticBuffer = new ElasticBuffer(2 * 1024)\r\n this.dispatcher.dispatchFields(fields, {\r\n simple: (sf: ContainedSimpleField) => { this.writeSimpleField(sf, eb, leadingIndent) },\r\n component: (cf: ContainedComponentField) => { this.writeComponentField(cf, eb, leadingIndent) },\r\n group: (gf: ContainedGroupField) => { this.writeGroupField(gf, eb, leadingIndent) }\r\n })\r\n return eb.toString()\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"quick-fix-xml-file-builder.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/quick-fix-xml-file-builder.ts"],"names":[],"mappings":"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","sourcesContent":["import { FixDefinitions, SimpleFieldDefinition } from '../../definition'\r\nimport { ElasticBuffer } from '../../../buffer'\r\nimport { INumericKeyed } from '../../../collections/collection'\r\nimport {\r\n ContainedComponentField,\r\n ContainedField,\r\n ContainedGroupField,\r\n ContainedSimpleField,\r\n FieldsDispatch\r\n} from '../../contained'\r\nimport { keys } from 'lodash'\r\nimport { QuickFixXmlFormatter } from './quick-fix-xml-formatter'\r\n\r\nexport class QuickFixXmlFileBuilder {\r\n private readonly usedTags: INumericKeyed<string> = {}\r\n private readonly requiredComponents: string[] = []\r\n private readonly seenComponents: Map<string, boolean> = new Map<string, boolean>()\r\n private readonly indent: number = 2\r\n private readonly dispatcher: FieldsDispatch = new FieldsDispatch()\r\n public readonly elasticBuffer: ElasticBuffer = new ElasticBuffer(10 * 1024)\r\n\r\n /**\r\n * given an input parsed dictionary, build a new file based on only the input set of message types\r\n * providing a way of producing a fix file containing only those needed messages.\r\n * @param definitions parsed definitions from existing quick fix file\r\n */\r\n constructor (public readonly definitions: FixDefinitions) {\r\n }\r\n\r\n /**\r\n *\r\n * @param msgTypes the required message types represented in the new file\r\n */\r\n public write (msgTypes: string[]): void {\r\n const eb = this.elasticBuffer\r\n if (msgTypes == null || msgTypes.length === 0) return\r\n eb.reset()\r\n const m0def = this.definitions.message.get(msgTypes[0])\r\n // <fix major='4' type='FIX' servicepack='0' minor='4'>\r\n eb.writeString(QuickFixXmlFormatter.startFix(this.definitions.getMajor(), this.definitions.getMinor(), this.definitions.getServicePack()))\r\n const header = this.writeComponent(`${m0def?.name}.StandardHeader`, 'header')\r\n eb.writeString(header)\r\n const trailer = this.writeComponent(`${m0def?.name}.StandardTrailer`, 'trailer')\r\n eb.writeString(trailer)\r\n const messages = this.writeMessages(msgTypes, this.indent)\r\n eb.writeString(messages)\r\n const components = this.writeComponents(this.indent)\r\n eb.writeString(components)\r\n const fields = this.writeFieldDefinitions(this.indent)\r\n eb.writeString(fields)\r\n eb.writeString(QuickFixXmlFormatter.endFix())\r\n }\r\n\r\n private writeComponents (leadingIndent: number): string {\r\n const eb: ElasticBuffer = new ElasticBuffer(2 * 1024)\r\n eb.writeString(QuickFixXmlFormatter.startEntity('components', leadingIndent))\r\n const components = this.requiredComponents\r\n while (components.length > 0) {\r\n const k = components.pop()\r\n if (!k) continue\r\n const component = this.definitions.component.get(k)\r\n if (!component) continue\r\n eb.writeString(QuickFixXmlFormatter.startComponent(component.name, leadingIndent + this.indent))\r\n const def = this.writeFields(component.fields, leadingIndent + this.indent + this.indent)\r\n eb.writeString(def)\r\n eb.writeString(QuickFixXmlFormatter.endComponent(leadingIndent + this.indent))\r\n }\r\n eb.writeString(QuickFixXmlFormatter.endEntity('components', leadingIndent))\r\n return eb.toString()\r\n }\r\n\r\n /*\r\n <message name='Heartbeat' msgcat='admin' msgtype='0'>\r\n <field name='TestReqID' required='N' />\r\n </message>\r\n */\r\n private writeMessages (msgTypes: string[], leadingIndent: number): string {\r\n const eb: ElasticBuffer = new ElasticBuffer(2 * 1024)\r\n eb.writeString(QuickFixXmlFormatter.startEntity('messages', leadingIndent))\r\n msgTypes.forEach(mt => {\r\n const md = this.definitions.message.get(mt)\r\n if (!md) return\r\n eb.writeString(QuickFixXmlFormatter.defineMessage(md, leadingIndent + this.indent))\r\n const fields = this.writeFields(md.fields.slice(1, md.fields.length - 1), leadingIndent + this.indent + this.indent)\r\n eb.writeString(fields)\r\n eb.writeString(QuickFixXmlFormatter.endEntity('message', leadingIndent + this.indent))\r\n })\r\n eb.writeString(QuickFixXmlFormatter.endEntity('messages', leadingIndent))\r\n return eb.toString()\r\n }\r\n\r\n private writeFieldDefinitions (leadingIndent: number): string {\r\n const eb: ElasticBuffer = new ElasticBuffer(2 * 1024)\r\n\r\n const tags = keys(this.usedTags).map(s => parseInt(s))\r\n tags.sort(function (a, b) {\r\n return a - b\r\n })\r\n eb.writeString(QuickFixXmlFormatter.startEntity('fields', leadingIndent))\r\n tags.forEach(t => {\r\n const sf = this.definitions.tagToSimple[t]\r\n if (!sf) return\r\n // <field number='1' name='Account' type='STRING' />\r\n eb.writeString(QuickFixXmlFormatter.defineField(sf, leadingIndent + this.indent))\r\n if (sf.isEnum()) {\r\n const en = this.writeEnumDefinition(sf, leadingIndent + this.indent + this.indent)\r\n eb.writeString(en)\r\n eb.writeString(QuickFixXmlFormatter.endEntity('field', leadingIndent + this.indent))\r\n }\r\n })\r\n eb.writeString(QuickFixXmlFormatter.endEntity('fields', leadingIndent))\r\n return eb.toString()\r\n }\r\n\r\n /*\r\n <value enum='B' description='BUY' />\r\n <value enum='S' description='SELL' />\r\n <value enum='X' description='CROSS' />\r\n <value enum='T' description='TRADE' />\r\n */\r\n private writeEnumDefinition (sf: SimpleFieldDefinition, leadingIndent: number): string {\r\n const eb: ElasticBuffer = new ElasticBuffer(2 * 1024)\r\n const keys = Array.from(sf.enums.keys())\r\n keys.sort()\r\n keys.forEach(k => {\r\n eb.writeString(QuickFixXmlFormatter.addEnum(sf.enums.get(k), leadingIndent))\r\n })\r\n return eb.toString()\r\n }\r\n\r\n private writeComponent (name: string, destName: string): string {\r\n const eb: ElasticBuffer = new ElasticBuffer(2 * 1024)\r\n const set = this.definitions.getSet(name)\r\n if (set == null) return ''\r\n eb.writeString(QuickFixXmlFormatter.startEntity(destName, this.indent))\r\n eb.writeString(this.writeFields(set.fields, this.indent + this.indent))\r\n eb.writeString(QuickFixXmlFormatter.endEntity(destName, this.indent))\r\n return eb.toString()\r\n }\r\n\r\n private writeSimpleField (sf: ContainedSimpleField, eb: ElasticBuffer, leadingIndent: number): void {\r\n eb.writeString(QuickFixXmlFormatter.addField(sf, leadingIndent))\r\n this.usedTags[sf.definition.tag] = sf.name\r\n }\r\n\r\n private writeComponentField (cf: ContainedComponentField, eb: ElasticBuffer, leadingIndent: number): void {\r\n eb.writeString(QuickFixXmlFormatter.addComponent(cf, leadingIndent))\r\n if (!this.seenComponents.has(cf.name)) {\r\n this.seenComponents.set(cf.name, true)\r\n this.requiredComponents.push(cf.name)\r\n }\r\n }\r\n\r\n private writeGroupField (gf: ContainedGroupField, eb: ElasticBuffer, leadingIndent: number): void {\r\n this.usedTags[gf.definition.noOfField?.tag ?? 0] = gf.name\r\n eb.writeString(QuickFixXmlFormatter.addGroup(gf, leadingIndent))\r\n const groupDef = this.writeFields(gf.definition.fields, leadingIndent + this.indent)\r\n eb.writeString(groupDef)\r\n eb.writeString(QuickFixXmlFormatter.endGroup(leadingIndent))\r\n }\r\n\r\n /*\r\n <trailer>\r\n <field name='SignatureLength' required='N' />\r\n <field name='Signature' required='N' />\r\n <field name='CheckSum' required='Y' />\r\n </trailer>\r\n */\r\n private writeFields (fields: ContainedField[], leadingIndent: number): string {\r\n const eb: ElasticBuffer = new ElasticBuffer(2 * 1024)\r\n this.dispatcher.dispatchFields(fields, {\r\n simple: (sf: ContainedSimpleField) => { this.writeSimpleField(sf, eb, leadingIndent) },\r\n component: (cf: ContainedComponentField) => { this.writeComponentField(cf, eb, leadingIndent) },\r\n group: (gf: ContainedGroupField) => { this.writeGroupField(gf, eb, leadingIndent) }\r\n })\r\n return eb.toString()\r\n }\r\n}\r\n"]}
|
|
@@ -50,8 +50,7 @@ class QuickFixXmlFileParser extends fix_parser_1.FixParser {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
});
|
|
53
|
-
saxStream.on('opentag', (
|
|
54
|
-
const saxNode = node;
|
|
53
|
+
saxStream.on('opentag', (saxNode) => {
|
|
55
54
|
switch (saxNode.name) {
|
|
56
55
|
case 'fix': {
|
|
57
56
|
switch (progress.parseState) {
|
|
@@ -124,7 +123,7 @@ class QuickFixXmlFileParser extends fix_parser_1.FixParser {
|
|
|
124
123
|
switch (progress.parseState) {
|
|
125
124
|
case parse_state_1.ParseState.Messages: {
|
|
126
125
|
parser = new field_set_parser_1.FieldSetParser(progress);
|
|
127
|
-
parser.open(saxParser.line,
|
|
126
|
+
parser.open(saxParser.line, saxNode);
|
|
128
127
|
break;
|
|
129
128
|
}
|
|
130
129
|
}
|
|
@@ -141,16 +140,17 @@ class QuickFixXmlFileParser extends fix_parser_1.FixParser {
|
|
|
141
140
|
}
|
|
142
141
|
encloseMessages() {
|
|
143
142
|
const messages = this.state.definitions.message;
|
|
144
|
-
const keys = messages.keys();
|
|
143
|
+
const keys = Array.from(messages.keys());
|
|
145
144
|
const trailerName = 'StandardTrailer';
|
|
146
145
|
keys.forEach(k => {
|
|
147
146
|
var _a, _b;
|
|
148
147
|
const message = messages.get(k);
|
|
148
|
+
const builder = new contained_1.ContainedSetBuilder(message);
|
|
149
149
|
const trailer = this.state.definitions.component.get(trailerName);
|
|
150
|
-
if (trailer && !(message === null || message === void 0 ? void 0 : message.components.
|
|
150
|
+
if (trailer && !(message === null || message === void 0 ? void 0 : message.components.has(trailerName))) {
|
|
151
151
|
const contained = new contained_1.ContainedComponentField(trailer, (_b = (_a = message === null || message === void 0 ? void 0 : message.fields) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0, true);
|
|
152
152
|
this.state.newAdds++;
|
|
153
|
-
|
|
153
|
+
builder === null || builder === void 0 ? void 0 : builder.add(contained);
|
|
154
154
|
}
|
|
155
155
|
});
|
|
156
156
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-fix-xml-file-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/quick-fix-xml-file-parser.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,iDAAiD;AACjD,uEAAiE;AACjE,yDAAmD;AACnD,qDAAgD;AAEhD,iDAA4C;AAE5C,+BAAgC;AAChC,+CAAyD;AAEzD,uEAAiE;AACjE,qDAAgD;AAChD,+CAA0C;AAC1C,qDAAgD;AAGhD,MAAa,qBAAsB,SAAQ,sBAAS;IAIlD,YAA6B,IAAgB,EAAS,SAAyB;QAC7E,KAAK,EAAE,CAAA;QADoB,SAAI,GAAJ,IAAI,CAAY;QAAS,cAAS,GAAT,SAAS,CAAgB;QAH9D,eAAU,GAAG,IAAA,gBAAS,EAAC,qBAAqB,CAAC,SAAS,CAAC,CAAA;QACvD,UAAK,GAAkB,IAAI,8BAAa,EAAE,CAAA;IAI3D,CAAC;IAEO,MAAM,CAAC,SAAS,CAAE,QAAuB,EAAE,SAAoB,EAAE,IAAiB;QACxF,IAAI,MAAyB,CAAA;QAC7B,MAAM,SAAS,GAAc,SAAS,CAAC,OAAO,CAAA;QAE9C,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAE;YACjC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;QAEF,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACpC,CAAC;YACD,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,YAAY,CAAC;gBAClB,KAAK,UAAU,CAAC;gBAChB,KAAK,YAAY,CAAC;gBAClB,KAAK,QAAQ,CAAC;gBACd,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,MAAM,GAAG,IAAI,CAAA;oBACb,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,OAAO,GAAa,IAAgB,CAAA;YAE1C,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,QAAQ,QAAQ,CAAC,UAAU,EAAE,CAAC;wBAC5B,KAAK,wBAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;4BACjC,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAA;4BACtC,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAA;4BACtC,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAA;4BAClD,MAAM,WAAW,GAAW,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,KAAK,KAAK,WAAW,EAAE,CAAA;4BAC/H,QAAQ,CAAC,WAAW,GAAG,IAAI,2BAAc,CAAC,2CAAmB,CAAC,QAAQ,EAAE,0BAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;4BACzG,MAAK;wBACP,CAAC;oBACH,CAAC;oBACD,MAAK;gBACP,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,QAAQ,QAAQ,CAAC,UAAU,EAAE,CAAC;wBAC5B,KAAK,wBAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;4BACjC,MAAM,GAAG,IAAI,+CAAqB,CAAC,QAAQ,CAAC,CAAA;4BAC5C,MAAK;wBACP,CAAC;wBACD,OAAO,CAAC,CAAC,CAAC;4BACR,MAAM,GAAG,IAAI,CAAA;wBACf,CAAC;oBACH,CAAC;oBACD,MAAK;gBACP,CAAC;gBAED,KAAK,UAAU,CAAC,CAAC,CAAC;oBAChB,QAAQ,QAAQ,CAAC,UAAU,EAAE,CAAC;wBAC5B,KAAK,wBAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;4BACzB,MAAM,GAAG,IAAI,8BAAa,CAAC,QAAQ,CAAC,CAAA;4BACpC,MAAK;wBACP,CAAC;wBAED;4BACE,MAAK;oBACT,CAAC;oBACD,MAAK;gBACP,CAAC;gBAED,KAAK,YAAY,CAAC,CAAC,CAAC;oBAIlB,QAAQ,QAAQ,CAAC,UAAU,EAAE,CAAC;wBAC5B,KAAK,wBAAU,CAAC,UAAU;4BACxB,MAAM,GAAG,IAAI,iCAAc,CAAC,QAAQ,CAAC,CAAA;4BACrC,MAAK;oBACT,CAAC;oBACD,MAAK;gBACP,CAAC;gBAED,KAAK,OAAO,CAAC;gBACb,KAAK,OAAO,CAAC;gBACb,KAAK,WAAW,CAAC;gBACjB,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;wBACnB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;oBACtC,CAAC;oBACD,MAAK;gBACP,CAAC;gBAED,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,QAAQ,QAAQ,CAAC,UAAU,EAAE,CAAC;wBAC5B,KAAK,wBAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;4BACzB,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gCACnB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;4BACtC,CAAC;4BACD,MAAK;wBACP,CAAC;wBAED;4BACE,MAAK;oBACT,CAAC;oBACD,MAAK;gBACP,CAAC;gBAED,KAAK,QAAQ,CAAC;gBACd,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,QAAQ,QAAQ,CAAC,UAAU,EAAE,CAAC;wBAC5B,KAAK,wBAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;4BACzB,MAAM,GAAG,IAAI,iCAAc,CAAC,QAAQ,CAAC,CAAA;4BACrC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;4BACjC,MAAK;wBACP,CAAC;oBACH,CAAC;oBACD,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACzB,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,GAAG,IAAI,CAAA;gBACb,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;YACvC,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,eAAe;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAA;QAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAA;QAC5B,MAAM,WAAW,GAAG,iBAAiB,CAAA;QACrC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;YACf,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YACjE,IAAI,OAAO,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA,EAAE,CAAC;gBAC7D,MAAM,SAAS,GAAG,IAAI,mCAAuB,CAAC,OAAO,EAAE,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,MAAM,mCAAI,CAAC,EAAE,IAAI,CAAC,CAAA;gBAC1F,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;gBACpB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAC,SAAS,CAAC,CAAA;YACzB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEY,KAAK;;YAChB,OAAO,MAAM,IAAI,OAAO,CAAiB,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;gBACjE,IAAI,CAAC;oBACH,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;oBACjB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,wBAAU,CAAC,GAAG,EAAE,CAAC;wBAChD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;wBAClB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;wBACpB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;oBAEnB,CAAC;oBACD,IAAI,CAAC,eAAe,EAAE,CAAA;oBACtB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;gBACjC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,CAAC,CAAC,CAAC,CAAA;gBACX,CAAC;YACH,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;IAEa,OAAO;;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAA;YAC5B,MAAM,SAAS,GAAc,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YAClE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACpB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QACrD,CAAC;KAAA;CACF;AA/KD,sDA+KC","sourcesContent":["import * as fs from 'fs'\r\nimport { SAXParser } from 'sax'\r\nimport { IDictDoneCb, SAXStream } from '../../dict-primitive'\r\nimport { FixDefinitions } from '../../definition'\r\nimport { FieldDefinitionParser } from './field-definition-parser'\r\nimport { FieldSetParser } from './field-set-parser'\r\nimport { MessageParser } from './message-parser'\r\nimport { NodeParser } from './node-parser'\r\nimport { FixParser } from '../../fix-parser'\r\nimport { GetJsFixLogger } from '../../../config'\r\nimport { promisify } from 'util'\r\nimport { ContainedComponentField } from '../../contained'\r\nimport { ISaxNode } from '../../sax-node'\r\nimport { FixDefinitionSource } from '../../fix-definition-source'\r\nimport { VersionUtil } from '../../version-util'\r\nimport { ParseState } from './parse-state'\r\nimport { ParseProgress } from './parse-progress'\r\nimport { MakeDuplex } from '../../../transport'\r\n\r\nexport class QuickFixXmlFileParser extends FixParser {\r\n private readonly singlePass = promisify(QuickFixXmlFileParser.subscribe)\r\n private readonly state: ParseProgress = new ParseProgress()\r\n\r\n constructor (public readonly make: MakeDuplex, public getLogger: GetJsFixLogger) {\r\n super()\r\n }\r\n\r\n private static subscribe (progress: ParseProgress, saxStream: SAXStream, done: IDictDoneCb): void {\r\n let parser: NodeParser | null\r\n const saxParser: SAXParser = saxStream._parser\r\n\r\n saxStream.on('error', (e: Error) => {\r\n done(e, null)\r\n })\r\n\r\n saxStream.on('closetag', (name) => {\r\n if (parser != null) {\r\n parser.close(saxParser.line, name)\r\n }\r\n switch (name) {\r\n case 'repository':\r\n case 'messages':\r\n case 'components':\r\n case 'header':\r\n case 'trailer': {\r\n parser = null\r\n break\r\n }\r\n }\r\n })\r\n\r\n saxStream.on('opentag', (node) => {\r\n const saxNode: ISaxNode = node as ISaxNode\r\n\r\n switch (saxNode.name) {\r\n case 'fix': {\r\n switch (progress.parseState) {\r\n case ParseState.FieldDefinitions: {\r\n const major = saxNode.attributes.major\r\n const minor = saxNode.attributes.minor\r\n const servicepack = saxNode.attributes.servicepack\r\n const description: string = (major !== '5' || !servicepack) ? `FIX.${major}.${minor}` : `FIX.${major}.${minor}SP${servicepack}`\r\n progress.definitions = new FixDefinitions(FixDefinitionSource.QuickFix, VersionUtil.resolve(description))\r\n break\r\n }\r\n }\r\n break\r\n }\r\n\r\n case 'fields': {\r\n switch (progress.parseState) {\r\n case ParseState.FieldDefinitions: {\r\n parser = new FieldDefinitionParser(progress)\r\n break\r\n }\r\n default: {\r\n parser = null\r\n }\r\n }\r\n break\r\n }\r\n\r\n case 'messages': {\r\n switch (progress.parseState) {\r\n case ParseState.Messages: {\r\n parser = new MessageParser(progress)\r\n break\r\n }\r\n\r\n default:\r\n break\r\n }\r\n break\r\n }\r\n\r\n case 'components': {\r\n // can have a group containing components which contain themselves components of groups\r\n // each step will build forward references to a deeper level to ensure final messages\r\n // have all dependencies correctly defined.\r\n switch (progress.parseState) {\r\n case ParseState.Components:\r\n parser = new FieldSetParser(progress)\r\n break\r\n }\r\n break\r\n }\r\n\r\n case 'field':\r\n case 'value':\r\n case 'component':\r\n case 'group': {\r\n if (parser != null) {\r\n parser.open(saxParser.line, saxNode)\r\n }\r\n break\r\n }\r\n\r\n case 'message': {\r\n switch (progress.parseState) {\r\n case ParseState.Messages: {\r\n if (parser != null) {\r\n parser.open(saxParser.line, saxNode)\r\n }\r\n break\r\n }\r\n\r\n default:\r\n break\r\n }\r\n break\r\n }\r\n\r\n case 'header':\r\n case 'trailer': {\r\n switch (progress.parseState) {\r\n case ParseState.Messages: {\r\n parser = new FieldSetParser(progress)\r\n parser.open(saxParser.line, node)\r\n break\r\n }\r\n }\r\n break\r\n }\r\n }\r\n })\r\n\r\n saxStream.on('ready', () => {\r\n if (done) {\r\n parser = null\r\n done(undefined, progress.definitions)\r\n }\r\n })\r\n }\r\n\r\n private encloseMessages (): void {\r\n const messages = this.state.definitions.message\r\n const keys = messages.keys()\r\n const trailerName = 'StandardTrailer'\r\n keys.forEach(k => {\r\n const message = messages.get(k)\r\n const trailer = this.state.definitions.component.get(trailerName)\r\n if (trailer && !message?.components.containsKey(trailerName)) {\r\n const contained = new ContainedComponentField(trailer, message?.fields?.length ?? 0, true)\r\n this.state.newAdds++\r\n message?.add(contained)\r\n }\r\n })\r\n }\r\n\r\n public async parse (): Promise<FixDefinitions> {\r\n return await new Promise<FixDefinitions>(async (resolve, reject) => {\r\n try {\r\n this.state.next()\r\n while (this.state.parseState !== ParseState.End) {\r\n this.state.reset()\r\n await this.onePass()\r\n this.state.next()\r\n // console.log(`${this.state.toString()}`)\r\n }\r\n this.encloseMessages()\r\n resolve(this.state.definitions)\r\n } catch (e) {\r\n reject(e)\r\n }\r\n })\r\n }\r\n\r\n private async onePass (): Promise<FixDefinitions | undefined | null> {\r\n const duplex = this.make()\r\n const pass = duplex.readable\r\n const saxStream: SAXStream = require('sax').createStream(true, {})\r\n pass.pipe(saxStream)\r\n return await this.singlePass(this.state, saxStream)\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"quick-fix-xml-file-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/quick-fix-xml-file-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { SAXParser } from 'sax'\r\nimport { IDictDoneCb, SAXStream } from '../../dict-primitive'\r\nimport { FixDefinitions, MessageDefinition } from '../../definition'\r\nimport { FieldDefinitionParser } from './field-definition-parser'\r\nimport { FieldSetParser } from './field-set-parser'\r\nimport { MessageParser } from './message-parser'\r\nimport { NodeParser } from './node-parser'\r\nimport { FixParser } from '../../fix-parser'\r\nimport { GetJsFixLogger } from '../../../config'\r\nimport { promisify } from 'util'\r\nimport { ContainedComponentField, ContainedSetBuilder, IContainedSet } from '../../contained'\r\nimport { ISaxNode } from '../../sax-node'\r\nimport { FixDefinitionSource } from '../../fix-definition-source'\r\nimport { VersionUtil } from '../../version-util'\r\nimport { ParseState } from './parse-state'\r\nimport { ParseProgress } from './parse-progress'\r\nimport { MakeDuplex } from '../../../transport'\r\n\r\nexport class QuickFixXmlFileParser extends FixParser {\r\n private readonly singlePass = promisify(QuickFixXmlFileParser.subscribe)\r\n private readonly state: ParseProgress = new ParseProgress()\r\n\r\n constructor (public readonly make: MakeDuplex, public getLogger: GetJsFixLogger) {\r\n super()\r\n }\r\n\r\n private static subscribe (progress: ParseProgress, saxStream: SAXStream, done: IDictDoneCb): void {\r\n let parser: NodeParser | null\r\n const saxParser: SAXParser = saxStream._parser\r\n\r\n saxStream.on('error', (e: Error) => {\r\n done(e, null)\r\n })\r\n\r\n saxStream.on('closetag', (name: string) => {\r\n if (parser != null) {\r\n parser.close(saxParser.line, name)\r\n }\r\n switch (name) {\r\n case 'repository':\r\n case 'messages':\r\n case 'components':\r\n case 'header':\r\n case 'trailer': {\r\n parser = null\r\n break\r\n }\r\n }\r\n })\r\n\r\n saxStream.on('opentag', (saxNode: ISaxNode) => {\r\n switch (saxNode.name) {\r\n case 'fix': {\r\n switch (progress.parseState) {\r\n case ParseState.FieldDefinitions: {\r\n const major = saxNode.attributes.major\r\n const minor = saxNode.attributes.minor\r\n const servicepack = saxNode.attributes.servicepack\r\n const description: string = (major !== '5' || !servicepack) ? `FIX.${major}.${minor}` : `FIX.${major}.${minor}SP${servicepack}`\r\n progress.definitions = new FixDefinitions(FixDefinitionSource.QuickFix, VersionUtil.resolve(description))\r\n break\r\n }\r\n }\r\n break\r\n }\r\n\r\n case 'fields': {\r\n switch (progress.parseState) {\r\n case ParseState.FieldDefinitions: {\r\n parser = new FieldDefinitionParser(progress)\r\n break\r\n }\r\n default: {\r\n parser = null\r\n }\r\n }\r\n break\r\n }\r\n\r\n case 'messages': {\r\n switch (progress.parseState) {\r\n case ParseState.Messages: {\r\n parser = new MessageParser(progress)\r\n break\r\n }\r\n\r\n default:\r\n break\r\n }\r\n break\r\n }\r\n\r\n case 'components': {\r\n // can have a group containing components which contain themselves components of groups\r\n // each step will build forward references to a deeper level to ensure final messages\r\n // have all dependencies correctly defined.\r\n switch (progress.parseState) {\r\n case ParseState.Components:\r\n parser = new FieldSetParser(progress)\r\n break\r\n }\r\n break\r\n }\r\n\r\n case 'field':\r\n case 'value':\r\n case 'component':\r\n case 'group': {\r\n if (parser != null) {\r\n parser.open(saxParser.line, saxNode)\r\n }\r\n break\r\n }\r\n\r\n case 'message': {\r\n switch (progress.parseState) {\r\n case ParseState.Messages: {\r\n if (parser != null) {\r\n parser.open(saxParser.line, saxNode)\r\n }\r\n break\r\n }\r\n\r\n default:\r\n break\r\n }\r\n break\r\n }\r\n\r\n case 'header':\r\n case 'trailer': {\r\n switch (progress.parseState) {\r\n case ParseState.Messages: {\r\n parser = new FieldSetParser(progress)\r\n parser.open(saxParser.line, saxNode)\r\n break\r\n }\r\n }\r\n break\r\n }\r\n }\r\n })\r\n\r\n saxStream.on('ready', () => {\r\n if (done) {\r\n parser = null\r\n done(undefined, progress.definitions)\r\n }\r\n })\r\n }\r\n\r\n private encloseMessages (): void {\r\n const messages = this.state.definitions.message\r\n const keys = Array.from(messages.keys())\r\n const trailerName = 'StandardTrailer'\r\n keys.forEach(k => {\r\n const message: (MessageDefinition | undefined) = messages.get(k)\r\n const builder = new ContainedSetBuilder(message as IContainedSet)\r\n const trailer = this.state.definitions.component.get(trailerName)\r\n if (trailer && !message?.components.has(trailerName)) {\r\n const contained = new ContainedComponentField(trailer, message?.fields?.length ?? 0, true)\r\n this.state.newAdds++\r\n builder?.add(contained)\r\n }\r\n })\r\n }\r\n\r\n public async parse (): Promise<FixDefinitions> {\r\n return await new Promise<FixDefinitions>(async (resolve, reject) => {\r\n try {\r\n this.state.next()\r\n while (this.state.parseState !== ParseState.End) {\r\n this.state.reset()\r\n await this.onePass()\r\n this.state.next()\r\n // console.log(`${this.state.toString()}`)\r\n }\r\n this.encloseMessages()\r\n resolve(this.state.definitions)\r\n } catch (e) {\r\n reject(e)\r\n }\r\n })\r\n }\r\n\r\n private async onePass (): Promise<FixDefinitions | undefined | null> {\r\n const duplex = this.make()\r\n const pass = duplex.readable\r\n const saxStream: SAXStream = require('sax').createStream(true, {})\r\n pass.pipe(saxStream)\r\n return await this.singlePass(this.state, saxStream)\r\n }\r\n}\r\n"]}
|
|
@@ -14,7 +14,7 @@ export declare class QuickFixXmlFormatter {
|
|
|
14
14
|
static addComponent(cf: ContainedComponentField, ws: number): string;
|
|
15
15
|
static addGroup(gf: ContainedGroupField, ws: number): string;
|
|
16
16
|
static endGroup(ws: number): string;
|
|
17
|
-
static addEnum(fe: (FieldEnum |
|
|
17
|
+
static addEnum(fe: (FieldEnum | undefined), ws: number): string;
|
|
18
18
|
static defineField(sf: SimpleFieldDefinition, ws: number): string;
|
|
19
19
|
static defineMessage(def: MessageDefinition, ws: number): string;
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-fix-xml-formatter.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/quick-fix-xml-formatter.ts"],"names":[],"mappings":";;;AAAA,2BAAmC;AAKnC,MAAa,oBAAoB;IACvB,MAAM,CAAC,UAAU,CAAE,CAAU;QACnC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IACtB,CAAC;IAEO,MAAM,CAAC,UAAU,CAAE,CAAS;QAClC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACtB,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAE,KAAa,EAAE,KAAa,EAAE,WAAmB;QACvE,OAAO,eAAe,KAAK,6BAA6B,WAAW,YAAY,KAAK,KAAK,QAAO,EAAE,CAAA;IACpG,CAAC;IAEM,MAAM,CAAC,MAAM;QAClB,OAAO,SAAS,QAAO,EAAE,CAAA;IAC3B,CAAC;IAEM,MAAM,CAAC,WAAW,CAAE,IAAY,EAAE,EAAU;QACjD,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,QAAO,EAAE,CAAA;IACpE,CAAC;IAEM,MAAM,CAAC,SAAS,CAAE,IAAY,EAAE,EAAU;QAC/C,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,QAAO,EAAE,CAAA;IACrE,CAAC;IAEM,MAAM,CAAC,cAAc,CAAE,IAAY,EAAE,EAAU;QACpD,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,IAAI,KAAK,QAAO,EAAE,CAAA;IACrF,CAAC;IAEM,MAAM,CAAC,YAAY,CAAE,EAAU;QACpC,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,QAAO,EAAE,CAAA;IACvE,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAE,EAAwB,EAAE,EAAU;QAC1D,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,OAAO,QAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,eAAe,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,QAAO,EAAE,CAAA;IACpP,CAAC;IAEM,MAAM,CAAC,YAAY,CAAE,EAA2B,EAAE,EAAU;QACjE,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,IAAI,eAAe,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,QAAO,EAAE,CAAA;IACpJ,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAE,EAAuB,EAAE,EAAU;;QACzD,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,MAAA,MAAA,EAAE,CAAC,UAAU,CAAC,SAAS,0CAAE,GAAG,mCAAI,CAAC,CAAC,IAAI,MAAA,EAAE,CAAC,UAAU,CAAC,SAAS,0CAAE,IAAI,OAAO,QAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,eAAe,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAO,EAAE,CAAA;IAC/Q,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAE,EAAU;QAChC,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,QAAO,EAAE,CAAA;IACnE,CAAC;IAEM,MAAM,CAAC,OAAO,CAAE,
|
|
1
|
+
{"version":3,"file":"quick-fix-xml-formatter.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/quickfix/quick-fix-xml-formatter.ts"],"names":[],"mappings":"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","sourcesContent":["import { EOL as newLine } from 'os'\r\nimport { ContainedComponentField, ContainedGroupField, ContainedSimpleField } from '../../contained'\r\nimport { FieldEnum } from '../../field-enum'\r\nimport { MessageDefinition, SimpleFieldDefinition } from '../../definition'\r\n\r\nexport class QuickFixXmlFormatter {\r\n private static isRequired (r: boolean): string {\r\n return r ? 'Y' : 'N'\r\n }\r\n\r\n private static whitespace (n: number): string {\r\n return ' '.repeat(n)\r\n }\r\n\r\n public static startFix (major: number, minor: number, servicePack: number): string {\r\n return `<fix major='${major}' type='FIX' servicepack='${servicePack}' minor='${minor}'>${newLine}`\r\n }\r\n\r\n public static endFix (): string {\r\n return `</fix>${newLine}`\r\n }\r\n\r\n public static startEntity (name: string, ws: number): string {\r\n return `${QuickFixXmlFormatter.whitespace(ws)}<${name}>${newLine}`\r\n }\r\n\r\n public static endEntity (name: string, ws: number): string {\r\n return `${QuickFixXmlFormatter.whitespace(ws)}</${name}>${newLine}`\r\n }\r\n\r\n public static startComponent (name: string, ws: number): string {\r\n return `${QuickFixXmlFormatter.whitespace(ws)}<component name='${name}'>${newLine}`\r\n }\r\n\r\n public static endComponent (ws: number): string {\r\n return `${QuickFixXmlFormatter.whitespace(ws)}</component>${newLine}`\r\n }\r\n\r\n public static addField (sf: ContainedSimpleField, ws: number): string {\r\n return `${QuickFixXmlFormatter.whitespace(ws)} <!-- ${sf.definition.tag} ${sf.definition.type} -->${newLine}${QuickFixXmlFormatter.whitespace(ws)}<field name='${sf.name}' required='${QuickFixXmlFormatter.isRequired(sf.required)}'/>${newLine}`\r\n }\r\n\r\n public static addComponent (cf: ContainedComponentField, ws: number): string {\r\n return `${QuickFixXmlFormatter.whitespace(ws)}<component name='${cf.name}' required='${QuickFixXmlFormatter.isRequired(cf.required)}'/>${newLine}`\r\n }\r\n\r\n public static addGroup (gf: ContainedGroupField, ws: number): string {\r\n return `${QuickFixXmlFormatter.whitespace(ws)} <!-- ${gf.definition.noOfField?.tag ?? -1} ${gf.definition.noOfField?.type} -->${newLine}${QuickFixXmlFormatter.whitespace(ws)}<group name='${gf.name}' required='${QuickFixXmlFormatter.isRequired(gf.required)}'>${newLine}`\r\n }\r\n\r\n public static endGroup (ws: number): string {\r\n return `${QuickFixXmlFormatter.whitespace(ws)}</group>${newLine}`\r\n }\r\n\r\n public static addEnum (fe: (FieldEnum | undefined), ws: number): string {\r\n return `${QuickFixXmlFormatter.whitespace(ws)}<value enum='${fe?.key}' description='${fe?.description ?? fe?.val}'/>${newLine}`\r\n }\r\n\r\n public static defineField (sf: SimpleFieldDefinition, ws: number): string {\r\n const term = sf.isEnum() ? '>' : '/>'\r\n return (`${QuickFixXmlFormatter.whitespace(ws)}<field number='${sf.tag}' name='${sf.name}' type='${sf.type}'${term}${newLine}`)\r\n }\r\n\r\n public static defineMessage (def: MessageDefinition, ws: number): string {\r\n return `${QuickFixXmlFormatter.whitespace(ws)}<message name='${def.name}' msgcat='${def.category}' msgtype='${def.msgType}'>${newLine}`\r\n }\r\n}\r\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ContainedField,
|
|
1
|
+
import { ContainedField, IContainedSet } from './contained';
|
|
2
2
|
import { ITypeDispatcher } from './type-dispatcher';
|
|
3
3
|
export declare class SetReduce<T> {
|
|
4
4
|
reduceField(a: T, field: ContainedField, dispatcher: ITypeDispatcher<T>): void;
|
|
5
|
-
reduce(def:
|
|
5
|
+
reduce(def: IContainedSet, dispatcher: ITypeDispatcher<T>, init: T): T;
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-reduce.js","sourceRoot":"","sources":["../../src/dictionary/set-reduce.ts"],"names":[],"mappings":";;;AAAA,2CAGoB;AAGpB,MAAa,SAAS;IACpB,WAAW,CAAE,CAAI,EAAE,KAAqB,EAAE,UAA8B;QACtE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,8BAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;oBACrB,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAA4B,CAAC,CAAA;gBACnD,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,8BAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/B,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBACtB,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,KAA6B,CAAC,CAAA;gBACrD,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,8BAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;gBAClC,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;oBACzB,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAgC,CAAC,CAAA;gBAC3D,CAAC;gBACD,MAAK;YACP,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAED,MAAM,CAAE,
|
|
1
|
+
{"version":3,"file":"set-reduce.js","sourceRoot":"","sources":["../../src/dictionary/set-reduce.ts"],"names":[],"mappings":";;;AAAA,2CAGoB;AAGpB,MAAa,SAAS;IACpB,WAAW,CAAE,CAAI,EAAE,KAAqB,EAAE,UAA8B;QACtE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,8BAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;oBACrB,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAA4B,CAAC,CAAA;gBACnD,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,8BAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/B,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBACtB,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,KAA6B,CAAC,CAAA;gBACrD,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,8BAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;gBAClC,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;oBACzB,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAgC,CAAC,CAAA;gBAC3D,CAAC;gBACD,MAAK;YACP,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAED,MAAM,CAAE,GAAkB,EAAE,UAA8B,EAAE,IAAO;QACjE,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAI,EAAE,KAAqB,EAAE,EAAE;YACvD,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;YACtC,OAAO,CAAC,CAAA;QACV,CAAC,EAAE,IAAI,CAAC,CAAA;IACV,CAAC;CACF;AAnCD,8BAmCC","sourcesContent":["import {\r\n ContainedField, IContainedSet,\r\n ContainedGroupField, ContainedSimpleField, ContainedComponentField, ContainedFieldType\r\n} from './contained'\r\nimport { ITypeDispatcher } from './type-dispatcher'\r\n\r\nexport class SetReduce<T> {\r\n reduceField (a: T, field: ContainedField, dispatcher: ITypeDispatcher<T>): void {\r\n switch (field.type) {\r\n case ContainedFieldType.Group: {\r\n if (dispatcher.group) {\r\n dispatcher.group(a, field as ContainedGroupField)\r\n }\r\n break\r\n }\r\n\r\n case ContainedFieldType.Simple: {\r\n if (dispatcher.simple) {\r\n dispatcher.simple(a, field as ContainedSimpleField)\r\n }\r\n break\r\n }\r\n\r\n case ContainedFieldType.Component: {\r\n if (dispatcher.component) {\r\n dispatcher.component(a, field as ContainedComponentField)\r\n }\r\n break\r\n }\r\n\r\n default:\r\n throw new Error(`unknown type ${field.type}`)\r\n }\r\n }\r\n\r\n reduce (def: IContainedSet, dispatcher: ITypeDispatcher<T>, init: T): T {\r\n return def.fields.reduce((a: T, field: ContainedField) => {\r\n this.reduceField(a, field, dispatcher)\r\n return a\r\n }, init)\r\n }\r\n}\r\n"]}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -18,7 +18,6 @@ __exportStar(require("./runtime"), exports);
|
|
|
18
18
|
__exportStar(require("./dictionary"), exports);
|
|
19
19
|
__exportStar(require("./buffer"), exports);
|
|
20
20
|
__exportStar(require("./transport"), exports);
|
|
21
|
-
__exportStar(require("./collections"), exports);
|
|
22
21
|
__exportStar(require("./config"), exports);
|
|
23
22
|
__exportStar(require("./types"), exports);
|
|
24
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,+CAA4B;AAC5B,2CAAwB;AACxB,8CAA2B;AAC3B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,+CAA4B;AAC5B,2CAAwB;AACxB,8CAA2B;AAC3B,2CAAwB;AACxB,0CAAuB","sourcesContent":["export * from './runtime'\r\nexport * from './dictionary'\r\nexport * from './buffer'\r\nexport * from './transport'\r\nexport * from './config'\r\nexport * from './types'\r\n"]}
|