fixparser
Version:
FIX.Latest / 5.0 SP2 Parser / AI Agent Trading
47 lines (34 loc) • 1.73 kB
text/typescript
import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import dotenv from 'dotenv';
import { buildTime, packageVersion, releaseInformation } from '../globals.ts';
// Load environment variables
dotenv.config();
// Convert __dirname and __filename for ESM
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Set global variables
globalThis.__PACKAGE_VERSION__ = packageVersion;
globalThis.__BUILD_TIME__ = buildTime;
globalThis.__RELEASE_INFORMATION__ = releaseInformation;
globalThis.__DISTRIBUTED_CACHING_MECHANISM__ = process.env.DISTRIBUTED_CACHING_MECHANISM;
globalThis.__MULTI_THREAD_SYNC_MUTEX__ = process.env.MULTI_THREAD_SYNC_MUTEX;
globalThis.__INTERFACE_COMPOSITION_PATTERN__ = process.env.INTERFACE_COMPOSITION_PATTERN;
// Read and process the input file
const inputFileName = process.argv[2];
const file = path.join(__dirname, inputFileName);
const fileData: string = fs.readFileSync(file, { encoding: 'utf8', flag: 'r' });
const tmpDir = path.join(__dirname, '.processed-examples');
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir);
}
const replaceString = (from: string, to: string, input: string) => input.toString().replace(new RegExp(from, 'g'), to);
let newFileData = fileData;
newFileData = replaceString("'fixparser'", "'../../src/FIXParser'", newFileData);
newFileData = replaceString("'fixparser/FIXServer'", "'../../src/FIXServer'", newFileData);
const newFileDataBuffer = Buffer.from(newFileData, 'utf8');
const outputFilePath = path.join(tmpDir, inputFileName);
fs.writeFileSync(outputFilePath, newFileDataBuffer);
// Dynamically import the modified module
await import(`file://${outputFilePath}`);