jspurefix 5.10.3 → 5.10.5

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 (41) hide show
  1. package/ATDL_PLAN.md +82 -14
  2. package/dist/buffer/elastic-buffer.js +3 -3
  3. package/dist/buffer/elastic-buffer.js.map +1 -1
  4. package/dist/buffer/encode-proxy.js.map +1 -1
  5. package/dist/buffer/fixml/fixml-encoder.js.map +1 -1
  6. package/dist/buffer/msg-view.js.map +1 -1
  7. package/dist/config/winston-logger.js.map +1 -1
  8. package/dist/dictionary/parser/fixml/components-parser.js.map +1 -1
  9. package/dist/dictionary/parser/fixml/fields-parser.js.map +1 -1
  10. package/dist/dictionary/parser/fixml/include-graph.js.map +1 -1
  11. package/dist/jsfix-bench.js.map +1 -1
  12. package/dist/sample/http/oms/app.js.map +1 -1
  13. package/dist/sample/http/oms/oms-factory.js.map +1 -1
  14. package/dist/sample/tcp/qf-md/app.js.map +1 -1
  15. package/dist/sample/tcp/skeleton/app.js.map +1 -1
  16. package/dist/sample/tcp/trade-capture/app-launcher.js.map +1 -1
  17. package/dist/store/fix-msg-memory-store.js.map +1 -1
  18. package/dist/transport/fixml/fixml-session-msg-factory.js.map +1 -1
  19. package/dist/transport/session/clone-session-description.js.map +1 -1
  20. package/dist/transport/tcp/tls-options-factory.js.map +1 -1
  21. package/jsfix.test_client.txt +62 -62
  22. package/jsfix.test_server.txt +72 -72
  23. package/package.json +5 -3
  24. package/src/buffer/elastic-buffer.ts +13 -3
  25. package/src/buffer/encode-proxy.ts +1 -1
  26. package/src/buffer/fixml/fixml-encoder.ts +1 -1
  27. package/src/buffer/msg-view.ts +1 -1
  28. package/src/config/winston-logger.ts +1 -1
  29. package/src/dictionary/parser/fixml/components-parser.ts +2 -2
  30. package/src/dictionary/parser/fixml/fields-parser.ts +1 -1
  31. package/src/dictionary/parser/fixml/include-graph.ts +1 -1
  32. package/src/jsfix-bench.ts +1 -1
  33. package/src/sample/http/oms/app.ts +1 -1
  34. package/src/sample/http/oms/oms-factory.ts +4 -4
  35. package/src/sample/tcp/qf-md/app.ts +1 -1
  36. package/src/sample/tcp/skeleton/app.ts +1 -1
  37. package/src/sample/tcp/trade-capture/app-launcher.ts +1 -1
  38. package/src/store/fix-msg-memory-store.ts +1 -1
  39. package/src/transport/fixml/fixml-session-msg-factory.ts +5 -5
  40. package/src/transport/session/clone-session-description.ts +1 -1
  41. package/src/transport/tcp/tls-options-factory.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"components-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/fixml/components-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { ISaxNode } from '../../sax-node'\nimport { XsdParser } from './xsd-parser'\nimport {\n ContainedGroupField,\n IContainedSet,\n ContainedSetBuilder,\n ContainedComponentField,\n ContainedSimpleField,\n ContainedField\n} from '../../contained'\nimport {\n MessageDefinition,\n FixDefinitions,\n GroupFieldDefinition,\n ComponentFieldDefinition\n} from '../../definition'\n\nexport class ComponentsParser extends XsdParser {\n private readonly attributeGroups: Map<string, IAttributeGroup> = new Map<string, IAttributeGroup>()\n private readonly groups: Map<string, IGroup> = new Map<string, IGroup>()\n private readonly unboundElements: IElement[] = []\n private readonly complexTypes: Map<string, IComplexType> = new Map<string, IComplexType>()\n\n private newComplexTypes: IComplexType[]\n private currentGroup: (IGroup | null)\n private readonly currentAttributeGroupStack: IAttributeGroup[] = []\n private currentComplexType: (IComplexType | null)\n private previousComplexType: IComplexType\n\n public constructor (public readonly definitions: FixDefinitions) {\n super(definitions)\n }\n\n private static getName (group: (IGroup | undefined), attributeGroup: (IAttributeGroup | undefined), type: IComplexType): string {\n let name: string\n if (type?.appInfo) {\n name = type.appInfo.name\n } else if (group) {\n name = group.name\n } else if (attributeGroup) {\n name = attributeGroup.name\n } else {\n name = type.name\n }\n return name\n }\n\n public value (line: number, n: string, v: string): void {\n // do nothing\n switch (n) {\n case 'xs:documentation': {\n if (this.currentComplexType?.annotation) {\n this.currentComplexType.annotation.documentation = v\n }\n break\n }\n }\n this.pending = null\n }\n\n public close (line: number, node: string): void {\n switch (node) {\n case 'xs:complexType': {\n if (this.currentComplexType != null) {\n const complex: IComplexType = this.currentComplexType\n this.previousComplexType = complex\n this.complexTypes.set(complex.name, complex)\n this.newComplexTypes.push(complex)\n this.currentComplexType = null\n }\n break\n }\n\n case 'xs:group': {\n if (this.currentGroup) {\n this.groups.set(this.currentGroup.name, this.currentGroup)\n this.currentGroup = null\n }\n break\n }\n\n case 'xs:attributeGroup': {\n const attributeStack: IAttributeGroup[] = this.currentAttributeGroupStack\n if (attributeStack.length > 0) {\n const group: IAttributeGroup | undefined = attributeStack.pop()\n if (group?.name) {\n this.attributeGroups.set(group?.name, group)\n }\n }\n break\n }\n\n case 'xs:schema': {\n this.insertFields()\n break\n }\n }\n }\n\n public open (line: number, node: ISaxNode): void {\n switch (node.name) {\n case 'xs:schema': {\n this.newComplexTypes = []\n break\n }\n\n case 'xs:group': {\n this.xsGroup(node)\n break\n }\n\n case 'xs:attributeGroup': {\n this.xsAttributeGroup(node)\n break\n }\n\n case 'xs:element': {\n this.xsElement(node)\n break\n }\n\n case 'xs:appinfo': {\n if (this.currentComplexType) {\n this.currentComplexType.appInfo = {} as IAppInfo\n }\n break\n }\n\n case 'xs:attribute': {\n this.xsAttribute(node)\n break\n }\n\n case 'xs:complexType': {\n const unbound: IElement[] = this.unboundElements\n this.currentComplexType = {\n name: node.attributes.name || unbound[unbound.length - 1].name\n } as IComplexType\n break\n }\n\n case 'xs:extension': {\n const current: IComplexType | null = this.currentComplexType\n if (current && node.attributes.base) {\n current.extensionBase = node.attributes.base\n }\n break\n }\n\n case 'fm:Xref': {\n this.assign(node, this.currentComplexType?.appInfo)\n break\n }\n\n case 'xs:annotation': {\n if (this.currentComplexType) {\n this.currentComplexType.annotation = {} as IAnnotation\n }\n break\n }\n\n case 'xs:documentation': {\n if (this.currentComplexType) {\n this.pending = node.name\n }\n break\n }\n }\n }\n\n private xsAttribute (node: ISaxNode): void {\n const attribute: IAttribute = {} as IAttribute\n this.assign(node, attribute)\n const stack: IAttributeGroup[] = this.currentAttributeGroupStack\n if (stack.length > 0) {\n const peek: IAttributeGroup = stack[stack.length - 1]\n const groupAttributes: IAttribute[] = peek.attributes\n groupAttributes[groupAttributes.length] = attribute\n }\n }\n\n private xsGroup (node: ISaxNode): void {\n if (node.attributes.name) {\n this.currentGroup = {\n name: node.attributes.name,\n elements: [] as IElement[]\n } as IGroup\n } else if (node.attributes.ref) {\n if (this.currentComplexType) {\n this.currentComplexType.group = node.attributes.ref\n } else if (this.currentGroup) {\n // this is part of a sequence for a group\n const elements = this.currentGroup.elements\n elements[elements.length] = {\n type: node.name,\n name: node.attributes.ref\n } as IElement\n }\n }\n }\n\n private xsAttributeGroup (node: ISaxNode): void {\n const attributeStack: IAttributeGroup[] = this.currentAttributeGroupStack\n if (node.attributes.name) {\n attributeStack.push({\n name: node.attributes.name,\n attributes: [] as IAttribute[]\n } as IAttributeGroup)\n } else if (node.attributes.ref) {\n if (this.currentComplexType) {\n this.currentComplexType.attributeGroup = node.attributes.ref\n } else if (attributeStack.length > 0) {\n const peek: IAttributeGroup = attributeStack[attributeStack.length - 1]\n peek.attributes[peek.attributes.length] = {\n type: node.name,\n name: node.attributes.ref\n } as IAttribute\n }\n }\n }\n\n private xsElement (node: ISaxNode): void {\n const element: IElement = {} as IElement\n this.assign(node, element)\n const currentComplex: IComplexType | null = this.currentComplexType\n const currentGroup: IGroup | null = this.currentGroup\n if (!currentGroup && currentComplex) {\n if (!currentComplex.element) {\n currentComplex.element = []\n }\n const elements: IElement[] = currentComplex.element\n elements[elements.length] = element\n } else if (currentGroup) {\n const elements: IElement[] = currentGroup.elements\n elements[elements.length] = element\n } else {\n if (element.substitutionGroup && this.previousComplexType) {\n this.previousComplexType.messageName = element.name\n } else {\n this.unboundElements.push(element)\n }\n }\n }\n\n private addElement (set: IContainedSet, element: IElement): void {\n const minOccurs: number = parseInt(element.minOccurs, 10)\n const isGroup: boolean = element.maxOccurs === 'unbounded'\n const isComponent: boolean = element.maxOccurs === '1' || !isGroup\n const key = element.type || element.ref || element.name\n const builder = new ContainedSetBuilder(set)\n const containedType: IComplexType | undefined = this.complexTypes.get(key)\n if (containedType) {\n if (isComponent) {\n const containedDefinition: ComponentFieldDefinition = this.getComponent(containedType)\n const containedField: ContainedComponentField =\n new ContainedComponentField(containedDefinition,\n set.fields.length,\n minOccurs > 0,\n element.name)\n builder.add(containedField)\n } else if (isGroup) {\n const containedDefinition: GroupFieldDefinition = this.getGroup(containedType)\n const containedField: ContainedGroupField =\n new ContainedGroupField(containedDefinition,\n set.fields.length,\n minOccurs > 0,\n element.name)\n builder.add(containedField)\n }\n } else {\n if (key !== 'Message') {\n throw new Error(`cannot resolve component ${key} contained in ${set.name}`)\n }\n }\n }\n\n private addElements (set: IContainedSet, elements: IElement[]): void {\n if (elements) {\n elements.forEach((element: IElement) => {\n switch (element.type) {\n case 'xs:group': {\n const groupElements: IGroup | undefined = this.groups.get(element.name)\n if (groupElements) {\n this.addElements(set, groupElements.elements)\n } else {\n throw new Error(`unable to get xs:group ${element.name}`)\n }\n }\n break\n\n default: {\n this.addElement(set, element)\n }\n }\n })\n }\n }\n\n private addSimpleAttribute (set: IContainedSet, attribute: IAttribute): void {\n let sf = this.definitions.getSimple(attribute.type)\n if (!sf) {\n sf = this.definitions.getSimple(attribute.name, set.category)\n }\n if (sf) {\n const contained: ContainedSimpleField = new ContainedSimpleField(sf,\n set.fields.length,\n attribute.use !== 'optional',\n true,\n attribute.name)\n const builder = new ContainedSetBuilder(set)\n builder.add(contained)\n } else if (set.name !== 'FixmlAttributes') {\n throw new Error(`unable to resolve simple attribute ${attribute.name}`)\n }\n }\n\n private addAttributes (set: IContainedSet, attributes: IAttribute[]): void {\n attributes.forEach((attribute: IAttribute) => {\n switch (attribute.type) {\n case 'xs:attributeGroup': {\n const attributeGroup: IAttributeGroup | undefined = this.attributeGroups.get(attribute.name)\n if (attributeGroup) {\n this.addAttributes(set, attributeGroup.attributes)\n } else {\n throw new Error(`unable to get xs:attributeGroup ${attribute.name}`)\n }\n break\n }\n\n default: {\n this.addSimpleAttribute(set, attribute)\n }\n }\n })\n }\n\n private getGroup (type: IComplexType): GroupFieldDefinition {\n const group: IGroup | undefined = this.groups.get(type.group)\n const attributeGroup: IAttributeGroup | undefined = this.attributeGroups.get(type.attributeGroup)\n const name: string = ComponentsParser.getName(group, attributeGroup, type)\n const category = type.appInfo != null ? type.appInfo.Category : null\n const groupDefinition: GroupFieldDefinition = new GroupFieldDefinition(name, name, category, null, null)\n this.populateSet(type, groupDefinition)\n return groupDefinition\n }\n\n private getComponent (type: IComplexType): ComponentFieldDefinition {\n const definitions: FixDefinitions = this.definitions\n const group: IGroup | undefined = this.groups.get(type.group)\n const attributeGroup: IAttributeGroup | undefined = this.attributeGroups.get(type.attributeGroup)\n let name: string = ComponentsParser.getName(group, attributeGroup, type)\n const cached: ComponentFieldDefinition | undefined = definitions.component.get(name)\n if (cached) {\n return cached\n }\n\n const category = type.appInfo != null ? type.appInfo.Category : null\n if (type.extensionBase) {\n const base: IComplexType | undefined = this.complexTypes.get(type.extensionBase)\n if (base) {\n name = base.appInfo.name\n }\n }\n const component: ComponentFieldDefinition = new ComponentFieldDefinition(name, name, category, null)\n this.populateSet(type, component)\n definitions.component.set(component.name, component)\n definitions.component.set(type.name, component)\n return component\n }\n\n private getMessage (type: IComplexType): MessageDefinition {\n const definitions: FixDefinitions = this.definitions\n const messages = definitions.message\n const name: string = type.appInfo.name\n const message: MessageDefinition = new MessageDefinition(name,\n type.messageName,\n type.appInfo.MsgID,\n type.appInfo.Category,\n type.annotation.documentation)\n const builder = new ContainedSetBuilder(message)\n const abstractMessage: ComponentFieldDefinition | undefined = definitions.component.get('Message')\n abstractMessage?.fields.forEach((f: ContainedField) => {\n builder.add(f)\n })\n this.populateSet(type, message)\n messages.set(message.name, message)\n if (type.messageName && type.messageName !== name) {\n messages.set(type.messageName, message)\n }\n\n return message\n }\n\n private getBaseAttributes (type: IComplexType): (IAttributeGroup | null) {\n const attributeGroups: Map<string, IAttributeGroup> = this.attributeGroups\n let baseGroup\n if (type.extensionBase) {\n const base: IComplexType | undefined = this.complexTypes.get(type.extensionBase)\n if (base) {\n baseGroup = attributeGroups.get(base.attributeGroup)\n }\n return baseGroup ?? null\n }\n return null\n }\n\n private populateSet (type: IComplexType, set: IContainedSet): void {\n const group: IGroup | undefined = this.groups.get(type.group)\n const elements: IElement[] = group ? group.elements : type.element\n const attributeGroups = this.attributeGroups\n const attributeGroup: IAttributeGroup | undefined = attributeGroups.get(type.attributeGroup)\n const baseGroup: IAttributeGroup | null = this.getBaseAttributes(type)\n // if a base is specified add the attributes from there\n if (baseGroup) {\n this.addAttributes(set, baseGroup.attributes)\n }\n if (attributeGroup) {\n this.addAttributes(set, attributeGroup.attributes)\n }\n this.addElements(set, elements)\n }\n\n private constructType (type: IComplexType): void {\n const componentType: string = type.appInfo != null ? type.appInfo.ComponentType : 'Block'\n switch (componentType) {\n case 'Message': {\n const message: MessageDefinition = this.getMessage(type)\n if (!message) {\n throw new Error(`cannot resolve ${type.name}`)\n }\n break\n }\n\n // these may be included from top level messages and added into definitions\n case 'Block': {\n const component: ComponentFieldDefinition = this.getComponent(type)\n if (!component) {\n throw new Error(`cannot resolve ${type.name}`)\n }\n break\n }\n\n case 'ImplicitBlock':\n case 'XMLDataBlock':\n case 'BlockRepeating':\n case 'ImplicitBlockRepeating': {\n break\n }\n\n default:\n throw new Error(`unknown type ${componentType}`)\n }\n }\n\n private insertFields (): void {\n this.newComplexTypes.forEach((type: IComplexType) => {\n this.constructType(type)\n })\n this.unboundElements.forEach((e: IElement) => {\n const definitions = this.definitions\n const component: ComponentFieldDefinition | undefined = definitions.component.get(e.type)\n if (component) {\n definitions.component.set(e.name, component)\n }\n })\n }\n}\n"]}
1
+ {"version":3,"file":"components-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/fixml/components-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { ISaxNode } from '../../sax-node'\nimport { XsdParser } from './xsd-parser'\nimport {\n ContainedGroupField,\n IContainedSet,\n ContainedSetBuilder,\n ContainedComponentField,\n ContainedSimpleField,\n ContainedField\n} from '../../contained'\nimport {\n MessageDefinition,\n FixDefinitions,\n GroupFieldDefinition,\n ComponentFieldDefinition\n} from '../../definition'\n\nexport class ComponentsParser extends XsdParser {\n private readonly attributeGroups: Map<string, IAttributeGroup> = new Map<string, IAttributeGroup>()\n private readonly groups: Map<string, IGroup> = new Map<string, IGroup>()\n private readonly unboundElements: IElement[] = []\n private readonly complexTypes: Map<string, IComplexType> = new Map<string, IComplexType>()\n\n private newComplexTypes: IComplexType[]\n private currentGroup: (IGroup | null)\n private readonly currentAttributeGroupStack: IAttributeGroup[] = []\n private currentComplexType: (IComplexType | null)\n private previousComplexType: IComplexType\n\n public constructor (public readonly definitions: FixDefinitions) {\n super(definitions)\n }\n\n private static getName (group: (IGroup | undefined), attributeGroup: (IAttributeGroup | undefined), type: IComplexType): string {\n let name: string\n if (type?.appInfo) {\n name = type.appInfo.name\n } else if (group) {\n name = group.name\n } else if (attributeGroup) {\n name = attributeGroup.name\n } else {\n name = type.name\n }\n return name\n }\n\n public value (line: number, n: string, v: string): void {\n // do nothing\n switch (n) {\n case 'xs:documentation': {\n if (this.currentComplexType?.annotation) {\n this.currentComplexType.annotation.documentation = v\n }\n break\n }\n }\n this.pending = null\n }\n\n public close (line: number, node: string): void {\n switch (node) {\n case 'xs:complexType': {\n if (this.currentComplexType != null) {\n const complex: IComplexType = this.currentComplexType\n this.previousComplexType = complex\n this.complexTypes.set(complex.name, complex)\n this.newComplexTypes.push(complex)\n this.currentComplexType = null\n }\n break\n }\n\n case 'xs:group': {\n if (this.currentGroup) {\n this.groups.set(this.currentGroup.name, this.currentGroup)\n this.currentGroup = null\n }\n break\n }\n\n case 'xs:attributeGroup': {\n const attributeStack: IAttributeGroup[] = this.currentAttributeGroupStack\n if (attributeStack.length > 0) {\n const group: IAttributeGroup | undefined = attributeStack.pop()\n if (group?.name) {\n this.attributeGroups.set(group?.name, group)\n }\n }\n break\n }\n\n case 'xs:schema': {\n this.insertFields()\n break\n }\n }\n }\n\n public open (line: number, node: ISaxNode): void {\n switch (node.name) {\n case 'xs:schema': {\n this.newComplexTypes = []\n break\n }\n\n case 'xs:group': {\n this.xsGroup(node)\n break\n }\n\n case 'xs:attributeGroup': {\n this.xsAttributeGroup(node)\n break\n }\n\n case 'xs:element': {\n this.xsElement(node)\n break\n }\n\n case 'xs:appinfo': {\n if (this.currentComplexType) {\n this.currentComplexType.appInfo = {} as IAppInfo\n }\n break\n }\n\n case 'xs:attribute': {\n this.xsAttribute(node)\n break\n }\n\n case 'xs:complexType': {\n const unbound: IElement[] = this.unboundElements\n this.currentComplexType = {\n name: node.attributes.name || unbound[unbound.length - 1].name\n } as IComplexType\n break\n }\n\n case 'xs:extension': {\n const current: IComplexType | null = this.currentComplexType\n if (current && node.attributes.base) {\n current.extensionBase = node.attributes.base\n }\n break\n }\n\n case 'fm:Xref': {\n this.assign(node, this.currentComplexType?.appInfo)\n break\n }\n\n case 'xs:annotation': {\n if (this.currentComplexType) {\n this.currentComplexType.annotation = {} as IAnnotation\n }\n break\n }\n\n case 'xs:documentation': {\n if (this.currentComplexType) {\n this.pending = node.name\n }\n break\n }\n }\n }\n\n private xsAttribute (node: ISaxNode): void {\n const attribute: IAttribute = {} as IAttribute\n this.assign(node, attribute)\n const stack: IAttributeGroup[] = this.currentAttributeGroupStack\n if (stack.length > 0) {\n const peek: IAttributeGroup = stack[stack.length - 1]\n const groupAttributes: IAttribute[] = peek.attributes\n groupAttributes[groupAttributes.length] = attribute\n }\n }\n\n private xsGroup (node: ISaxNode): void {\n if (node.attributes.name) {\n this.currentGroup = {\n name: node.attributes.name,\n elements: [] as IElement[]\n }\n } else if (node.attributes.ref) {\n if (this.currentComplexType) {\n this.currentComplexType.group = node.attributes.ref\n } else if (this.currentGroup) {\n // this is part of a sequence for a group\n const elements = this.currentGroup.elements\n elements[elements.length] = {\n type: node.name,\n name: node.attributes.ref\n } as IElement\n }\n }\n }\n\n private xsAttributeGroup (node: ISaxNode): void {\n const attributeStack: IAttributeGroup[] = this.currentAttributeGroupStack\n if (node.attributes.name) {\n attributeStack.push({\n name: node.attributes.name,\n attributes: [] as IAttribute[]\n })\n } else if (node.attributes.ref) {\n if (this.currentComplexType) {\n this.currentComplexType.attributeGroup = node.attributes.ref\n } else if (attributeStack.length > 0) {\n const peek: IAttributeGroup = attributeStack[attributeStack.length - 1]\n peek.attributes[peek.attributes.length] = {\n type: node.name,\n name: node.attributes.ref\n } as IAttribute\n }\n }\n }\n\n private xsElement (node: ISaxNode): void {\n const element: IElement = {} as IElement\n this.assign(node, element)\n const currentComplex: IComplexType | null = this.currentComplexType\n const currentGroup: IGroup | null = this.currentGroup\n if (!currentGroup && currentComplex) {\n if (!currentComplex.element) {\n currentComplex.element = []\n }\n const elements: IElement[] = currentComplex.element\n elements[elements.length] = element\n } else if (currentGroup) {\n const elements: IElement[] = currentGroup.elements\n elements[elements.length] = element\n } else {\n if (element.substitutionGroup && this.previousComplexType) {\n this.previousComplexType.messageName = element.name\n } else {\n this.unboundElements.push(element)\n }\n }\n }\n\n private addElement (set: IContainedSet, element: IElement): void {\n const minOccurs: number = parseInt(element.minOccurs, 10)\n const isGroup: boolean = element.maxOccurs === 'unbounded'\n const isComponent: boolean = element.maxOccurs === '1' || !isGroup\n const key = element.type || element.ref || element.name\n const builder = new ContainedSetBuilder(set)\n const containedType: IComplexType | undefined = this.complexTypes.get(key)\n if (containedType) {\n if (isComponent) {\n const containedDefinition: ComponentFieldDefinition = this.getComponent(containedType)\n const containedField: ContainedComponentField =\n new ContainedComponentField(containedDefinition,\n set.fields.length,\n minOccurs > 0,\n element.name)\n builder.add(containedField)\n } else if (isGroup) {\n const containedDefinition: GroupFieldDefinition = this.getGroup(containedType)\n const containedField: ContainedGroupField =\n new ContainedGroupField(containedDefinition,\n set.fields.length,\n minOccurs > 0,\n element.name)\n builder.add(containedField)\n }\n } else {\n if (key !== 'Message') {\n throw new Error(`cannot resolve component ${key} contained in ${set.name}`)\n }\n }\n }\n\n private addElements (set: IContainedSet, elements: IElement[]): void {\n if (elements) {\n elements.forEach((element: IElement) => {\n switch (element.type) {\n case 'xs:group': {\n const groupElements: IGroup | undefined = this.groups.get(element.name)\n if (groupElements) {\n this.addElements(set, groupElements.elements)\n } else {\n throw new Error(`unable to get xs:group ${element.name}`)\n }\n }\n break\n\n default: {\n this.addElement(set, element)\n }\n }\n })\n }\n }\n\n private addSimpleAttribute (set: IContainedSet, attribute: IAttribute): void {\n let sf = this.definitions.getSimple(attribute.type)\n if (!sf) {\n sf = this.definitions.getSimple(attribute.name, set.category)\n }\n if (sf) {\n const contained: ContainedSimpleField = new ContainedSimpleField(sf,\n set.fields.length,\n attribute.use !== 'optional',\n true,\n attribute.name)\n const builder = new ContainedSetBuilder(set)\n builder.add(contained)\n } else if (set.name !== 'FixmlAttributes') {\n throw new Error(`unable to resolve simple attribute ${attribute.name}`)\n }\n }\n\n private addAttributes (set: IContainedSet, attributes: IAttribute[]): void {\n attributes.forEach((attribute: IAttribute) => {\n switch (attribute.type) {\n case 'xs:attributeGroup': {\n const attributeGroup: IAttributeGroup | undefined = this.attributeGroups.get(attribute.name)\n if (attributeGroup) {\n this.addAttributes(set, attributeGroup.attributes)\n } else {\n throw new Error(`unable to get xs:attributeGroup ${attribute.name}`)\n }\n break\n }\n\n default: {\n this.addSimpleAttribute(set, attribute)\n }\n }\n })\n }\n\n private getGroup (type: IComplexType): GroupFieldDefinition {\n const group: IGroup | undefined = this.groups.get(type.group)\n const attributeGroup: IAttributeGroup | undefined = this.attributeGroups.get(type.attributeGroup)\n const name: string = ComponentsParser.getName(group, attributeGroup, type)\n const category = type.appInfo != null ? type.appInfo.Category : null\n const groupDefinition: GroupFieldDefinition = new GroupFieldDefinition(name, name, category, null, null)\n this.populateSet(type, groupDefinition)\n return groupDefinition\n }\n\n private getComponent (type: IComplexType): ComponentFieldDefinition {\n const definitions: FixDefinitions = this.definitions\n const group: IGroup | undefined = this.groups.get(type.group)\n const attributeGroup: IAttributeGroup | undefined = this.attributeGroups.get(type.attributeGroup)\n let name: string = ComponentsParser.getName(group, attributeGroup, type)\n const cached: ComponentFieldDefinition | undefined = definitions.component.get(name)\n if (cached) {\n return cached\n }\n\n const category = type.appInfo != null ? type.appInfo.Category : null\n if (type.extensionBase) {\n const base: IComplexType | undefined = this.complexTypes.get(type.extensionBase)\n if (base) {\n name = base.appInfo.name\n }\n }\n const component: ComponentFieldDefinition = new ComponentFieldDefinition(name, name, category, null)\n this.populateSet(type, component)\n definitions.component.set(component.name, component)\n definitions.component.set(type.name, component)\n return component\n }\n\n private getMessage (type: IComplexType): MessageDefinition {\n const definitions: FixDefinitions = this.definitions\n const messages = definitions.message\n const name: string = type.appInfo.name\n const message: MessageDefinition = new MessageDefinition(name,\n type.messageName,\n type.appInfo.MsgID,\n type.appInfo.Category,\n type.annotation.documentation)\n const builder = new ContainedSetBuilder(message)\n const abstractMessage: ComponentFieldDefinition | undefined = definitions.component.get('Message')\n abstractMessage?.fields.forEach((f: ContainedField) => {\n builder.add(f)\n })\n this.populateSet(type, message)\n messages.set(message.name, message)\n if (type.messageName && type.messageName !== name) {\n messages.set(type.messageName, message)\n }\n\n return message\n }\n\n private getBaseAttributes (type: IComplexType): (IAttributeGroup | null) {\n const attributeGroups: Map<string, IAttributeGroup> = this.attributeGroups\n let baseGroup\n if (type.extensionBase) {\n const base: IComplexType | undefined = this.complexTypes.get(type.extensionBase)\n if (base) {\n baseGroup = attributeGroups.get(base.attributeGroup)\n }\n return baseGroup ?? null\n }\n return null\n }\n\n private populateSet (type: IComplexType, set: IContainedSet): void {\n const group: IGroup | undefined = this.groups.get(type.group)\n const elements: IElement[] = group ? group.elements : type.element\n const attributeGroups = this.attributeGroups\n const attributeGroup: IAttributeGroup | undefined = attributeGroups.get(type.attributeGroup)\n const baseGroup: IAttributeGroup | null = this.getBaseAttributes(type)\n // if a base is specified add the attributes from there\n if (baseGroup) {\n this.addAttributes(set, baseGroup.attributes)\n }\n if (attributeGroup) {\n this.addAttributes(set, attributeGroup.attributes)\n }\n this.addElements(set, elements)\n }\n\n private constructType (type: IComplexType): void {\n const componentType: string = type.appInfo != null ? type.appInfo.ComponentType : 'Block'\n switch (componentType) {\n case 'Message': {\n const message: MessageDefinition = this.getMessage(type)\n if (!message) {\n throw new Error(`cannot resolve ${type.name}`)\n }\n break\n }\n\n // these may be included from top level messages and added into definitions\n case 'Block': {\n const component: ComponentFieldDefinition = this.getComponent(type)\n if (!component) {\n throw new Error(`cannot resolve ${type.name}`)\n }\n break\n }\n\n case 'ImplicitBlock':\n case 'XMLDataBlock':\n case 'BlockRepeating':\n case 'ImplicitBlockRepeating': {\n break\n }\n\n default:\n throw new Error(`unknown type ${componentType}`)\n }\n }\n\n private insertFields (): void {\n this.newComplexTypes.forEach((type: IComplexType) => {\n this.constructType(type)\n })\n this.unboundElements.forEach((e: IElement) => {\n const definitions = this.definitions\n const component: ComponentFieldDefinition | undefined = definitions.component.get(e.type)\n if (component) {\n definitions.component.set(e.name, component)\n }\n })\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fields-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/fixml/fields-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { ILooseObject } from '../../../collections/collection'\nimport { SimpleFieldDefinition, FixDefinitions } from '../../definition'\nimport { XsdParser } from './xsd-parser'\nimport { ISaxNode } from '../../sax-node'\n\ninterface ISimpleField extends ILooseObject {\n restrictionBase: string\n documentation: string\n Protocol: string\n simpleTypeName: string\n name: string\n ComponentType: string\n Tag: string\n Type: string\n AbbrName: string\n Category: string\n CategoryAbbrName: string\n enums: Map<string, string>\n currentEnum: string\n}\n\ninterface IAlias {\n name: string\n mapped: string\n}\n\nexport class FieldsParser extends XsdParser {\n private readonly alias: IAlias[] = []\n public constructor (public readonly definitions: FixDefinitions) {\n super(definitions)\n }\n\n public value (line: number, n: string, v: string): void {\n const current: ISimpleField = this.current as ISimpleField\n switch (n) {\n case 'fm:EnumDoc': {\n current.enums.set(current.currentEnum, v)\n break\n }\n case 'xs:documentation': {\n this.current.documentation = v\n break\n }\n }\n }\n\n public close (line: number, node: string): void {\n const current: ISimpleField = this.current as ISimpleField\n switch (node) {\n case 'xs:simpleType': {\n this.data[this.data.length] = current\n break\n }\n\n case 'xs:schema': {\n this.insertFields()\n break\n }\n }\n }\n\n public open (line: number, node: ISaxNode): void {\n switch (node.name) {\n case 'xs:simpleType': {\n this.current = {\n simpleTypeName: node.attributes.name\n } as ISimpleField\n break\n }\n\n case 'fm:Xref': {\n this.assign(node)\n break\n }\n\n case 'xs:restriction': {\n this.current.restrictionBase = node.attributes.base\n break\n }\n\n case 'fm:EnumDoc': {\n if (!this.current.enums) {\n this.current.enums = new Map<string, string>()\n }\n this.current.currentEnum = node.attributes.value\n this.pending = node.name\n break\n }\n\n default:\n this.pending = node.name\n }\n }\n\n private insertFields (): void {\n const alias = this.alias;\n (this.data as ISimpleField[]).forEach((f: ISimpleField) => {\n const sf: SimpleFieldDefinition = new SimpleFieldDefinition(f.Tag,\n f.name,\n f.AbbrName,\n f.Category,\n f.CategoryAbbrName,\n f.Type,\n f.documentation)\n if (f.enums) {\n f.enums.forEach((k: string, v: string) => {\n sf.addEnum(k, v)\n })\n }\n if (f.name && f.Type && f.Tag) {\n this.definitions.addSimpleFieldDef(sf, f.simpleTypeName)\n } else if (f.restrictionBase && f.simpleTypeName) {\n let mapped = f.simpleTypeName\n if (mapped.endsWith('_t')) {\n mapped = mapped.replace(/_t$/, '')\n } else {\n mapped = f.restrictionBase\n }\n alias.push({\n name: f.simpleTypeName,\n mapped\n })\n }\n })\n alias.forEach((a: IAlias) => {\n this.definitions.addSimpleAlias(a.mapped, a.name)\n })\n }\n}\n"]}
1
+ {"version":3,"file":"fields-parser.js","sourceRoot":"","sources":["../../../../src/dictionary/parser/fixml/fields-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { ILooseObject } from '../../../collections/collection'\nimport { SimpleFieldDefinition, FixDefinitions } from '../../definition'\nimport { XsdParser } from './xsd-parser'\nimport { ISaxNode } from '../../sax-node'\n\ninterface ISimpleField extends ILooseObject {\n restrictionBase: string\n documentation: string\n Protocol: string\n simpleTypeName: string\n name: string\n ComponentType: string\n Tag: string\n Type: string\n AbbrName: string\n Category: string\n CategoryAbbrName: string\n enums: Map<string, string>\n currentEnum: string\n}\n\ninterface IAlias {\n name: string\n mapped: string\n}\n\nexport class FieldsParser extends XsdParser {\n private readonly alias: IAlias[] = []\n public constructor (public readonly definitions: FixDefinitions) {\n super(definitions)\n }\n\n public value (line: number, n: string, v: string): void {\n const current: ISimpleField = this.current as ISimpleField\n switch (n) {\n case 'fm:EnumDoc': {\n current.enums.set(current.currentEnum, v)\n break\n }\n case 'xs:documentation': {\n this.current.documentation = v\n break\n }\n }\n }\n\n public close (line: number, node: string): void {\n const current: ISimpleField = this.current as ISimpleField\n switch (node) {\n case 'xs:simpleType': {\n this.data[this.data.length] = current\n break\n }\n\n case 'xs:schema': {\n this.insertFields()\n break\n }\n }\n }\n\n public open (line: number, node: ISaxNode): void {\n switch (node.name) {\n case 'xs:simpleType': {\n this.current = {\n simpleTypeName: node.attributes.name\n }\n break\n }\n\n case 'fm:Xref': {\n this.assign(node)\n break\n }\n\n case 'xs:restriction': {\n this.current.restrictionBase = node.attributes.base\n break\n }\n\n case 'fm:EnumDoc': {\n if (!this.current.enums) {\n this.current.enums = new Map<string, string>()\n }\n this.current.currentEnum = node.attributes.value\n this.pending = node.name\n break\n }\n\n default:\n this.pending = node.name\n }\n }\n\n private insertFields (): void {\n const alias = this.alias;\n (this.data as ISimpleField[]).forEach((f: ISimpleField) => {\n const sf: SimpleFieldDefinition = new SimpleFieldDefinition(f.Tag,\n f.name,\n f.AbbrName,\n f.Category,\n f.CategoryAbbrName,\n f.Type,\n f.documentation)\n if (f.enums) {\n f.enums.forEach((k: string, v: string) => {\n sf.addEnum(k, v)\n })\n }\n if (f.name && f.Type && f.Tag) {\n this.definitions.addSimpleFieldDef(sf, f.simpleTypeName)\n } else if (f.restrictionBase && f.simpleTypeName) {\n let mapped = f.simpleTypeName\n if (mapped.endsWith('_t')) {\n mapped = mapped.replace(/_t$/, '')\n } else {\n mapped = f.restrictionBase\n }\n alias.push({\n name: f.simpleTypeName,\n mapped\n })\n }\n })\n alias.forEach((a: IAlias) => {\n this.definitions.addSimpleAlias(a.mapped, a.name)\n })\n }\n}\n"]}
@@ -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'\nimport { INumericKeyed } from '../../../collections/collection'\nimport * as path from 'path'\nimport * as fs from 'fs'\nimport { ISaxNode } from '../../sax-node'\n\nexport interface IInclude {\n parent: string\n children: string[]\n}\n\nexport interface IGraphNode {\n file: string\n node: number\n edges: number[]\n}\n\n/*\n construct a dependency graph from all the xsd files to compute an order to build the definition\n */\n\nexport class IncludeGraph {\n private nodes: Map<string, number>\n private includes: IInclude[]\n private graph: INumericKeyed<IGraphNode>\n constructor (public readonly root: string, public readonly main: string) {\n }\n\n public async build (): Promise<any> {\n this.includes = await this.getIncludes(this.main)\n this.assignNodes()\n this.getGraph()\n }\n\n public resolve (file: string): string[] | null {\n const label: number | undefined = this.nodes.get(file)\n if (label == null) {\n return null\n }\n const depends: number[] = []\n this.resolve_nodes(label, depends)\n return depends.map((i: number) => {\n return this.graph[i].file\n })\n }\n\n private resolve_nodes (label: number, depends: number[]): void {\n const node: IGraphNode = this.graph[label]\n if (node) {\n node.edges.forEach(e => {\n if (!depends.includes(e)) {\n this.resolve_nodes(e, depends)\n }\n })\n }\n depends.push(label)\n }\n\n private getGraph (): void {\n const nodes = this.nodes\n this.graph = this.includes.reduce<INumericKeyed<IGraphNode>>((a: INumericKeyed<IGraphNode>, current: IInclude) => {\n const parent: number | undefined = nodes.get(current.parent)\n if (parent == null) return a\n let parentNode = a[parent]\n if (!parentNode) {\n a[parent] = parentNode = {\n file: current.parent,\n node: parent,\n edges: []\n } as IGraphNode\n }\n current.children.forEach((s: string) => {\n const child: number | undefined = nodes.get(s)\n if (child) {\n if (!parentNode.edges.includes(child)) {\n parentNode.edges.push(child)\n }\n }\n })\n return a\n }, {})\n }\n\n private assignNodes (): void {\n let next: number = 0\n this.nodes = this.includes.reduce((a: Map<string, number>, current: IInclude) => {\n if (!a.has(current.parent)) {\n a.set(current.parent, next++)\n }\n current.children.forEach((c: string) => {\n if (!a.has(c)) {\n a.set(c, next++)\n }\n })\n return a\n }, new Map<string, number>())\n }\n\n private async scanIncludes (file: string): Promise<string[]> {\n return await new Promise<string[]>((resolve, reject) => {\n const includes: string[] = []\n const pass: fs.ReadStream = fs.createReadStream(path.join(this.root, file))\n const saxStream: SAXStream = require('sax').createStream(true, {})\n saxStream.on('opentag', (node) => {\n const saxNode: ISaxNode = node\n switch (saxNode.name) {\n case 'xs:include': {\n includes.push(saxNode.attributes.schemaLocation)\n break\n }\n }\n })\n saxStream.on('ready', () => {\n resolve(includes)\n })\n saxStream.on('error', (r) => {\n reject(r)\n })\n pass.pipe(saxStream)\n })\n }\n\n private async getIncludes (main: string): Promise<IInclude[]> {\n const q: any[] = []\n q.push([main])\n const ordered: IInclude[] = []\n const seen: Map<string, boolean> = new Map<string, boolean>()\n return await new Promise<IInclude[]>(async (resolve, reject) => {\n try {\n while (q.length > 0) {\n const batch: string[] = q.pop()\n for (const next of batch) {\n if (seen.has(next)) {\n continue\n }\n seen.set(next, true)\n const includes: string[] = await this.scanIncludes(next)\n ordered.push({\n parent: next,\n children: includes\n } as IInclude)\n q.push(includes)\n }\n }\n resolve(ordered)\n } catch (e) {\n reject(e)\n }\n })\n }\n}\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'\nimport { INumericKeyed } from '../../../collections/collection'\nimport * as path from 'path'\nimport * as fs from 'fs'\nimport { ISaxNode } from '../../sax-node'\n\nexport interface IInclude {\n parent: string\n children: string[]\n}\n\nexport interface IGraphNode {\n file: string\n node: number\n edges: number[]\n}\n\n/*\n construct a dependency graph from all the xsd files to compute an order to build the definition\n */\n\nexport class IncludeGraph {\n private nodes: Map<string, number>\n private includes: IInclude[]\n private graph: INumericKeyed<IGraphNode>\n constructor (public readonly root: string, public readonly main: string) {\n }\n\n public async build (): Promise<any> {\n this.includes = await this.getIncludes(this.main)\n this.assignNodes()\n this.getGraph()\n }\n\n public resolve (file: string): string[] | null {\n const label: number | undefined = this.nodes.get(file)\n if (label == null) {\n return null\n }\n const depends: number[] = []\n this.resolve_nodes(label, depends)\n return depends.map((i: number) => {\n return this.graph[i].file\n })\n }\n\n private resolve_nodes (label: number, depends: number[]): void {\n const node: IGraphNode = this.graph[label]\n if (node) {\n node.edges.forEach(e => {\n if (!depends.includes(e)) {\n this.resolve_nodes(e, depends)\n }\n })\n }\n depends.push(label)\n }\n\n private getGraph (): void {\n const nodes = this.nodes\n this.graph = this.includes.reduce<INumericKeyed<IGraphNode>>((a: INumericKeyed<IGraphNode>, current: IInclude) => {\n const parent: number | undefined = nodes.get(current.parent)\n if (parent == null) return a\n let parentNode = a[parent]\n if (!parentNode) {\n a[parent] = parentNode = {\n file: current.parent,\n node: parent,\n edges: []\n } as IGraphNode\n }\n current.children.forEach((s: string) => {\n const child: number | undefined = nodes.get(s)\n if (child) {\n if (!parentNode.edges.includes(child)) {\n parentNode.edges.push(child)\n }\n }\n })\n return a\n }, {})\n }\n\n private assignNodes (): void {\n let next: number = 0\n this.nodes = this.includes.reduce((a: Map<string, number>, current: IInclude) => {\n if (!a.has(current.parent)) {\n a.set(current.parent, next++)\n }\n current.children.forEach((c: string) => {\n if (!a.has(c)) {\n a.set(c, next++)\n }\n })\n return a\n }, new Map<string, number>())\n }\n\n private async scanIncludes (file: string): Promise<string[]> {\n return await new Promise<string[]>((resolve, reject) => {\n const includes: string[] = []\n const pass: fs.ReadStream = fs.createReadStream(path.join(this.root, file))\n const saxStream: SAXStream = require('sax').createStream(true, {})\n saxStream.on('opentag', (node) => {\n const saxNode: ISaxNode = node\n switch (saxNode.name) {\n case 'xs:include': {\n includes.push(saxNode.attributes.schemaLocation)\n break\n }\n }\n })\n saxStream.on('ready', () => {\n resolve(includes)\n })\n saxStream.on('error', (r) => {\n reject(r)\n })\n pass.pipe(saxStream)\n })\n }\n\n private async getIncludes (main: string): Promise<IInclude[]> {\n const q: any[] = []\n q.push([main])\n const ordered: IInclude[] = []\n const seen: Map<string, boolean> = new Map<string, boolean>()\n return await new Promise<IInclude[]>(async (resolve, reject) => {\n try {\n while (q.length > 0) {\n const batch: string[] = q.pop()\n for (const next of batch) {\n if (seen.has(next)) {\n continue\n }\n seen.set(next, true)\n const includes: string[] = await this.scanIncludes(next)\n ordered.push({\n parent: next,\n children: includes\n })\n q.push(includes)\n }\n }\n resolve(ordered)\n } catch (e) {\n reject(e)\n }\n })\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"jsfix-bench.js","sourceRoot":"","sources":["../src/jsfix-bench.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata'\n\nimport * as path from 'path'\nimport * as fs from 'fs'\nimport minimist = require('minimist')\nimport buildOptions from 'minimist-options'\n\nimport { AsciiChars } from './buffer/ascii'\nimport { IJsFixConfig } from './config'\nimport { DefinitionFactory } from './util'\nimport { SessionContainer } from './runtime'\nimport { DITokens } from './runtime/di-tokens'\nimport {\n BenchRunner,\n IBenchCase,\n IBenchOptions,\n IBenchSuiteResult,\n ParseCase,\n ParseDepth,\n defaultBenchOptions,\n formatComparison,\n formatSuite\n} from './benchmark'\n\nconst options = buildOptions({\n dict: {\n type: 'string',\n alias: 'd',\n default: 'qf44'\n },\n\n fix: {\n type: 'string',\n alias: 'f',\n default: 'data/examples/FIX.4.4/quickfix/execution-report/fix.txt'\n },\n\n session: {\n type: 'string',\n alias: 's',\n default: 'data/session/test-initiator.json'\n },\n\n delimiter: {\n type: 'string',\n alias: 'l',\n default: '|'\n },\n\n depth: {\n type: 'string',\n default: 'view,object'\n },\n\n rounds: {\n type: 'number',\n default: defaultBenchOptions.rounds\n },\n\n msgs: {\n type: 'number',\n default: defaultBenchOptions.operationsPerRound\n },\n\n warmup: {\n type: 'number',\n default: defaultBenchOptions.warmupOperations\n },\n\n label: {\n type: 'string',\n default: 'jspurefix'\n },\n\n save: {\n type: 'string'\n },\n\n baseline: {\n type: 'string'\n },\n\n json: {\n type: 'boolean',\n default: false\n },\n\n help: {\n type: 'boolean',\n alias: 'h',\n default: false\n }\n})\n\nconst argv: any = minimist(process.argv.slice(2), options)\n\nconst root: string = path.join(__dirname, '../')\n\nfunction norm (p: string): string {\n return path.isAbsolute(p) ? p : path.join(root, p)\n}\n\nfunction usage (): void {\n console.log('measure the parse path and what it costs in time and in garbage')\n console.log()\n console.log(' --fix=<path> fix log to parse, defaults to a 4.4 execution report')\n console.log(' --dict=<name> dictionary, e.g. qf44, repo44, qf50sp2')\n console.log(' --delimiter=<char> field delimiter in the log, defaults to |')\n console.log(' --depth=view,object which stages to measure, comma separated')\n console.log(' --rounds=<n> measured rounds, one sample each')\n console.log(' --msgs=<n> messages per round')\n console.log(' --warmup=<n> messages discarded before measuring')\n console.log(' --save=<path> write the suite to json')\n console.log(' --baseline=<path> compare against a previously saved suite')\n console.log(' --json print the suite as json instead of a report')\n console.log()\n console.log('run under --expose-gc so rounds can be isolated and heap read cleanly:')\n console.log(' node --expose-gc dist/jsfix-bench --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt')\n console.log(' npm run bench')\n}\n\nasync function makeConfig (): Promise<IJsFixConfig> {\n const sys = new SessionContainer()\n sys.registerGlobal('error')\n const sessionDescription = require(norm(argv.session))\n const container = await sys.makeSystem(sessionDescription)\n const config = container.resolve<IJsFixConfig>(DITokens.IJsFixConfig)\n config.definitions = await new DefinitionFactory().getDefinitions(argv.dict)\n // the parser reads the delimiter when it is constructed, so this has to be\n // settled before any case is built\n config.delimiter = AsciiChars.firstChar(argv.delimiter)\n return config\n}\n\nfunction requestedDepths (): ParseDepth[] {\n const known = new Map<string, ParseDepth>([\n ['view', ParseDepth.View],\n ['object', ParseDepth.Object]\n ])\n const asked = String(argv.depth).split(',').map(d => d.trim().toLowerCase()).filter(d => d.length > 0)\n return asked.map(d => {\n const depth = known.get(d)\n if (!depth) {\n throw new Error(`unknown depth ${d}, expected view or object`)\n }\n return depth\n })\n}\n\nfunction readSuite (p: string): IBenchSuiteResult {\n return JSON.parse(fs.readFileSync(norm(p), 'utf8'))\n}\n\nasync function main (): Promise<void> {\n if (argv.help) {\n usage()\n return\n }\n const fixPath = norm(argv.fix)\n if (!fs.existsSync(fixPath)) {\n throw new Error(`no such fix log ${fixPath}`)\n }\n const contents = fs.readFileSync(fixPath, 'utf8')\n const config = await makeConfig()\n\n const cases: ParseCase[] = requestedDepths().map(depth =>\n new ParseCase(`parse:${depth}`, { config, contents, depth }))\n\n // every case walks the same input, so one alignment covers the suite and all\n // of them stay directly comparable\n const perInvocation = cases[0].operationsPerInvocation\n const operationsPerRound = cases[0].alignOperations(argv.msgs)\n const benchOptions: IBenchOptions = {\n warmupOperations: cases[0].alignOperations(argv.warmup),\n rounds: argv.rounds,\n operationsPerRound,\n gcBetweenRounds: true\n }\n\n console.log(`${path.relative(root, fixPath)} ${perInvocation} msg/pass dict ${argv.dict}`)\n const suite = await new BenchRunner(benchOptions).runAll(argv.label, cases as IBenchCase[])\n\n if (argv.json) {\n console.log(JSON.stringify(suite, null, 2))\n } else {\n console.log()\n console.log(formatSuite(suite))\n }\n if (argv.baseline) {\n console.log()\n console.log(formatComparison(readSuite(argv.baseline), suite))\n }\n if (argv.save) {\n const target = norm(argv.save)\n fs.mkdirSync(path.dirname(target), { recursive: true })\n fs.writeFileSync(target, JSON.stringify(suite, null, 2), 'utf8')\n console.log(`saved ${path.relative(root, target)}`)\n }\n}\n\nmain().catch(e => {\n console.error(e instanceof Error ? e.message : e)\n process.exit(1)\n})\n"]}
1
+ {"version":3,"file":"jsfix-bench.js","sourceRoot":"","sources":["../src/jsfix-bench.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata'\n\nimport * as path from 'path'\nimport * as fs from 'fs'\nimport minimist = require('minimist')\nimport buildOptions from 'minimist-options'\n\nimport { AsciiChars } from './buffer/ascii'\nimport { IJsFixConfig } from './config'\nimport { DefinitionFactory } from './util'\nimport { SessionContainer } from './runtime'\nimport { DITokens } from './runtime/di-tokens'\nimport {\n BenchRunner,\n IBenchCase,\n IBenchOptions,\n IBenchSuiteResult,\n ParseCase,\n ParseDepth,\n defaultBenchOptions,\n formatComparison,\n formatSuite\n} from './benchmark'\n\nconst options = buildOptions({\n dict: {\n type: 'string',\n alias: 'd',\n default: 'qf44'\n },\n\n fix: {\n type: 'string',\n alias: 'f',\n default: 'data/examples/FIX.4.4/quickfix/execution-report/fix.txt'\n },\n\n session: {\n type: 'string',\n alias: 's',\n default: 'data/session/test-initiator.json'\n },\n\n delimiter: {\n type: 'string',\n alias: 'l',\n default: '|'\n },\n\n depth: {\n type: 'string',\n default: 'view,object'\n },\n\n rounds: {\n type: 'number',\n default: defaultBenchOptions.rounds\n },\n\n msgs: {\n type: 'number',\n default: defaultBenchOptions.operationsPerRound\n },\n\n warmup: {\n type: 'number',\n default: defaultBenchOptions.warmupOperations\n },\n\n label: {\n type: 'string',\n default: 'jspurefix'\n },\n\n save: {\n type: 'string'\n },\n\n baseline: {\n type: 'string'\n },\n\n json: {\n type: 'boolean',\n default: false\n },\n\n help: {\n type: 'boolean',\n alias: 'h',\n default: false\n }\n})\n\nconst argv: any = minimist(process.argv.slice(2), options)\n\nconst root: string = path.join(__dirname, '../')\n\nfunction norm (p: string): string {\n return path.isAbsolute(p) ? p : path.join(root, p)\n}\n\nfunction usage (): void {\n console.log('measure the parse path and what it costs in time and in garbage')\n console.log()\n console.log(' --fix=<path> fix log to parse, defaults to a 4.4 execution report')\n console.log(' --dict=<name> dictionary, e.g. qf44, repo44, qf50sp2')\n console.log(' --delimiter=<char> field delimiter in the log, defaults to |')\n console.log(' --depth=view,object which stages to measure, comma separated')\n console.log(' --rounds=<n> measured rounds, one sample each')\n console.log(' --msgs=<n> messages per round')\n console.log(' --warmup=<n> messages discarded before measuring')\n console.log(' --save=<path> write the suite to json')\n console.log(' --baseline=<path> compare against a previously saved suite')\n console.log(' --json print the suite as json instead of a report')\n console.log()\n console.log('run under --expose-gc so rounds can be isolated and heap read cleanly:')\n console.log(' node --expose-gc dist/jsfix-bench --fix=data/examples/FIX.4.4/quickfix/execution-report/fix.txt')\n console.log(' npm run bench')\n}\n\nasync function makeConfig (): Promise<IJsFixConfig> {\n const sys = new SessionContainer()\n sys.registerGlobal('error')\n const sessionDescription = require(norm(argv.session))\n const container = await sys.makeSystem(sessionDescription)\n const config = container.resolve<IJsFixConfig>(DITokens.IJsFixConfig)\n config.definitions = await new DefinitionFactory().getDefinitions(argv.dict)\n // the parser reads the delimiter when it is constructed, so this has to be\n // settled before any case is built\n config.delimiter = AsciiChars.firstChar(argv.delimiter)\n return config\n}\n\nfunction requestedDepths (): ParseDepth[] {\n const known = new Map<string, ParseDepth>([\n ['view', ParseDepth.View],\n ['object', ParseDepth.Object]\n ])\n const asked = String(argv.depth).split(',').map(d => d.trim().toLowerCase()).filter(d => d.length > 0)\n return asked.map(d => {\n const depth = known.get(d)\n if (!depth) {\n throw new Error(`unknown depth ${d}, expected view or object`)\n }\n return depth\n })\n}\n\nfunction readSuite (p: string): IBenchSuiteResult {\n return JSON.parse(fs.readFileSync(norm(p), 'utf8'))\n}\n\nasync function main (): Promise<void> {\n if (argv.help) {\n usage()\n return\n }\n const fixPath = norm(argv.fix)\n if (!fs.existsSync(fixPath)) {\n throw new Error(`no such fix log ${fixPath}`)\n }\n const contents = fs.readFileSync(fixPath, 'utf8')\n const config = await makeConfig()\n\n const cases: ParseCase[] = requestedDepths().map(depth =>\n new ParseCase(`parse:${depth}`, { config, contents, depth }))\n\n // every case walks the same input, so one alignment covers the suite and all\n // of them stay directly comparable\n const perInvocation = cases[0].operationsPerInvocation\n const operationsPerRound = cases[0].alignOperations(argv.msgs)\n const benchOptions: IBenchOptions = {\n warmupOperations: cases[0].alignOperations(argv.warmup),\n rounds: argv.rounds,\n operationsPerRound,\n gcBetweenRounds: true\n }\n\n console.log(`${path.relative(root, fixPath)} ${perInvocation} msg/pass dict ${argv.dict}`)\n const suite = await new BenchRunner(benchOptions).runAll(argv.label, cases)\n\n if (argv.json) {\n console.log(JSON.stringify(suite, null, 2))\n } else {\n console.log()\n console.log(formatSuite(suite))\n }\n if (argv.baseline) {\n console.log()\n console.log(formatComparison(readSuite(argv.baseline), suite))\n }\n if (argv.save) {\n const target = norm(argv.save)\n fs.mkdirSync(path.dirname(target), { recursive: true })\n fs.writeFileSync(target, JSON.stringify(suite, null, 2), 'utf8')\n console.log(`saved ${path.relative(root, target)}`)\n }\n}\n\nmain().catch(e => {\n console.error(e instanceof Error ? e.message : e)\n process.exit(1)\n})\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/http/oms/app.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4BAAyB;AAEzB,+CAA0C;AAC1C,+CAA0C;AAE1C,8CAA2E;AAI3E,2CAA4B;AAE5B,MAAM,WAAY,SAAQ,yBAAe;IACvC;QACE,KAAK,CACH,uCAAuC,EACvC,sCAAsC,CAAC,CAAA;IAC3C,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACxD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,WAAW;gBACvD,CAAC,CAAC,IAAI,wBAAU,CAAC,aAAa,CAAC;gBAC/B,CAAC,CAAC,IAAI,wBAAU,CAAC,aAAa,CAAC;SACjB,CAAA;IACpB,CAAC;IAEK,OAAO,CAAE,EAAU;;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;YACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;oBACf,OAAO,CAAC,IAAI,CAAC,CAAA;gBACf,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBACX,MAAM,CAAC,CAAC,CAAC,CAAA;gBACX,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;KAAA;IAEwB,YAAY,CAAE,gBAAqC;;;YAC1E,MAAM,MAAM,GAAiB,gBAAgB,CAAC,OAAO,CAAe,kBAAQ,CAAC,YAAY,CAAC,CAAA;YAC1F,MAAM,IAAI,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,0CAAE,WAAW,0CAAE,IAAI,CAAA;YACnD,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAe,kBAAQ,CAAC,YAAY,CAAC,CAAA;gBAC5E,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAY,kBAAQ,CAAC,SAAS,CAAC,CAAA;gBACzE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAS,EAAE;oBACxC,OAAO,SAAS,CAAC,KAAK,EAAE,CAAA;gBAC1B,CAAC,CAAA,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;KAAA;CACF;AAED,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAA;AAC3B,CAAC,CAAC,IAAI,EAAE,CAAA","sourcesContent":["import 'reflect-metadata'\n\nimport { HttpServer } from './http-server'\nimport { HttpClient } from './http-client'\nimport { IJsFixConfig } from '../../../config'\nimport { DITokens, EngineFactory, SessionLauncher } from '../../../runtime'\nimport { DependencyContainer } from 'tsyringe'\nimport { FixEntity } from '../../../transport'\nimport { IHttpAdapter } from '../../../transport/http/http-adapter'\nimport * as util from 'util'\n\nclass AppLauncher extends SessionLauncher {\n public constructor () {\n super(\n 'data/session/test-http-initiator.json',\n 'data/session/test-http-acceptor.json')\n }\n\n protected override makeFactory (config: IJsFixConfig): EngineFactory {\n const isInitiator = this.isInitiator(config.description)\n return {\n makeSession: (sessionConfig: IJsFixConfig) => isInitiator\n ? new HttpClient(sessionConfig)\n : new HttpServer(sessionConfig)\n } as EngineFactory\n }\n\n async waitFor (ms: number): Promise<any> {\n const to = util.promisify(setTimeout)\n return new Promise((resolve, reject) => {\n to(ms).then(() => {\n resolve(null)\n }).catch(e => {\n reject(e)\n })\n })\n }\n\n protected override async getInitiator (sessionContainer: DependencyContainer): Promise<any> {\n const config: IJsFixConfig = sessionContainer.resolve<IJsFixConfig>(DITokens.IJsFixConfig)\n const http = config?.description?.application?.http\n if (http) {\n http.adapter = sessionContainer.resolve<IHttpAdapter>(DITokens.IHttpAdapter)\n const initiator = sessionContainer.resolve<FixEntity>(DITokens.FixEntity)\n return this.waitFor(1000).then(async () => {\n return initiator.start()\n })\n }\n }\n}\n\nconst l = new AppLauncher()\nl.exec()\n"]}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/http/oms/app.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4BAAyB;AAEzB,+CAA0C;AAC1C,+CAA0C;AAE1C,8CAA2E;AAI3E,2CAA4B;AAE5B,MAAM,WAAY,SAAQ,yBAAe;IACvC;QACE,KAAK,CACH,uCAAuC,EACvC,sCAAsC,CAAC,CAAA;IAC3C,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACxD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,WAAW;gBACvD,CAAC,CAAC,IAAI,wBAAU,CAAC,aAAa,CAAC;gBAC/B,CAAC,CAAC,IAAI,wBAAU,CAAC,aAAa,CAAC;SAClC,CAAA;IACH,CAAC;IAEK,OAAO,CAAE,EAAU;;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;YACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;oBACf,OAAO,CAAC,IAAI,CAAC,CAAA;gBACf,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBACX,MAAM,CAAC,CAAC,CAAC,CAAA;gBACX,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;KAAA;IAEwB,YAAY,CAAE,gBAAqC;;;YAC1E,MAAM,MAAM,GAAiB,gBAAgB,CAAC,OAAO,CAAe,kBAAQ,CAAC,YAAY,CAAC,CAAA;YAC1F,MAAM,IAAI,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,0CAAE,WAAW,0CAAE,IAAI,CAAA;YACnD,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAe,kBAAQ,CAAC,YAAY,CAAC,CAAA;gBAC5E,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAY,kBAAQ,CAAC,SAAS,CAAC,CAAA;gBACzE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAS,EAAE;oBACxC,OAAO,SAAS,CAAC,KAAK,EAAE,CAAA;gBAC1B,CAAC,CAAA,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;KAAA;CACF;AAED,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAA;AAC3B,CAAC,CAAC,IAAI,EAAE,CAAA","sourcesContent":["import 'reflect-metadata'\n\nimport { HttpServer } from './http-server'\nimport { HttpClient } from './http-client'\nimport { IJsFixConfig } from '../../../config'\nimport { DITokens, EngineFactory, SessionLauncher } from '../../../runtime'\nimport { DependencyContainer } from 'tsyringe'\nimport { FixEntity } from '../../../transport'\nimport { IHttpAdapter } from '../../../transport/http/http-adapter'\nimport * as util from 'util'\n\nclass AppLauncher extends SessionLauncher {\n public constructor () {\n super(\n 'data/session/test-http-initiator.json',\n 'data/session/test-http-acceptor.json')\n }\n\n protected override makeFactory (config: IJsFixConfig): EngineFactory {\n const isInitiator = this.isInitiator(config.description)\n return {\n makeSession: (sessionConfig: IJsFixConfig) => isInitiator\n ? new HttpClient(sessionConfig)\n : new HttpServer(sessionConfig)\n }\n }\n\n async waitFor (ms: number): Promise<any> {\n const to = util.promisify(setTimeout)\n return new Promise((resolve, reject) => {\n to(ms).then(() => {\n resolve(null)\n }).catch(e => {\n reject(e)\n })\n })\n }\n\n protected override async getInitiator (sessionContainer: DependencyContainer): Promise<any> {\n const config: IJsFixConfig = sessionContainer.resolve<IJsFixConfig>(DITokens.IJsFixConfig)\n const http = config?.description?.application?.http\n if (http) {\n http.adapter = sessionContainer.resolve<IHttpAdapter>(DITokens.IHttpAdapter)\n const initiator = sessionContainer.resolve<FixEntity>(DITokens.FixEntity)\n return this.waitFor(1000).then(async () => {\n return initiator.start()\n })\n }\n }\n}\n\nconst l = new AppLauncher()\nl.exec()\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"oms-factory.js","sourceRoot":"","sources":["../../../../src/sample/http/oms/oms-factory.ts"],"names":[],"mappings":";;;AAAA,0DAWkC;AAElC,MAAa,UAAU;IAGrB,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAFpC,OAAE,GAAW,CAAC,CAAA;QACd,WAAM,GAAW,CAAC,CAAA;IAE1B,CAAC;IAEM,WAAW,CAAE,MAAc,EAAE,IAAU,EAAE,GAAW,EAAE,KAAa;QACxE,MAAM,EAAE,GAAW,IAAI,CAAC,EAAE,EAAE,CAAA;QAC5B,OAAO;YACL,OAAO,EAAE,MAAM,EAAE,EAAE;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,oBAAO,CAAC,KAAK;YACtB,YAAY,EAAE;gBACZ,QAAQ,EAAE,GAAG;aACG;YAClB,UAAU,EAAE;gBACV,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,WAAW;gBACvB,gBAAgB,EAAE,6BAAgB,CAAC,UAAU;aAC/B;YAChB,WAAW,EAAE,wBAAW,CAAC,iBAAiB;SACxB,CAAA;IACtB,CAAC;IAEM,SAAS,CAAE,KAAsB;;QACtC,MAAM,EAAE,GAAW,IAAI,CAAC,MAAM,EAAE,CAAA;QAChC,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,IAAI,IAAI,EAAE;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,KAAK,CAAC,KAAK;YACnB,QAAQ,EAAE,qBAAQ,CAAC,WAAW;YAC9B,SAAS,EAAE,sBAAS,CAAC,MAAM;YAC3B,MAAM,EAAE,OAAO,EAAE,EAAE;YACnB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,YAAY,EAAE;gBACZ,QAAQ,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,0CAAE,QAAQ;aACvB;YAClB,UAAU,EAAE;gBACV,MAAM,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,MAAM;gBACjC,UAAU,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,UAAU;gBACzC,gBAAgB,EAAE,6BAAgB,CAAC,UAAU;aAC/B;SACG,CAAA;IACvB,CAAC;CACF;AAlDD,gCAkDC","sourcesContent":["import {\n INewOrderSingle,\n ExecType,\n OrdStatus,\n OrdType,\n SecurityIDSource,\n Side,\n TimeInForce,\n IOrderQtyData,\n IInstrument,\n IExecutionReport\n} from '../../../types/FIXML50SP2'\n\nexport class OmsFactory {\n private id: number = 1\n private execId: number = 1\n constructor (public readonly account: string) {\n }\n\n public createOrder (symbol: string, side: Side, qty: number, price: number): INewOrderSingle {\n const id: number = this.id++\n return {\n ClOrdID: `Cli${id}`,\n Account: this.account,\n Side: side,\n Price: price,\n OrdType: OrdType.Limit,\n OrderQtyData: {\n OrderQty: qty\n } as IOrderQtyData,\n Instrument: {\n Symbol: symbol,\n SecurityID: '459200101',\n SecurityIDSource: SecurityIDSource.IsinNumber\n } as IInstrument,\n TimeInForce: TimeInForce.GoodTillCancelGtc\n } as INewOrderSingle\n }\n\n public fillOrder (order: INewOrderSingle): IExecutionReport {\n const id: number = this.execId++\n return {\n ClOrdID: order.ClOrdID,\n OrdType: order.OrdType,\n TransactTime: new Date(),\n AvgPx: order.Price,\n LeavesQty: 0,\n LastPx: order.Price,\n ExecType: ExecType.OrderStatus,\n OrdStatus: OrdStatus.Filled,\n ExecID: `exec${id}`,\n Side: order.Side,\n Price: order.Price,\n OrderQtyData: {\n OrderQty: order?.OrderQtyData?.OrderQty\n } as IOrderQtyData,\n Instrument: {\n Symbol: order?.Instrument?.Symbol,\n SecurityID: order?.Instrument?.SecurityID,\n SecurityIDSource: SecurityIDSource.IsinNumber\n } as IInstrument\n } as IExecutionReport\n }\n}\n"]}
1
+ {"version":3,"file":"oms-factory.js","sourceRoot":"","sources":["../../../../src/sample/http/oms/oms-factory.ts"],"names":[],"mappings":";;;AAAA,0DAWkC;AAElC,MAAa,UAAU;IAGrB,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAFpC,OAAE,GAAW,CAAC,CAAA;QACd,WAAM,GAAW,CAAC,CAAA;IAE1B,CAAC;IAEM,WAAW,CAAE,MAAc,EAAE,IAAU,EAAE,GAAW,EAAE,KAAa;QACxE,MAAM,EAAE,GAAW,IAAI,CAAC,EAAE,EAAE,CAAA;QAC5B,OAAO;YACL,OAAO,EAAE,MAAM,EAAE,EAAE;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,oBAAO,CAAC,KAAK;YACtB,YAAY,EAAE;gBACZ,QAAQ,EAAE,GAAG;aACd;YACD,UAAU,EAAE;gBACV,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,WAAW;gBACvB,gBAAgB,EAAE,6BAAgB,CAAC,UAAU;aAC9C;YACD,WAAW,EAAE,wBAAW,CAAC,iBAAiB;SACxB,CAAA;IACtB,CAAC;IAEM,SAAS,CAAE,KAAsB;;QACtC,MAAM,EAAE,GAAW,IAAI,CAAC,MAAM,EAAE,CAAA;QAChC,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,IAAI,IAAI,EAAE;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,KAAK,CAAC,KAAK;YACnB,QAAQ,EAAE,qBAAQ,CAAC,WAAW;YAC9B,SAAS,EAAE,sBAAS,CAAC,MAAM;YAC3B,MAAM,EAAE,OAAO,EAAE,EAAE;YACnB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,YAAY,EAAE;gBACZ,QAAQ,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,0CAAE,QAAQ;aACxC;YACD,UAAU,EAAE;gBACV,MAAM,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,MAAM;gBACjC,UAAU,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,UAAU;gBACzC,gBAAgB,EAAE,6BAAgB,CAAC,UAAU;aAC9C;SACkB,CAAA;IACvB,CAAC;CACF;AAlDD,gCAkDC","sourcesContent":["import {\n INewOrderSingle,\n ExecType,\n OrdStatus,\n OrdType,\n SecurityIDSource,\n Side,\n TimeInForce,\n IOrderQtyData,\n IInstrument,\n IExecutionReport\n} from '../../../types/FIXML50SP2'\n\nexport class OmsFactory {\n private id: number = 1\n private execId: number = 1\n constructor (public readonly account: string) {\n }\n\n public createOrder (symbol: string, side: Side, qty: number, price: number): INewOrderSingle {\n const id: number = this.id++\n return {\n ClOrdID: `Cli${id}`,\n Account: this.account,\n Side: side,\n Price: price,\n OrdType: OrdType.Limit,\n OrderQtyData: {\n OrderQty: qty\n },\n Instrument: {\n Symbol: symbol,\n SecurityID: '459200101',\n SecurityIDSource: SecurityIDSource.IsinNumber\n },\n TimeInForce: TimeInForce.GoodTillCancelGtc\n } as INewOrderSingle\n }\n\n public fillOrder (order: INewOrderSingle): IExecutionReport {\n const id: number = this.execId++\n return {\n ClOrdID: order.ClOrdID,\n OrdType: order.OrdType,\n TransactTime: new Date(),\n AvgPx: order.Price,\n LeavesQty: 0,\n LastPx: order.Price,\n ExecType: ExecType.OrderStatus,\n OrdStatus: OrdStatus.Filled,\n ExecID: `exec${id}`,\n Side: order.Side,\n Price: order.Price,\n OrderQtyData: {\n OrderQty: order?.OrderQtyData?.OrderQty\n },\n Instrument: {\n Symbol: order?.Instrument?.Symbol,\n SecurityID: order?.Instrument?.SecurityID,\n SecurityIDSource: SecurityIDSource.IsinNumber\n }\n } as IExecutionReport\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/tcp/qf-md/app.ts"],"names":[],"mappings":";;AAAA,4BAAyB;AAEzB,2CAAsC;AACtC,2CAAsC;AAEtC,8CAAiE;AAEjE,MAAM,WAAY,SAAQ,yBAAe;IACvC;QACE,KAAK,CACH,uCAAuC,EACvC,sCAAsC,CAAC,CAAA;IAC3C,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACxD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,WAAW;gBACvD,CAAC,CAAC,IAAI,oBAAQ,CAAC,aAAa,CAAC;gBAC7B,CAAC,CAAC,IAAI,oBAAQ,CAAC,aAAa,CAAC;SACf,CAAA;IACpB,CAAC;CACF;AAED,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAA;AAC3B,CAAC,CAAC,IAAI,EAAE,CAAA","sourcesContent":["import 'reflect-metadata'\n\nimport { MDClient } from './md-client'\nimport { MDServer } from './md-server'\nimport { IJsFixConfig } from '../../../config'\nimport { EngineFactory, SessionLauncher } from '../../../runtime'\n\nclass AppLauncher extends SessionLauncher {\n public constructor () {\n super(\n 'data/session/test-qf44-initiator.json',\n 'data/session/test-qf44-acceptor.json')\n }\n\n protected override makeFactory (config: IJsFixConfig): EngineFactory {\n const isInitiator = this.isInitiator(config.description)\n return {\n makeSession: (sessionConfig: IJsFixConfig) => isInitiator\n ? new MDClient(sessionConfig)\n : new MDServer(sessionConfig)\n } as EngineFactory\n }\n}\n\nconst l = new AppLauncher()\nl.exec()\n"]}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/tcp/qf-md/app.ts"],"names":[],"mappings":";;AAAA,4BAAyB;AAEzB,2CAAsC;AACtC,2CAAsC;AAEtC,8CAAiE;AAEjE,MAAM,WAAY,SAAQ,yBAAe;IACvC;QACE,KAAK,CACH,uCAAuC,EACvC,sCAAsC,CAAC,CAAA;IAC3C,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACxD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,WAAW;gBACvD,CAAC,CAAC,IAAI,oBAAQ,CAAC,aAAa,CAAC;gBAC7B,CAAC,CAAC,IAAI,oBAAQ,CAAC,aAAa,CAAC;SAChC,CAAA;IACH,CAAC;CACF;AAED,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAA;AAC3B,CAAC,CAAC,IAAI,EAAE,CAAA","sourcesContent":["import 'reflect-metadata'\n\nimport { MDClient } from './md-client'\nimport { MDServer } from './md-server'\nimport { IJsFixConfig } from '../../../config'\nimport { EngineFactory, SessionLauncher } from '../../../runtime'\n\nclass AppLauncher extends SessionLauncher {\n public constructor () {\n super(\n 'data/session/test-qf44-initiator.json',\n 'data/session/test-qf44-acceptor.json')\n }\n\n protected override makeFactory (config: IJsFixConfig): EngineFactory {\n const isInitiator = this.isInitiator(config.description)\n return {\n makeSession: (sessionConfig: IJsFixConfig) => isInitiator\n ? new MDClient(sessionConfig)\n : new MDServer(sessionConfig)\n }\n }\n}\n\nconst l = new AppLauncher()\nl.exec()\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/tcp/skeleton/app.ts"],"names":[],"mappings":";;AAAA,4BAAyB;AAEzB,8CAAiE;AACjE,yDAAoD;AAGpD,MAAM,WAAY,SAAQ,yBAAe;IACvC;QACE,KAAK,CACH,kCAAkC,EAClC,iCAAiC,CAAC,CAAA;IACtC,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,IAAI,kCAAe,CAAC,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC;SAC3E,CAAA;IACpB,CAAC;CACF;AAED,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAA;AAC3B,CAAC,CAAC,IAAI,EAAE,CAAA","sourcesContent":["import 'reflect-metadata'\n\nimport { SessionLauncher, EngineFactory } from '../../../runtime'\nimport { SkeletonSession } from './skeleton-session'\nimport { IJsFixConfig } from '../../../config'\n\nclass AppLauncher extends SessionLauncher {\n public constructor () {\n super(\n 'data/session/test-initiator.json',\n 'data/session/test-acceptor.json')\n }\n\n protected override makeFactory (config: IJsFixConfig): EngineFactory {\n return {\n makeSession: (sessionConfig: IJsFixConfig) => new SkeletonSession(sessionConfig, 45, false)\n } as EngineFactory\n }\n}\n\nconst l = new AppLauncher()\nl.exec()\n"]}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/sample/tcp/skeleton/app.ts"],"names":[],"mappings":";;AAAA,4BAAyB;AAEzB,8CAAiE;AACjE,yDAAoD;AAGpD,MAAM,WAAY,SAAQ,yBAAe;IACvC;QACE,KAAK,CACH,kCAAkC,EAClC,iCAAiC,CAAC,CAAA;IACtC,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,IAAI,kCAAe,CAAC,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC;SAC5F,CAAA;IACH,CAAC;CACF;AAED,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAA;AAC3B,CAAC,CAAC,IAAI,EAAE,CAAA","sourcesContent":["import 'reflect-metadata'\n\nimport { SessionLauncher, EngineFactory } from '../../../runtime'\nimport { SkeletonSession } from './skeleton-session'\nimport { IJsFixConfig } from '../../../config'\n\nclass AppLauncher extends SessionLauncher {\n public constructor () {\n super(\n 'data/session/test-initiator.json',\n 'data/session/test-acceptor.json')\n }\n\n protected override makeFactory (config: IJsFixConfig): EngineFactory {\n return {\n makeSession: (sessionConfig: IJsFixConfig) => new SkeletonSession(sessionConfig, 45, false)\n }\n }\n}\n\nconst l = new AppLauncher()\nl.exec()\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"app-launcher.js","sourceRoot":"","sources":["../../../../src/sample/tcp/trade-capture/app-launcher.ts"],"names":[],"mappings":";;;AAAA,8CAAiE;AAEjE,iEAA2D;AAC3D,iEAA2D;AAE3D,MAAa,WAAY,SAAQ,yBAAe;IAC9C,YAAoB,SAAiB,kCAAkC,EACrE,SAAiB,iCAAiC;QAClD,KAAK,CACH,MAAM,EACN,MAAM,CAAC,CAAA;IACX,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACxD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,WAAW;gBACvD,CAAC,CAAC,IAAI,yCAAkB,CAAC,aAAa,CAAC;gBACvC,CAAC,CAAC,IAAI,yCAAkB,CAAC,aAAa,CAAC;SACzB,CAAA;IACpB,CAAC;CACF;AAhBD,kCAgBC","sourcesContent":["import { EngineFactory, SessionLauncher } from '../../../runtime'\nimport { IJsFixConfig } from '../../../config'\nimport { TradeCaptureClient } from './trade-capture-client'\nimport { TradeCaptureServer } from './trade-capture-server'\n\nexport class AppLauncher extends SessionLauncher {\n public constructor (client: string = 'data/session/test-initiator.json',\n server: string = 'data/session/test-acceptor.json') {\n super(\n client,\n server)\n }\n\n protected override makeFactory (config: IJsFixConfig): EngineFactory {\n const isInitiator = this.isInitiator(config.description)\n return {\n makeSession: (sessionConfig: IJsFixConfig) => isInitiator\n ? new TradeCaptureClient(sessionConfig)\n : new TradeCaptureServer(sessionConfig)\n } as EngineFactory\n }\n}\n"]}
1
+ {"version":3,"file":"app-launcher.js","sourceRoot":"","sources":["../../../../src/sample/tcp/trade-capture/app-launcher.ts"],"names":[],"mappings":";;;AAAA,8CAAiE;AAEjE,iEAA2D;AAC3D,iEAA2D;AAE3D,MAAa,WAAY,SAAQ,yBAAe;IAC9C,YAAoB,SAAiB,kCAAkC,EACrE,SAAiB,iCAAiC;QAClD,KAAK,CACH,MAAM,EACN,MAAM,CAAC,CAAA;IACX,CAAC;IAEkB,WAAW,CAAE,MAAoB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACxD,OAAO;YACL,WAAW,EAAE,CAAC,aAA2B,EAAE,EAAE,CAAC,WAAW;gBACvD,CAAC,CAAC,IAAI,yCAAkB,CAAC,aAAa,CAAC;gBACvC,CAAC,CAAC,IAAI,yCAAkB,CAAC,aAAa,CAAC;SAC1C,CAAA;IACH,CAAC;CACF;AAhBD,kCAgBC","sourcesContent":["import { EngineFactory, SessionLauncher } from '../../../runtime'\nimport { IJsFixConfig } from '../../../config'\nimport { TradeCaptureClient } from './trade-capture-client'\nimport { TradeCaptureServer } from './trade-capture-server'\n\nexport class AppLauncher extends SessionLauncher {\n public constructor (client: string = 'data/session/test-initiator.json',\n server: string = 'data/session/test-acceptor.json') {\n super(\n client,\n server)\n }\n\n protected override makeFactory (config: IJsFixConfig): EngineFactory {\n const isInitiator = this.isInitiator(config.description)\n return {\n makeSession: (sessionConfig: IJsFixConfig) => isInitiator\n ? new TradeCaptureClient(sessionConfig)\n : new TradeCaptureServer(sessionConfig)\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fix-msg-memory-store.js","sourceRoot":"","sources":["../../src/store/fix-msg-memory-store.ts"],"names":[],"mappings":"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","sourcesContent":["import { IFixMsgStore } from './fix-msg-store'\nimport { IJsFixConfig, IJsFixLogger } from '../config'\nimport { IFixMsgStoreRecord } from './fix-msg-store-record'\nimport { MsgType } from '../types'\nimport { IFixMsgStoreState } from './fix-msg-store-state'\n\nexport class FixMsgMemoryStore implements IFixMsgStore {\n protected readonly logger: IJsFixLogger\n public heartbeat: boolean = true\n private sortedBySeqNum: IFixMsgStoreRecord[] = []\n private readonly excluded: Map<string, boolean> = new Map<string, boolean>()\n public length: number = 0\n private readonly sessionMessages: string[] = [\n MsgType.Logon,\n MsgType.Logout,\n MsgType.ResendRequest,\n MsgType.Heartbeat,\n MsgType.TestRequest,\n MsgType.SequenceReset\n ]\n\n public constructor (public readonly id: string, public readonly config: IJsFixConfig) {\n this.logger = config.logFactory.logger(`${this.id}:FixMsgMemoryStore`)\n this.setExcMsgType([])\n }\n\n public static search (ar: IFixMsgStoreRecord[], target: number, isDate?: boolean): number {\n let m: number = 0\n let n: number = ar.length - 1\n while (m <= n) {\n const k: number = (n + m) >> 1\n const check: number = isDate ? ar[k].timestamp.getDate() : ar[k].seqNum\n const cmp: number = target - check\n if (cmp > 0) {\n m = k + 1\n } else if (cmp < 0) {\n n = k - 1\n } else {\n return k\n }\n }\n return -m - 1\n }\n\n public async getMsgType (msgType: string): Promise<IFixMsgStoreRecord[]> {\n return await new Promise((resolve, reject: any) => {\n const data = this.sortedBySeqNum\n if (data === null) reject(new Error('no store'))\n const required = data.filter(x => x.msgType === msgType)\n resolve(required)\n })\n }\n\n private getIndex (seq: number): number {\n const arr = this.sortedBySeqNum\n let index = FixMsgMemoryStore.search(arr, seq)\n if (index < 0) {\n index = -(index + 1)\n }\n return index\n }\n\n private bounded (fromIdx: number, toIdx: number): boolean {\n const arr = this.sortedBySeqNum\n return fromIdx >= 0 && fromIdx <= arr.length && toIdx >= fromIdx && toIdx <= arr.length\n }\n\n public async get (from: number): Promise<IFixMsgStoreRecord> {\n return await new Promise((resolve, reject) => {\n this.getSeqNumRange(from, from).then(res => {\n if (res.length > 0) {\n const record = res[0].clone()\n resolve(record)\n } else {\n reject(new Error(`${from} not in store`))\n }\n }).catch(e => {\n reject(e)\n })\n })\n }\n\n public async getSeqNumRange (from: number, to?: number): Promise<IFixMsgStoreRecord[]> {\n return await new Promise((resolve, reject) => {\n to = to ?? 0\n const arr = this.sortedBySeqNum\n if (from < 0) reject(new Error(`illegal from ${from}`))\n if (to < 0) reject(new Error(`illegal to ${to}`))\n const fromIdx = this.getIndex(from)\n const toEnd = to === 0 || isNaN(to)\n const toIdx = toEnd ? arr.length - 1 : this.getIndex(to)\n if (this.bounded(fromIdx, toIdx)) {\n resolve(arr.slice(fromIdx, toIdx + 1))\n } else {\n reject(new Error(`incorrect bounds from=${from}, fromIdx=${fromIdx}, to=${to}, toIdx=${toIdx}, length=${arr.length}`))\n }\n })\n }\n\n private buildState (): IFixMsgStoreState {\n const arr = this.sortedBySeqNum\n return {\n firstSeq: arr.length > 0 ? arr[0].seqNum : 0,\n lastSeq: arr.length > 0 ? arr[arr.length - 1].seqNum : 0,\n id: this.id,\n length: arr.length\n } as IFixMsgStoreState\n }\n\n public async getState (): Promise<IFixMsgStoreState> {\n return await new Promise((resolve, reject) => {\n try {\n resolve(this.buildState())\n } catch (e) {\n reject(e)\n }\n })\n }\n\n public async clear (): Promise<IFixMsgStoreState> {\n this.sortedBySeqNum = []\n return await new Promise((resolve, reject) => {\n try {\n resolve(this.buildState())\n } catch (e) {\n reject(e)\n }\n })\n }\n\n public async put (record: IFixMsgStoreRecord): Promise<IFixMsgStoreState> {\n return await new Promise((resolve, reject) => {\n if (this.excluded.has(record.msgType)) {\n resolve(this.buildState())\n } else {\n const arr = this.sortedBySeqNum\n const idx = FixMsgMemoryStore.search(arr, record.seqNum)\n if (idx >= 0) { // seen this before\n reject(new Error(`this seqNum ${record.seqNum} already in store`))\n }\n arr.splice(-idx, 0, record)\n this.length = arr.length\n resolve(this.buildState())\n }\n })\n }\n\n public setExcMsgType (exclude: string[]): void {\n this.excluded.clear()\n this.excludeRange(this.sessionMessages)\n this.excludeRange(exclude)\n }\n\n private excludeRange (exclude: string[]): void {\n exclude.forEach(s => {\n this.excluded.set(s, true)\n })\n }\n\n async exists (seqNum: number): Promise<boolean> {\n return await new Promise((resolve, reject) => {\n try {\n const arr = this.sortedBySeqNum\n const index = FixMsgMemoryStore.search(arr, seqNum)\n resolve(index >= 0)\n } catch (e) {\n reject(e)\n }\n })\n }\n}\n"]}
1
+ {"version":3,"file":"fix-msg-memory-store.js","sourceRoot":"","sources":["../../src/store/fix-msg-memory-store.ts"],"names":[],"mappings":"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","sourcesContent":["import { IFixMsgStore } from './fix-msg-store'\nimport { IJsFixConfig, IJsFixLogger } from '../config'\nimport { IFixMsgStoreRecord } from './fix-msg-store-record'\nimport { MsgType } from '../types'\nimport { IFixMsgStoreState } from './fix-msg-store-state'\n\nexport class FixMsgMemoryStore implements IFixMsgStore {\n protected readonly logger: IJsFixLogger\n public heartbeat: boolean = true\n private sortedBySeqNum: IFixMsgStoreRecord[] = []\n private readonly excluded: Map<string, boolean> = new Map<string, boolean>()\n public length: number = 0\n private readonly sessionMessages: string[] = [\n MsgType.Logon,\n MsgType.Logout,\n MsgType.ResendRequest,\n MsgType.Heartbeat,\n MsgType.TestRequest,\n MsgType.SequenceReset\n ]\n\n public constructor (public readonly id: string, public readonly config: IJsFixConfig) {\n this.logger = config.logFactory.logger(`${this.id}:FixMsgMemoryStore`)\n this.setExcMsgType([])\n }\n\n public static search (ar: IFixMsgStoreRecord[], target: number, isDate?: boolean): number {\n let m: number = 0\n let n: number = ar.length - 1\n while (m <= n) {\n const k: number = (n + m) >> 1\n const check: number = isDate ? ar[k].timestamp.getDate() : ar[k].seqNum\n const cmp: number = target - check\n if (cmp > 0) {\n m = k + 1\n } else if (cmp < 0) {\n n = k - 1\n } else {\n return k\n }\n }\n return -m - 1\n }\n\n public async getMsgType (msgType: string): Promise<IFixMsgStoreRecord[]> {\n return await new Promise((resolve, reject: any) => {\n const data = this.sortedBySeqNum\n if (data === null) reject(new Error('no store'))\n const required = data.filter(x => x.msgType === msgType)\n resolve(required)\n })\n }\n\n private getIndex (seq: number): number {\n const arr = this.sortedBySeqNum\n let index = FixMsgMemoryStore.search(arr, seq)\n if (index < 0) {\n index = -(index + 1)\n }\n return index\n }\n\n private bounded (fromIdx: number, toIdx: number): boolean {\n const arr = this.sortedBySeqNum\n return fromIdx >= 0 && fromIdx <= arr.length && toIdx >= fromIdx && toIdx <= arr.length\n }\n\n public async get (from: number): Promise<IFixMsgStoreRecord> {\n return await new Promise((resolve, reject) => {\n this.getSeqNumRange(from, from).then(res => {\n if (res.length > 0) {\n const record = res[0].clone()\n resolve(record)\n } else {\n reject(new Error(`${from} not in store`))\n }\n }).catch(e => {\n reject(e)\n })\n })\n }\n\n public async getSeqNumRange (from: number, to?: number): Promise<IFixMsgStoreRecord[]> {\n return await new Promise((resolve, reject) => {\n to = to ?? 0\n const arr = this.sortedBySeqNum\n if (from < 0) reject(new Error(`illegal from ${from}`))\n if (to < 0) reject(new Error(`illegal to ${to}`))\n const fromIdx = this.getIndex(from)\n const toEnd = to === 0 || isNaN(to)\n const toIdx = toEnd ? arr.length - 1 : this.getIndex(to)\n if (this.bounded(fromIdx, toIdx)) {\n resolve(arr.slice(fromIdx, toIdx + 1))\n } else {\n reject(new Error(`incorrect bounds from=${from}, fromIdx=${fromIdx}, to=${to}, toIdx=${toIdx}, length=${arr.length}`))\n }\n })\n }\n\n private buildState (): IFixMsgStoreState {\n const arr = this.sortedBySeqNum\n return {\n firstSeq: arr.length > 0 ? arr[0].seqNum : 0,\n lastSeq: arr.length > 0 ? arr[arr.length - 1].seqNum : 0,\n id: this.id,\n length: arr.length\n }\n }\n\n public async getState (): Promise<IFixMsgStoreState> {\n return await new Promise((resolve, reject) => {\n try {\n resolve(this.buildState())\n } catch (e) {\n reject(e)\n }\n })\n }\n\n public async clear (): Promise<IFixMsgStoreState> {\n this.sortedBySeqNum = []\n return await new Promise((resolve, reject) => {\n try {\n resolve(this.buildState())\n } catch (e) {\n reject(e)\n }\n })\n }\n\n public async put (record: IFixMsgStoreRecord): Promise<IFixMsgStoreState> {\n return await new Promise((resolve, reject) => {\n if (this.excluded.has(record.msgType)) {\n resolve(this.buildState())\n } else {\n const arr = this.sortedBySeqNum\n const idx = FixMsgMemoryStore.search(arr, record.seqNum)\n if (idx >= 0) { // seen this before\n reject(new Error(`this seqNum ${record.seqNum} already in store`))\n }\n arr.splice(-idx, 0, record)\n this.length = arr.length\n resolve(this.buildState())\n }\n })\n }\n\n public setExcMsgType (exclude: string[]): void {\n this.excluded.clear()\n this.excludeRange(this.sessionMessages)\n this.excludeRange(exclude)\n }\n\n private excludeRange (exclude: string[]): void {\n exclude.forEach(s => {\n this.excluded.set(s, true)\n })\n }\n\n async exists (seqNum: number): Promise<boolean> {\n return await new Promise((resolve, reject) => {\n try {\n const arr = this.sortedBySeqNum\n const index = FixMsgMemoryStore.search(arr, seqNum)\n resolve(index >= 0)\n } catch (e) {\n reject(e)\n }\n })\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fixml-session-msg-factory.js","sourceRoot":"","sources":["../../../src/transport/fixml/fixml-session-msg-factory.ts"],"names":[],"mappings":";;;AAEA,uCAAqC;AACrC,4EAAoF;AAEpF,uDAM+B;AAE/B,MAAa,sBAAuB,SAAQ,0CAAkB;IAC5D,YAAsB,WAAgC,EAAE,UAAgC,IAAI;QAC1F,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QADP,gBAAW,GAAX,WAAW,CAAqB;IAEtD,CAAC;IAEM,KAAK,CAAE,gBAAwB,EAAE,EAAE,aAAsB,KAAK;QACnE,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;IACnD,CAAC;IAEM,MAAM,CAAE,OAAe,EAAE,IAAY;QAC1C,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAA;IACzD,CAAC;IAEM,MAAM,CAAE,OAAe,EAAE,SAAiB,CAAC,EAAE,OAAa,IAAI,IAAI,EAAE,EAAE,YAAuC;QAClH,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QACpC,MAAM,CAAC,GAAoB;YACzB,YAAY,EAAE,WAAW,CAAC,YAAY;YACtC,YAAY,EAAE,WAAW,CAAC,YAAY;YACtC,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,WAAW,EAAE,WAAW,CAAC,WAAW;SAClB,CAAA;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAA;IACzC,CAAC;IAEO,UAAU,CAAE,aAAqB,EAAE,UAAmB;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,GAAiB,gBACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAC9B,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAC9B,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,4BAAe,CAAC,SAAS,IAEvC,WAAW,CAAC,KAAK,CACL,CAAA;YACjB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,eAAO,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAkB;gBACvB,QAAQ,EAAE,WAAW,CAAC,QAAQ;gBAC9B,aAAa,EAAE,aAAa;gBAC5B,UAAU,EAAE,uBAAU,CAAC,QAAQ;aACf,CAAA;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,eAAO,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAEO,WAAW,CAAE,aAAqB,EAAE,UAAmB;QAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,GAAiB;gBACtB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ;gBACnC,aAAa,EAAE,aAAa;gBAC5B,eAAe,EAAE,4BAAe,CAAC,UAAU;aAC5B,CAAA;YACjB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,eAAO,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAkB;gBACvB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ;gBACnC,aAAa,EAAE,aAAa;gBAC5B,UAAU,EAAE,uBAAU,CAAC,WAAW;aAClB,CAAA;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,eAAO,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;CACF;AA/DD,wDA+DC","sourcesContent":["import { ISessionDescription } from '../session/session-description'\nimport { ILooseObject } from '../../collections/collection'\nimport { MsgType } from '../../types'\nimport { ASessionMsgFactory, ObjectMutator } from '../session/a-session-msg-factory'\n\nimport {\n IStandardHeader,\n IUserRequest,\n IUserResponse,\n UserRequestType,\n UserStatus\n} from '../../types/FIXML50SP2'\n\nexport class FixmlSessionMsgFactory extends ASessionMsgFactory {\n constructor (readonly description: ISessionDescription, mutator: ObjectMutator | null = null) {\n super(description, mutator)\n }\n\n public logon (userRequestId: string = '', isResponse: boolean = false): ILooseObject {\n return this.fixmlLogon(userRequestId, isResponse)\n }\n\n public logout (msgType: string, text: string): ILooseObject {\n return this.fixmlLogout(msgType, msgType !== 'UserReq')\n }\n\n public header (msgType: string, seqNum: number = 0, time: Date = new Date(), overrideData?: Partial<IStandardHeader>): ILooseObject {\n const description = this.description\n const o: IStandardHeader = {\n SenderCompID: description.SenderCompId,\n TargetCompID: description.TargetCompID,\n SenderSubID: description.SenderSubID,\n TargetSubID: description.TargetSubID\n } as IStandardHeader\n return this.mutate(o, 'StandardHeader')\n }\n\n private fixmlLogon (userRequestId: string, isResponse: boolean): ILooseObject {\n const description = this.description\n if (!isResponse) {\n const o: IUserRequest = {\n Username: description.Username,\n Password: description.Password,\n UserRequestID: userRequestId,\n UserRequestType: UserRequestType.LogOnUser,\n // same escape hatch as the ascii factory - see ISessionDescription.Logon\n ...description.Logon\n } as IUserRequest\n return this.mutate(o, MsgType.Logon)\n } else {\n const o: IUserResponse = {\n Username: description.Username,\n UserRequestID: userRequestId,\n UserStatus: UserStatus.LoggedIn\n } as IUserResponse\n return this.mutate(o, MsgType.Logon)\n }\n }\n\n private fixmlLogout (userRequestId: string, isResponse: boolean): ILooseObject {\n if (!isResponse) {\n const o: IUserRequest = {\n Username: this.description.Username,\n UserRequestID: userRequestId,\n UserRequestType: UserRequestType.LogOffUser\n } as IUserRequest\n return this.mutate(o, MsgType.Logout)\n } else {\n const o: IUserResponse = {\n Username: this.description.Username,\n UserRequestID: userRequestId,\n UserStatus: UserStatus.NotLoggedIn\n } as IUserResponse\n return this.mutate(o, MsgType.Logout)\n }\n }\n}\n"]}
1
+ {"version":3,"file":"fixml-session-msg-factory.js","sourceRoot":"","sources":["../../../src/transport/fixml/fixml-session-msg-factory.ts"],"names":[],"mappings":";;;AAEA,uCAAqC;AACrC,4EAAoF;AAEpF,uDAM+B;AAE/B,MAAa,sBAAuB,SAAQ,0CAAkB;IAC5D,YAAsB,WAAgC,EAAE,UAAgC,IAAI;QAC1F,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QADP,gBAAW,GAAX,WAAW,CAAqB;IAEtD,CAAC;IAEM,KAAK,CAAE,gBAAwB,EAAE,EAAE,aAAsB,KAAK;QACnE,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;IACnD,CAAC;IAEM,MAAM,CAAE,OAAe,EAAE,IAAY;QAC1C,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAA;IACzD,CAAC;IAEM,MAAM,CAAE,OAAe,EAAE,SAAiB,CAAC,EAAE,OAAa,IAAI,IAAI,EAAE,EAAE,YAAuC;QAClH,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QACpC,MAAM,CAAC,GAAoB;YACzB,YAAY,EAAE,WAAW,CAAC,YAAY;YACtC,YAAY,EAAE,WAAW,CAAC,YAAY;YACtC,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,WAAW,EAAE,WAAW,CAAC,WAAW;SACrC,CAAA;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAA;IACzC,CAAC;IAEO,UAAU,CAAE,aAAqB,EAAE,UAAmB;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,mBACL,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAC9B,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAC9B,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,4BAAe,CAAC,SAAS,IAEvC,WAAW,CAAC,KAAK,CACrB,CAAA;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,eAAO,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAkB;gBACvB,QAAQ,EAAE,WAAW,CAAC,QAAQ;gBAC9B,aAAa,EAAE,aAAa;gBAC5B,UAAU,EAAE,uBAAU,CAAC,QAAQ;aAChC,CAAA;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,eAAO,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAEO,WAAW,CAAE,aAAqB,EAAE,UAAmB;QAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,GAAiB;gBACtB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ;gBACnC,aAAa,EAAE,aAAa;gBAC5B,eAAe,EAAE,4BAAe,CAAC,UAAU;aAC5C,CAAA;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,eAAO,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAkB;gBACvB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ;gBACnC,aAAa,EAAE,aAAa;gBAC5B,UAAU,EAAE,uBAAU,CAAC,WAAW;aACnC,CAAA;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,eAAO,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;CACF;AA/DD,wDA+DC","sourcesContent":["import { ISessionDescription } from '../session/session-description'\nimport { ILooseObject } from '../../collections/collection'\nimport { MsgType } from '../../types'\nimport { ASessionMsgFactory, ObjectMutator } from '../session/a-session-msg-factory'\n\nimport {\n IStandardHeader,\n IUserRequest,\n IUserResponse,\n UserRequestType,\n UserStatus\n} from '../../types/FIXML50SP2'\n\nexport class FixmlSessionMsgFactory extends ASessionMsgFactory {\n constructor (readonly description: ISessionDescription, mutator: ObjectMutator | null = null) {\n super(description, mutator)\n }\n\n public logon (userRequestId: string = '', isResponse: boolean = false): ILooseObject {\n return this.fixmlLogon(userRequestId, isResponse)\n }\n\n public logout (msgType: string, text: string): ILooseObject {\n return this.fixmlLogout(msgType, msgType !== 'UserReq')\n }\n\n public header (msgType: string, seqNum: number = 0, time: Date = new Date(), overrideData?: Partial<IStandardHeader>): ILooseObject {\n const description = this.description\n const o: IStandardHeader = {\n SenderCompID: description.SenderCompId,\n TargetCompID: description.TargetCompID,\n SenderSubID: description.SenderSubID,\n TargetSubID: description.TargetSubID\n }\n return this.mutate(o, 'StandardHeader')\n }\n\n private fixmlLogon (userRequestId: string, isResponse: boolean): ILooseObject {\n const description = this.description\n if (!isResponse) {\n const o: IUserRequest = {\n Username: description.Username,\n Password: description.Password,\n UserRequestID: userRequestId,\n UserRequestType: UserRequestType.LogOnUser,\n // same escape hatch as the ascii factory - see ISessionDescription.Logon\n ...description.Logon\n }\n return this.mutate(o, MsgType.Logon)\n } else {\n const o: IUserResponse = {\n Username: description.Username,\n UserRequestID: userRequestId,\n UserStatus: UserStatus.LoggedIn\n }\n return this.mutate(o, MsgType.Logon)\n }\n }\n\n private fixmlLogout (userRequestId: string, isResponse: boolean): ILooseObject {\n if (!isResponse) {\n const o: IUserRequest = {\n Username: this.description.Username,\n UserRequestID: userRequestId,\n UserRequestType: UserRequestType.LogOffUser\n }\n return this.mutate(o, MsgType.Logout)\n } else {\n const o: IUserResponse = {\n Username: this.description.Username,\n UserRequestID: userRequestId,\n UserStatus: UserStatus.NotLoggedIn\n }\n return this.mutate(o, MsgType.Logout)\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"clone-session-description.js","sourceRoot":"","sources":["../../../src/transport/session/clone-session-description.ts"],"names":[],"mappings":";;AAyBA,0DAOC;AAMD,8BAEC;AAfD,SAAgB,uBAAuB,CACrC,WAAgC,EAChC,SAA0C;IAC1C,uCACK,WAAW,GACX,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC,EACrB;AACH,CAAC;AAMD,SAAgB,SAAS,CAAE,WAAgC;IACzD,OAAO,WAAwC,CAAA;AACjD,CAAC","sourcesContent":["import { IDynamicSessionParams, ISessionDescription } from './session-description'\n\n/**\n * A session description with the readonly modifiers stripped. The description is\n * immutable by design - it is loaded once from JSON and shared by everything in the\n * session - but an acceptor running in wildcard mode has to write the peer's\n * SenderCompID into its own copy once the Logon arrives. Cast through this type so\n * the (deliberately rare) mutation is explicit at every call site.\n */\nexport type MutableSessionDescription = {\n -readonly [K in keyof ISessionDescription]: ISessionDescription[K]\n}\n\n/**\n * Shallow clone a session description, optionally overriding identity fields.\n *\n * Each connection accepted by a FIX acceptor needs its own description: the\n * SessionId (and therefore the message store), the outbound header comp ids and the\n * session registry key are all derived from it. Sharing one description across\n * concurrent sessions makes every client collide on the same store.\n *\n * `application` and `store` are shared by reference - they are read only\n * configuration (host, port, dictionary, store directory) common to every session\n * on the listener.\n */\nexport function cloneSessionDescription (\n description: ISessionDescription,\n overrides?: Partial<IDynamicSessionParams>): ISessionDescription {\n return {\n ...description,\n ...(overrides ?? {})\n }\n}\n\n/**\n * Make a description writable. Use only where the FIX protocol itself forces a\n * late binding - i.e. wildcard TargetCompID resolved from the peer's Logon.\n */\nexport function asMutable (description: ISessionDescription): MutableSessionDescription {\n return description as MutableSessionDescription\n}\n"]}
1
+ {"version":3,"file":"clone-session-description.js","sourceRoot":"","sources":["../../../src/transport/session/clone-session-description.ts"],"names":[],"mappings":";;AAyBA,0DAOC;AAMD,8BAEC;AAfD,SAAgB,uBAAuB,CACrC,WAAgC,EAChC,SAA0C;IAC1C,uCACK,WAAW,GACX,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC,EACrB;AACH,CAAC;AAMD,SAAgB,SAAS,CAAE,WAAgC;IACzD,OAAO,WAAW,CAAA;AACpB,CAAC","sourcesContent":["import { IDynamicSessionParams, ISessionDescription } from './session-description'\n\n/**\n * A session description with the readonly modifiers stripped. The description is\n * immutable by design - it is loaded once from JSON and shared by everything in the\n * session - but an acceptor running in wildcard mode has to write the peer's\n * SenderCompID into its own copy once the Logon arrives. Cast through this type so\n * the (deliberately rare) mutation is explicit at every call site.\n */\nexport type MutableSessionDescription = {\n -readonly [K in keyof ISessionDescription]: ISessionDescription[K]\n}\n\n/**\n * Shallow clone a session description, optionally overriding identity fields.\n *\n * Each connection accepted by a FIX acceptor needs its own description: the\n * SessionId (and therefore the message store), the outbound header comp ids and the\n * session registry key are all derived from it. Sharing one description across\n * concurrent sessions makes every client collide on the same store.\n *\n * `application` and `store` are shared by reference - they are read only\n * configuration (host, port, dictionary, store directory) common to every session\n * on the listener.\n */\nexport function cloneSessionDescription (\n description: ISessionDescription,\n overrides?: Partial<IDynamicSessionParams>): ISessionDescription {\n return {\n ...description,\n ...(overrides ?? {})\n }\n}\n\n/**\n * Make a description writable. Use only where the FIX protocol itself forces a\n * late binding - i.e. wildcard TargetCompID resolved from the peer's Logon.\n */\nexport function asMutable (description: ISessionDescription): MutableSessionDescription {\n return description\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tls-options-factory.js","sourceRoot":"","sources":["../../../src/transport/tcp/tls-options-factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConnectionOptions, TlsOptions } from 'tls'\nimport { ITlsOptions } from './tls-options'\nimport { ITcpTransportDescription } from './tcp-transport-description'\nconst path = require('path')\nconst fs = require('fs')\n\nexport class TlsOptionsFactory {\n /*\n session descriptions are routinely hand written json, where a boolean flag is easily\n quoted by mistake i.e. \"rejectUnauthorized\": \"false\". node treats that string as truthy\n and so does exactly the opposite of what was intended, silently. accept the two string\n spellings rather than inverting the caller's meaning - anything else is left alone so it\n shows up as an obviously wrong value rather than being guessed at.\n */\n static asBoolean (value: any): any {\n if (typeof value === 'string') {\n const lowered = value.toLowerCase()\n if (lowered === 'true') return true\n if (lowered === 'false') return false\n }\n return value\n }\n\n static read (filePath: string): string {\n const root: string = path.join(__dirname, '../../../')\n const fullPath = path.join(root, filePath)\n return fs.readFileSync(fullPath,\n {\n encoding: 'utf8', flag: 'r'\n })\n }\n\n static getTlsOptions (tls: ITlsOptions): TlsOptions | null {\n let tlsOptions: TlsOptions | null = null\n if (tls) {\n tlsOptions = {\n requestCert: TlsOptionsFactory.asBoolean(tls.requestCert),\n rejectUnauthorized: TlsOptionsFactory.asBoolean(tls.rejectUnauthorized)\n } as TlsOptions\n\n if (tls.key) {\n tlsOptions.key = TlsOptionsFactory.read(tls.key)\n tlsOptions.cert = tls?.cert ? TlsOptionsFactory.read(tls?.cert) : undefined\n }\n\n if (tls.ca && tls.ca.length > 0) {\n tlsOptions.ca = tls.ca.map(i => TlsOptionsFactory.read(i))\n }\n\n if (tls.nodeTlsServerOptions) {\n tlsOptions = {\n ...tlsOptions,\n ...tls.nodeTlsServerOptions\n }\n }\n }\n return tlsOptions\n }\n\n static getTlsConnectionOptions (tcp: ITcpTransportDescription): ConnectionOptions | null {\n let connectionOptions: ConnectionOptions | null = null\n const tls = tcp.tls\n if (tls) {\n connectionOptions = {\n port: tcp.port,\n host: tcp.host\n } as ConnectionOptions\n if (tls.key) {\n connectionOptions.key = TlsOptionsFactory.read(tcp.tls?.key ?? '')\n connectionOptions.cert = tcp.tls?.cert ? TlsOptionsFactory.read(tcp?.tls?.cert) : undefined\n }\n if (tcp.tls.ca && tcp.tls.ca.length > 0) {\n connectionOptions.ca = tcp.tls.ca.map(i => TlsOptionsFactory.read(i))\n }\n if (tcp.tls.timeout) {\n connectionOptions.timeout = tcp.tls.timeout\n }\n if (tcp.tls.sessionTimeout) {\n connectionOptions.sessionTimeout = tcp.tls.sessionTimeout\n }\n // https://github.com/TimelordUK/jspurefix/issues/151 - ITlsOptions declares these and\n // getTlsOptions honours them on the server path, so map them here too rather than making\n // nodeTlsConnectionOptions the only spelling that works for an initiator. Applied before\n // the spread below so an explicit nodeTlsConnectionOptions value still wins.\n if (tls.requestCert !== undefined) {\n connectionOptions.requestCert = TlsOptionsFactory.asBoolean(tls.requestCert)\n }\n if (tls.rejectUnauthorized !== undefined) {\n connectionOptions.rejectUnauthorized = TlsOptionsFactory.asBoolean(tls.rejectUnauthorized)\n }\n if (tls.nodeTlsConnectionOptions) {\n connectionOptions = {\n ...connectionOptions,\n ...tls.nodeTlsConnectionOptions\n }\n if (connectionOptions.rejectUnauthorized !== undefined) {\n connectionOptions.rejectUnauthorized = TlsOptionsFactory.asBoolean(connectionOptions.rejectUnauthorized)\n }\n if (connectionOptions.requestCert !== undefined) {\n connectionOptions.requestCert = TlsOptionsFactory.asBoolean(connectionOptions.requestCert)\n }\n }\n }\n return connectionOptions\n }\n}\n"]}
1
+ {"version":3,"file":"tls-options-factory.js","sourceRoot":"","sources":["../../../src/transport/tcp/tls-options-factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConnectionOptions, TlsOptions } from 'tls'\nimport { ITlsOptions } from './tls-options'\nimport { ITcpTransportDescription } from './tcp-transport-description'\nconst path = require('path')\nconst fs = require('fs')\n\nexport class TlsOptionsFactory {\n /*\n session descriptions are routinely hand written json, where a boolean flag is easily\n quoted by mistake i.e. \"rejectUnauthorized\": \"false\". node treats that string as truthy\n and so does exactly the opposite of what was intended, silently. accept the two string\n spellings rather than inverting the caller's meaning - anything else is left alone so it\n shows up as an obviously wrong value rather than being guessed at.\n */\n static asBoolean (value: any): any {\n if (typeof value === 'string') {\n const lowered = value.toLowerCase()\n if (lowered === 'true') return true\n if (lowered === 'false') return false\n }\n return value\n }\n\n static read (filePath: string): string {\n const root: string = path.join(__dirname, '../../../')\n const fullPath = path.join(root, filePath)\n return fs.readFileSync(fullPath,\n {\n encoding: 'utf8', flag: 'r'\n })\n }\n\n static getTlsOptions (tls: ITlsOptions): TlsOptions | null {\n let tlsOptions: TlsOptions | null = null\n if (tls) {\n tlsOptions = {\n requestCert: TlsOptionsFactory.asBoolean(tls.requestCert),\n rejectUnauthorized: TlsOptionsFactory.asBoolean(tls.rejectUnauthorized)\n }\n\n if (tls.key) {\n tlsOptions.key = TlsOptionsFactory.read(tls.key)\n tlsOptions.cert = tls?.cert ? TlsOptionsFactory.read(tls?.cert) : undefined\n }\n\n if (tls.ca && tls.ca.length > 0) {\n tlsOptions.ca = tls.ca.map(i => TlsOptionsFactory.read(i))\n }\n\n if (tls.nodeTlsServerOptions) {\n tlsOptions = {\n ...tlsOptions,\n ...tls.nodeTlsServerOptions\n }\n }\n }\n return tlsOptions\n }\n\n static getTlsConnectionOptions (tcp: ITcpTransportDescription): ConnectionOptions | null {\n let connectionOptions: ConnectionOptions | null = null\n const tls = tcp.tls\n if (tls) {\n connectionOptions = {\n port: tcp.port,\n host: tcp.host\n }\n if (tls.key) {\n connectionOptions.key = TlsOptionsFactory.read(tcp.tls?.key ?? '')\n connectionOptions.cert = tcp.tls?.cert ? TlsOptionsFactory.read(tcp?.tls?.cert) : undefined\n }\n if (tcp.tls.ca && tcp.tls.ca.length > 0) {\n connectionOptions.ca = tcp.tls.ca.map(i => TlsOptionsFactory.read(i))\n }\n if (tcp.tls.timeout) {\n connectionOptions.timeout = tcp.tls.timeout\n }\n if (tcp.tls.sessionTimeout) {\n connectionOptions.sessionTimeout = tcp.tls.sessionTimeout\n }\n // https://github.com/TimelordUK/jspurefix/issues/151 - ITlsOptions declares these and\n // getTlsOptions honours them on the server path, so map them here too rather than making\n // nodeTlsConnectionOptions the only spelling that works for an initiator. Applied before\n // the spread below so an explicit nodeTlsConnectionOptions value still wins.\n if (tls.requestCert !== undefined) {\n connectionOptions.requestCert = TlsOptionsFactory.asBoolean(tls.requestCert)\n }\n if (tls.rejectUnauthorized !== undefined) {\n connectionOptions.rejectUnauthorized = TlsOptionsFactory.asBoolean(tls.rejectUnauthorized)\n }\n if (tls.nodeTlsConnectionOptions) {\n connectionOptions = {\n ...connectionOptions,\n ...tls.nodeTlsConnectionOptions\n }\n if (connectionOptions.rejectUnauthorized !== undefined) {\n connectionOptions.rejectUnauthorized = TlsOptionsFactory.asBoolean(connectionOptions.rejectUnauthorized)\n }\n if (connectionOptions.requestCert !== undefined) {\n connectionOptions.requestCert = TlsOptionsFactory.asBoolean(connectionOptions.requestCert)\n }\n }\n }\n return connectionOptions\n }\n}\n"]}