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.
Files changed (243) hide show
  1. package/appveyor.yml +1 -1
  2. package/dist/buffer/ascii/ascii-encoder.d.ts +2 -2
  3. package/dist/buffer/ascii/ascii-encoder.js +1 -1
  4. package/dist/buffer/ascii/ascii-encoder.js.map +1 -1
  5. package/dist/buffer/ascii/ascii-parser-state.d.ts +3 -2
  6. package/dist/buffer/ascii/ascii-parser-state.js +1 -2
  7. package/dist/buffer/ascii/ascii-parser-state.js.map +1 -1
  8. package/dist/buffer/ascii/ascii-parser.d.ts +1 -1
  9. package/dist/buffer/ascii/ascii-parser.js +5 -4
  10. package/dist/buffer/ascii/ascii-parser.js.map +1 -1
  11. package/dist/buffer/ascii/ascii-segment-parser.js.map +1 -1
  12. package/dist/buffer/ascii/ascii-view.d.ts +4 -3
  13. package/dist/buffer/ascii/ascii-view.js +8 -5
  14. package/dist/buffer/ascii/ascii-view.js.map +1 -1
  15. package/dist/buffer/encode-proxy.js +1 -1
  16. package/dist/buffer/encode-proxy.js.map +1 -1
  17. package/dist/buffer/fixml/fixml-encoder.d.ts +2 -2
  18. package/dist/buffer/fixml/fixml-encoder.js +1 -1
  19. package/dist/buffer/fixml/fixml-encoder.js.map +1 -1
  20. package/dist/buffer/fixml/fixml-parser.js +2 -2
  21. package/dist/buffer/fixml/fixml-parser.js.map +1 -1
  22. package/dist/buffer/fixml/fixml-view.d.ts +3 -2
  23. package/dist/buffer/fixml/fixml-view.js +5 -4
  24. package/dist/buffer/fixml/fixml-view.js.map +1 -1
  25. package/dist/buffer/msg-encoder.d.ts +2 -2
  26. package/dist/buffer/msg-encoder.js.map +1 -1
  27. package/dist/buffer/msg-view.d.ts +8 -6
  28. package/dist/buffer/msg-view.js +10 -8
  29. package/dist/buffer/msg-view.js.map +1 -1
  30. package/dist/buffer/segment/segment-description.d.ts +3 -3
  31. package/dist/buffer/segment/segment-description.js.map +1 -1
  32. package/dist/buffer/tag/tags.d.ts +2 -5
  33. package/dist/buffer/tag/tags.js +4 -5
  34. package/dist/buffer/tag/tags.js.map +1 -1
  35. package/dist/collections/collection.d.ts +0 -1
  36. package/dist/collections/collection.js.map +1 -1
  37. package/dist/collections/index.d.ts +0 -1
  38. package/dist/collections/index.js +0 -17
  39. package/dist/collections/index.js.map +1 -1
  40. package/dist/config/js-fix-config.d.ts +2 -1
  41. package/dist/config/js-fix-config.js +3 -3
  42. package/dist/config/js-fix-config.js.map +1 -1
  43. package/dist/dictionary/compiler/compiler-type.d.ts +3 -3
  44. package/dist/dictionary/compiler/compiler-type.js.map +1 -1
  45. package/dist/dictionary/compiler/enum-compiler.js +2 -2
  46. package/dist/dictionary/compiler/enum-compiler.js.map +1 -1
  47. package/dist/dictionary/compiler/msg-compiler.d.ts +1 -2
  48. package/dist/dictionary/compiler/msg-compiler.js +6 -7
  49. package/dist/dictionary/compiler/msg-compiler.js.map +1 -1
  50. package/dist/dictionary/contained/contained-component-field.d.ts +1 -1
  51. package/dist/dictionary/contained/contained-component-field.js.map +1 -1
  52. package/dist/dictionary/contained/contained-field-set.d.ts +9 -20
  53. package/dist/dictionary/contained/contained-field-set.js +16 -149
  54. package/dist/dictionary/contained/contained-field-set.js.map +1 -1
  55. package/dist/dictionary/contained/contained-group-field.d.ts +1 -1
  56. package/dist/dictionary/contained/contained-group-field.js.map +1 -1
  57. package/dist/dictionary/contained/contained-set-builder.d.ts +15 -0
  58. package/dist/dictionary/contained/contained-set-builder.js +142 -0
  59. package/dist/dictionary/contained/contained-set-builder.js.map +1 -0
  60. package/dist/dictionary/contained/contained-set.d.ts +32 -0
  61. package/dist/{types/FIX.5.0SP2/quickfix/xm_lnon_fix.js → dictionary/contained/contained-set.js} +1 -1
  62. package/dist/dictionary/contained/contained-set.js.map +1 -0
  63. package/dist/dictionary/contained/contained-simple-field.d.ts +1 -1
  64. package/dist/dictionary/contained/contained-simple-field.js.map +1 -1
  65. package/dist/dictionary/contained/index.d.ts +4 -1
  66. package/dist/dictionary/contained/index.js +4 -1
  67. package/dist/dictionary/contained/index.js.map +1 -1
  68. package/dist/dictionary/definition/category-simple-set.d.ts +1 -2
  69. package/dist/dictionary/definition/category-simple-set.js +1 -2
  70. package/dist/dictionary/definition/category-simple-set.js.map +1 -1
  71. package/dist/dictionary/definition/component-field-definition.d.ts +1 -1
  72. package/dist/dictionary/definition/component-field-definition.js +2 -2
  73. package/dist/dictionary/definition/component-field-definition.js.map +1 -1
  74. package/dist/dictionary/definition/fix-definitions.d.ts +8 -9
  75. package/dist/dictionary/definition/fix-definitions.js +22 -20
  76. package/dist/dictionary/definition/fix-definitions.js.map +1 -1
  77. package/dist/dictionary/definition/group-field-definition.d.ts +1 -1
  78. package/dist/dictionary/definition/group-field-definition.js +2 -2
  79. package/dist/dictionary/definition/group-field-definition.js.map +1 -1
  80. package/dist/dictionary/definition/message-definition.d.ts +1 -1
  81. package/dist/dictionary/definition/message-definition.js +2 -2
  82. package/dist/dictionary/definition/message-definition.js.map +1 -1
  83. package/dist/dictionary/definition/simple-field-definition.d.ts +2 -3
  84. package/dist/dictionary/definition/simple-field-definition.js +6 -7
  85. package/dist/dictionary/definition/simple-field-definition.js.map +1 -1
  86. package/dist/dictionary/parser/fix-repository/repository.js +20 -20
  87. package/dist/dictionary/parser/fix-repository/repository.js.map +1 -1
  88. package/dist/dictionary/parser/fixml/components-parser.js +18 -16
  89. package/dist/dictionary/parser/fixml/components-parser.js.map +1 -1
  90. package/dist/dictionary/parser/fixml/fields-parser.js +2 -3
  91. package/dist/dictionary/parser/fixml/fields-parser.js.map +1 -1
  92. package/dist/dictionary/parser/fixml/include-graph.js +8 -9
  93. package/dist/dictionary/parser/fixml/include-graph.js.map +1 -1
  94. package/dist/dictionary/parser/quickfix/field-definition-parser.js.map +1 -1
  95. package/dist/dictionary/parser/quickfix/message-parser.js +2 -1
  96. package/dist/dictionary/parser/quickfix/message-parser.js.map +1 -1
  97. package/dist/dictionary/parser/quickfix/node-parser.js +3 -2
  98. package/dist/dictionary/parser/quickfix/node-parser.js.map +1 -1
  99. package/dist/dictionary/parser/quickfix/parse-context.d.ts +3 -3
  100. package/dist/dictionary/parser/quickfix/parse-context.js.map +1 -1
  101. package/dist/dictionary/parser/quickfix/parse-progress.d.ts +1 -2
  102. package/dist/dictionary/parser/quickfix/parse-progress.js +2 -3
  103. package/dist/dictionary/parser/quickfix/parse-progress.js.map +1 -1
  104. package/dist/dictionary/parser/quickfix/quick-fix-xml-file-builder.js +4 -5
  105. package/dist/dictionary/parser/quickfix/quick-fix-xml-file-builder.js.map +1 -1
  106. package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js +6 -6
  107. package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js.map +1 -1
  108. package/dist/dictionary/parser/quickfix/quick-fix-xml-formatter.d.ts +1 -1
  109. package/dist/dictionary/parser/quickfix/quick-fix-xml-formatter.js.map +1 -1
  110. package/dist/dictionary/set-reduce.d.ts +2 -2
  111. package/dist/dictionary/set-reduce.js.map +1 -1
  112. package/dist/index.d.ts +0 -1
  113. package/dist/index.js +0 -1
  114. package/dist/index.js.map +1 -1
  115. package/dist/jsfix-cmd.js +4 -5
  116. package/dist/jsfix-cmd.js.map +1 -1
  117. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js +7 -8
  118. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js.map +1 -1
  119. package/dist/sample/tcp/trade-capture/trade-capture-client.js +3 -4
  120. package/dist/sample/tcp/trade-capture/trade-capture-client.js.map +1 -1
  121. package/dist/sample/tcp/trade-capture/trade-capture-server.js.map +1 -1
  122. package/dist/store/fix-msg-ascii-store-resend.d.ts +4 -3
  123. package/dist/store/fix-msg-ascii-store-resend.js +21 -5
  124. package/dist/store/fix-msg-ascii-store-resend.js.map +1 -1
  125. package/dist/store/fix-msg-memory-store.js +3 -4
  126. package/dist/store/fix-msg-memory-store.js.map +1 -1
  127. package/dist/store/fix-msg-store-record.js.map +1 -1
  128. package/dist/test/ascii/ascii-encoder.test.js.map +1 -1
  129. package/dist/test/ascii/ascii-store-replay.test.js +14 -1
  130. package/dist/test/ascii/ascii-store-replay.test.js.map +1 -1
  131. package/dist/test/ascii/fix-log-replay.test.js.map +1 -1
  132. package/dist/test/ascii/fix-repo-dict.test.js.map +1 -1
  133. package/dist/test/ascii/qf-50sp0-dict.test.js +7 -7
  134. package/dist/test/ascii/qf-50sp0-dict.test.js.map +1 -1
  135. package/dist/test/ascii/qf-50sp2-dict.test.js +5 -2
  136. package/dist/test/ascii/qf-50sp2-dict.test.js.map +1 -1
  137. package/dist/test/ascii/session.test.js +64 -15
  138. package/dist/test/ascii/session.test.js.map +1 -1
  139. package/dist/test/env/encoder-test.d.ts +3 -3
  140. package/dist/test/env/encoder-test.js.map +1 -1
  141. package/dist/test/env/set-constraint-helper.d.ts +4 -4
  142. package/dist/test/env/set-constraint-helper.js.map +1 -1
  143. package/dist/transport/ascii/ascii-msg-transmitter.js.map +1 -1
  144. package/dist/transport/ascii/ascii-session.js +5 -2
  145. package/dist/transport/ascii/ascii-session.js.map +1 -1
  146. package/dist/transport/fixml/fixml-session.js.map +1 -1
  147. package/dist/transport/http/http-acceptor.js +3 -4
  148. package/dist/transport/http/http-acceptor.js.map +1 -1
  149. package/dist/transport/http/http-json-sample-adapter.js +3 -4
  150. package/dist/transport/http/http-json-sample-adapter.js.map +1 -1
  151. package/dist/transport/session/dynamic-session-manager.d.ts +8 -0
  152. package/dist/transport/session/dynamic-session-manager.js +15 -0
  153. package/dist/transport/session/dynamic-session-manager.js.map +1 -0
  154. package/dist/transport/session/session-description.d.ts +9 -7
  155. package/dist/transport/session/session-description.js.map +1 -1
  156. package/dist/util/json-helper.d.ts +2 -2
  157. package/dist/util/json-helper.js.map +1 -1
  158. package/dist/util/message-generator.js +1 -1
  159. package/dist/util/message-generator.js.map +1 -1
  160. package/package.json +21 -21
  161. package/src/buffer/ascii/ascii-encoder.ts +7 -7
  162. package/src/buffer/ascii/ascii-parser-state.ts +4 -4
  163. package/src/buffer/ascii/ascii-parser.ts +6 -5
  164. package/src/buffer/ascii/ascii-segment-parser.ts +2 -2
  165. package/src/buffer/ascii/ascii-view.ts +9 -7
  166. package/src/buffer/encode-proxy.ts +9 -9
  167. package/src/buffer/fixml/fixml-encoder.ts +14 -10
  168. package/src/buffer/fixml/fixml-parser.ts +5 -5
  169. package/src/buffer/fixml/fixml-view.ts +5 -5
  170. package/src/buffer/msg-encoder.ts +3 -3
  171. package/src/buffer/msg-view.ts +18 -18
  172. package/src/buffer/segment/segment-description.ts +2 -2
  173. package/src/buffer/tag/tags.ts +4 -6
  174. package/src/collections/collection.ts +0 -1
  175. package/src/collections/index.ts +1 -1
  176. package/src/config/js-fix-config.ts +3 -2
  177. package/src/dictionary/compiler/compiler-type.ts +8 -2
  178. package/src/dictionary/compiler/enum-compiler.ts +2 -2
  179. package/src/dictionary/compiler/msg-compiler.ts +11 -12
  180. package/src/dictionary/contained/contained-component-field.ts +1 -1
  181. package/src/dictionary/contained/contained-field-set.ts +21 -176
  182. package/src/dictionary/contained/contained-group-field.ts +1 -1
  183. package/src/dictionary/contained/contained-set-builder.ts +164 -0
  184. package/src/dictionary/contained/contained-set.ts +83 -0
  185. package/src/dictionary/contained/contained-simple-field.ts +1 -1
  186. package/src/dictionary/contained/index.ts +4 -1
  187. package/src/dictionary/definition/category-simple-set.ts +1 -2
  188. package/src/dictionary/definition/component-field-definition.ts +1 -1
  189. package/src/dictionary/definition/fix-definitions.ts +28 -26
  190. package/src/dictionary/definition/group-field-definition.ts +1 -1
  191. package/src/dictionary/definition/message-definition.ts +6 -6
  192. package/src/dictionary/definition/simple-field-definition.ts +9 -10
  193. package/src/dictionary/parser/fix-repository/repository.ts +47 -40
  194. package/src/dictionary/parser/fixml/components-parser.ts +41 -38
  195. package/src/dictionary/parser/fixml/fields-parser.ts +3 -4
  196. package/src/dictionary/parser/fixml/include-graph.ts +13 -14
  197. package/src/dictionary/parser/quickfix/field-definition-parser.ts +5 -5
  198. package/src/dictionary/parser/quickfix/message-parser.ts +7 -5
  199. package/src/dictionary/parser/quickfix/node-parser.ts +13 -6
  200. package/src/dictionary/parser/quickfix/parse-context.ts +2 -2
  201. package/src/dictionary/parser/quickfix/parse-progress.ts +2 -3
  202. package/src/dictionary/parser/quickfix/quick-fix-xml-file-builder.ts +4 -5
  203. package/src/dictionary/parser/quickfix/quick-fix-xml-file-parser.ts +10 -12
  204. package/src/dictionary/parser/quickfix/quick-fix-xml-formatter.ts +1 -1
  205. package/src/dictionary/set-reduce.ts +3 -3
  206. package/src/index.ts +0 -1
  207. package/src/jsfix-cmd.ts +5 -6
  208. package/src/sample/tcp/recovering-skeleton/respawn-acceptor.ts +7 -8
  209. package/src/sample/tcp/trade-capture/trade-capture-client.ts +4 -5
  210. package/src/sample/tcp/trade-capture/trade-capture-server.ts +1 -1
  211. package/src/store/fix-msg-ascii-store-resend.ts +64 -8
  212. package/src/store/fix-msg-memory-store.ts +3 -4
  213. package/src/store/fix-msg-store-record.ts +1 -1
  214. package/src/transport/ascii/ascii-msg-transmitter.ts +6 -6
  215. package/src/transport/ascii/ascii-session.ts +11 -7
  216. package/src/transport/fixml/fixml-session.ts +3 -3
  217. package/src/transport/http/http-acceptor.ts +4 -5
  218. package/src/transport/http/http-json-sample-adapter.ts +3 -4
  219. package/src/transport/session/dynamic-session-manager.ts +16 -0
  220. package/src/transport/session/session-description.ts +10 -7
  221. package/src/util/json-helper.ts +3 -3
  222. package/src/util/message-generator.ts +4 -4
  223. package/dist/collections/dictionary.d.ts +0 -15
  224. package/dist/collections/dictionary.js +0 -57
  225. package/dist/collections/dictionary.js.map +0 -1
  226. package/dist/types/FIX.5.0SP2/quickfix/execution_acknowledgement.d.ts +0 -31
  227. package/dist/types/FIX.5.0SP2/quickfix/execution_acknowledgement.js +0 -3
  228. package/dist/types/FIX.5.0SP2/quickfix/execution_acknowledgement.js.map +0 -1
  229. package/dist/types/FIX.5.0SP2/quickfix/mass_quote_acknowledgement.d.ts +0 -26
  230. package/dist/types/FIX.5.0SP2/quickfix/mass_quote_acknowledgement.js +0 -3
  231. package/dist/types/FIX.5.0SP2/quickfix/mass_quote_acknowledgement.js.map +0 -1
  232. package/dist/types/FIX.5.0SP2/quickfix/set/hop_grp.d.ts +0 -5
  233. package/dist/types/FIX.5.0SP2/quickfix/set/hop_grp.js +0 -3
  234. package/dist/types/FIX.5.0SP2/quickfix/set/hop_grp.js.map +0 -1
  235. package/dist/types/FIX.5.0SP2/quickfix/set/msg_type_grp.d.ts +0 -8
  236. package/dist/types/FIX.5.0SP2/quickfix/set/msg_type_grp.js +0 -3
  237. package/dist/types/FIX.5.0SP2/quickfix/set/msg_type_grp.js.map +0 -1
  238. package/dist/types/FIX.5.0SP2/quickfix/set/not_affected_orders_grp.d.ts +0 -4
  239. package/dist/types/FIX.5.0SP2/quickfix/set/not_affected_orders_grp.js +0 -3
  240. package/dist/types/FIX.5.0SP2/quickfix/set/not_affected_orders_grp.js.map +0 -1
  241. package/dist/types/FIX.5.0SP2/quickfix/xm_lnon_fix.d.ts +0 -6
  242. package/dist/types/FIX.5.0SP2/quickfix/xm_lnon_fix.js.map +0 -1
  243. 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":"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","sourcesContent":["import { SAXStream } from '../../dict-primitive'\r\nimport { Dictionary } from '../../../collections'\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: Dictionary<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 | null = 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 | null = 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 | null = 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: Dictionary<number>, current: IInclude) => {\r\n if (!a.containsKey(current.parent)) {\r\n a.add(current.parent, next++)\r\n }\r\n current.children.forEach((c: string) => {\r\n if (!a.containsKey(c)) {\r\n a.add(c, next++)\r\n }\r\n })\r\n return a\r\n }, new Dictionary<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: Dictionary<boolean> = new Dictionary<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.containsKey(next)) {\r\n continue\r\n }\r\n seen.add(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
+ {"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,MAAM,EACtB,IAAI,CAAC,UAAU,CAAC,IAAI,EACpB,IAAI,CAAC,UAAU,CAAC,IAAI,EACpB,IAAI,EACJ,IAAI,EACJ,IAAI,CAAC,UAAU,CAAC,IAAI,EACpB,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,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;gBAC5E,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,\r\n node.attributes.name,\r\n node.attributes.name,\r\n null,\r\n null,\r\n node.attributes.type,\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, node.attributes.description)\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"]}
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
- msg.add(contained);
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,+CAAyD;AAIzD,MAAa,aAAc,SAAQ,wBAAU;IAC3C,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,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,GAAG,GAAQ,IAAI,CAAC,UAAU,CAAA;gBAChC,MAAM,GAAG,GAAsB,IAAI,8BAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;gBACvG,MAAM,OAAO,GAAiB,IAAI,4BAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;gBACnE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;gBACzB,MAAK;YACP,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBACpB,MAAK;YACP,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;gBACpD,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACxB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;gBACjC,CAAC;gBACD,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;IAEO,MAAM,CAAE,GAAsB,EAAE,OAAqB;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QACrE,MAAM,SAAS,GAAG,GAAG;YACnB,CAAC,CAAC,IAAI,mCAAuB,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAA;QACR,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;YACvB,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAClB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAEM,KAAK,CAAE,IAAY,EAAE,IAAY;;QACtC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,MAAM,GAAwB,MAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,mCAAI,IAAI,CAAA;gBACpE,MAAM,OAAO,GAA6B,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAAE,mCAAI,IAAI,CAAA;gBACrE,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;oBAC1B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;gBAC/C,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;gBACxB,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAlED,sCAkEC","sourcesContent":["import { MessageDefinition } from '../../definition'\r\nimport { NodeParser } from './node-parser'\r\nimport { ParseContext } from './parse-context'\r\nimport { ContainedComponentField } from '../../contained'\r\nimport { ISaxNode } from '../../sax-node'\r\nimport { ParseProgress } from './parse-progress'\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: any = node.attributes\r\n const msg: MessageDefinition = new MessageDefinition(att.name, att.name, att.msgtype, att.msgcat, null)\r\n const context: ParseContext = new ParseContext(msg.name, true, msg)\r\n 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, 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 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 msg.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"]}
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.add(containedField);
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.add(fullQualifiedName, cached);
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 { ContainedFieldSet } from '../../contained';
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: ContainedFieldSet | null;
6
+ set: IContainedSet | null;
7
7
  required: boolean;
8
- constructor(name: string, defining: boolean, set: ContainedFieldSet | null);
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,GAA6B;QAA5E,SAAI,GAAJ,IAAI,CAAQ;QAAS,aAAQ,GAAR,QAAQ,CAAS;QAAS,QAAG,GAAH,GAAG,CAA0B;QAC9F,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 { ContainedFieldSet } 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: ContainedFieldSet | 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
+ {"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: Dictionary<GroupFieldDefinition>;
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 collections_1.Dictionary();
16
+ this.groupDefinitionCache = new Map();
18
17
  }
19
18
  toString() {
20
- return `parseState = ${this.parseState}, numberPasses = ${this.numberPasses}, componentPasses = ${this.componentPasses}, groupCount = ${this.groupDefinitionCache.count()}, cacheMisses = ${this.cacheMisses}, newContexts = ${this.newContexts}, newDefines = ${this.newDefines}, newAdds = ${this.newAdds}, previousDelta = ${this.previousDelta}, delta = ${this.delta()}, changed = ${this.changed()}`;
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;AAE1C,sDAAiD;AAEjD,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,GAAqC,IAAI,wBAAU,EAAwB,CAAA;IA+CxG,CAAC;IA7CQ,QAAQ;QACb,OAAO,gBAAgB,IAAI,CAAC,UAAU,oBAAoB,IAAI,CAAC,YAAY,uBAAuB,IAAI,CAAC,eAAe,kBAAkB,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,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;IAC5Y,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\nimport { Dictionary } from '../../../collections'\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: Dictionary<GroupFieldDefinition> = new Dictionary<GroupFieldDefinition>()\r\n\r\n public toString (): string {\r\n return `parseState = ${this.parseState}, numberPasses = ${this.numberPasses}, componentPasses = ${this.componentPasses}, groupCount = ${this.groupDefinitionCache.count()}, 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"]}
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 collections_1.Dictionary();
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.containsKey(cf.name)) {
119
- this.seenComponents.add(cf.name, true);
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":";;;AACA,4CAA+C;AAE/C,+CAMwB;AACxB,mCAA6B;AAC7B,sDAAiD;AACjD,uEAAgE;AAEhE,MAAa,sBAAsB;IAajC,YAA6B,WAA2B;QAA3B,gBAAW,GAAX,WAAW,CAAgB;QAZvC,aAAQ,GAA0B,EAAE,CAAA;QACpC,uBAAkB,GAAa,EAAE,CAAA;QACjC,mBAAc,GAAwB,IAAI,wBAAU,EAAW,CAAA;QAC/D,WAAM,GAAW,CAAC,CAAA;QAClB,eAAU,GAAmB,IAAI,0BAAc,EAAE,CAAA;QAClD,kBAAa,GAAkB,IAAI,sBAAa,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IAQ3E,CAAC;IAMM,KAAK,CAAE,QAAkB;QAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;QAC7B,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QACrD,EAAE,CAAC,KAAK,EAAE,CAAA;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAEvD,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;QAC1I,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,iBAAiB,EAAE,QAAQ,CAAC,CAAA;QAC7E,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,kBAAkB,EAAE,SAAS,CAAC,CAAA;QAChF,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1D,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpD,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtD,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QACtB,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,MAAM,EAAE,CAAC,CAAA;IAC/C,CAAC;IAEO,eAAe,CAAE,aAAqB;QAC5C,MAAM,EAAE,GAAkB,IAAI,sBAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QACrD,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAA;QAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAA;QAC1C,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAA;YAC1B,IAAI,CAAC,CAAC;gBAAE,SAAQ;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACnD,IAAI,CAAC,SAAS;gBAAE,SAAQ;YACxB,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;YAChG,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;YACzF,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACnB,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAChF,CAAC;QACD,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAA;QAC3E,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAA;IACtB,CAAC;IAOO,aAAa,CAAE,QAAkB,EAAE,aAAqB;QAC9D,MAAM,EAAE,GAAkB,IAAI,sBAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QACrD,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAA;QAC3E,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACpB,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC3C,IAAI,CAAC,EAAE;gBAAE,OAAM;YACf,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;YACnF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;YACpH,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YACtB,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QACxF,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAA;QACzE,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAA;IACtB,CAAC;IAEO,qBAAqB,CAAE,aAAqB;QAClD,MAAM,EAAE,GAAkB,IAAI,sBAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QAErD,MAAM,IAAI,GAAG,IAAA,aAAI,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QACtD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,CAAA;QACd,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAA;QACzE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACf,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;YAC1C,IAAI,CAAC,EAAE;gBAAE,OAAM;YAEf,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;YACjF,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;gBAChB,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;gBAClF,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;gBAClB,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;YACtF,CAAC;QACH,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAA;QACvE,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAA;IACtB,CAAC;IAQO,mBAAmB,CAAE,EAAyB,EAAE,aAAqB;QAC3E,MAAM,EAAE,GAAkB,IAAI,sBAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QAC5B,IAAI,CAAC,IAAI,EAAE,CAAA;QACX,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACf,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAA;QAC9E,CAAC,CAAC,CAAA;QACF,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAA;IACtB,CAAC;IAEO,cAAc,CAAE,IAAY,EAAE,QAAgB;QACpD,MAAM,EAAE,GAAkB,IAAI,sBAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,EAAE,CAAA;QAC1B,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QACvE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QACvE,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QACrE,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAA;IACtB,CAAC;IAEO,gBAAgB,CAAE,EAAwB,EAAE,EAAiB,EAAE,aAAqB;QAC1F,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAA;QAChE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA;IAC5C,CAAC;IAEO,mBAAmB,CAAE,EAA2B,EAAE,EAAiB,EAAE,aAAqB;QAChG,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAA;QACpE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACtC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAEO,eAAe,CAAE,EAAuB,EAAE,EAAiB,EAAE,aAAqB;;QACxF,IAAI,CAAC,QAAQ,CAAC,MAAA,MAAA,EAAE,CAAC,UAAU,CAAC,SAAS,0CAAE,GAAG,mCAAI,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA;QAC1D,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAA;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;QACpF,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QACxB,EAAE,CAAC,WAAW,CAAC,8CAAoB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAA;IAC9D,CAAC;IASO,WAAW,CAAE,MAAwB,EAAE,aAAqB;QAClE,MAAM,EAAE,GAAkB,IAAI,sBAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QACrD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE;YACrC,MAAM,EAAE,CAAC,EAAwB,EAAE,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAA,CAAC,CAAC;YACtF,SAAS,EAAE,CAAC,EAA2B,EAAE,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAA,CAAC,CAAC;YAC/F,KAAK,EAAE,CAAC,EAAuB,EAAE,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAA,CAAC,CAAC;SACpF,CAAC,CAAA;QACF,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAA;IACtB,CAAC;CACF;AApKD,wDAoKC","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', (node) => {
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, node);
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.containsKey(trailerName))) {
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
- message === null || message === void 0 ? void 0 : message.add(contained);
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":"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","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 | null), ws: number): string;
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":"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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 | null), 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
+ {"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, ContainedFieldSet } from './contained';
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: ContainedFieldSet, dispatcher: ITypeDispatcher<T>, init: T): T;
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,GAAsB,EAAE,UAA8B,EAAE,IAAO;QACrE,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,KAAqB,EAAE,EAAE;YACzD,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, ContainedFieldSet,\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: ContainedFieldSet, dispatcher: ITypeDispatcher<T>, init: T): T {\r\n return def.fields.reduce((a: any, field: ContainedField) => {\r\n this.reduceField(a, field, dispatcher)\r\n return a\r\n }, init)\r\n }\r\n}\r\n"]}
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
@@ -2,6 +2,5 @@ export * from './runtime';
2
2
  export * from './dictionary';
3
3
  export * from './buffer';
4
4
  export * from './transport';
5
- export * from './collections';
6
5
  export * from './config';
7
6
  export * from './types';
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,gDAA6B;AAC7B,2CAAwB;AACxB,0CAAuB","sourcesContent":["export * from './runtime'\r\nexport * from './dictionary'\r\nexport * from './buffer'\r\nexport * from './transport'\r\nexport * from './collections'\r\nexport * from './config'\r\nexport * from './types'\r\n"]}
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"]}