fix-client
Version:
A minimalist FIX API client
74 lines (64 loc) • 2.54 kB
JavaScript
const fs = require('fs');
const { MESSAGE_CONTENTS } = require('../spec/SpecMessageContents.js');
const { groupBy } = require('../src/util/util.js');
const { Components } = require('../src/components/Components.js');
const messageContents = MESSAGE_CONTENTS;
const components = new Components();
const mappedComponents = {};
const messageContentsById = groupBy(messageContents, 'ComponentID');
console.log('Building message content cache map...');
messageContents.forEach((messageContent) => {
const componentsById = messageContentsById[messageContent.ComponentID];
mappedComponents[messageContent.ComponentID] = componentsById.map((component) => ({
componentID: component.ComponentID,
tagText: component.TagText,
indent: component.Indent,
position: component.Position,
reqd: component.Reqd,
description: component.Description,
added: component.Added,
addedEP: component.AddedEP,
deprecated: component.Deprecated,
validated: false,
components: components.findByName(component.TagText)
? messageContents
.filter((content) => content.ComponentID === components.findByName(component.TagText).ComponentID)
.map((childComponent) => ({
componentID: childComponent.ComponentID,
tagText: childComponent.TagText,
indent: childComponent.Indent,
position: childComponent.Position,
reqd: childComponent.Reqd,
description: childComponent.Description,
added: childComponent.Added,
addedEP: childComponent.AddedEP,
deprecated: childComponent.Deprecated,
validated: false
}))
: []
}));
});
const outputPath = 'prebuild/built/';
const outputFilename = `${outputPath}MessageContents.prebuilt.json`;
console.log(`Built message content cache map, writing to ${outputFilename}.`);
let err = null;
if (!fs.existsSync(outputPath)) {
err = fs.mkdirSync(outputPath);
if (err) {
console.error(err);
process.exit(1);
}
}
if (fs.existsSync(outputFilename)) {
fs.unlinkSync(outputFilename);
}
err = fs.writeFileSync(
outputFilename,
JSON.stringify(mappedComponents),
'utf8'
);
if (err) {
console.error(err);
process.exit(2);
}
console.log('Prebuild step done.');