SockTrader/Binance-local-exchange

View on GitHub
src/index.ts

Summary

Maintainability
A
0 mins
Test Coverage
#!/usr/bin/env node

import { akitaConfig } from '@datorama/akita';
import chalk from 'chalk';
import { Option, program } from 'commander';
import 'reflect-metadata';
import { version } from '../package.json';
import { createApplication } from './application';
import { ConfigurationService } from './services/configuration.service';
import container from './container';
import WebsocketServer from './endpoints/websocket/websocketServer';

akitaConfig({ resettable: true });

program
  .version(version)
  .addOption(new Option('--I-KNOW-WHAT-I-AM-DOING', 'removes security warnings')
    .default(false)
    .env('I_KNOW_WHAT_I_AM_DOING')
  )
  .addOption(new Option('-p, --port <number>', 'port number')
    .default(8000)
    .env('PORT')
  )
  .addOption(new Option('-lt, --local-time', 'local time')
    .default(true)
    .env('LOCAL_TIME')
  )
  .addOption(new Option('-lei, --local-exchange-info', 'local exchange info')
    .default(true)
    .env('LOCAL_EXCHANGE_INFO')
  )
  .addOption(new Option('-fm, --fee-maker <number>', 'maker fee')
    .argParser(parseFloat)
    .default(0.001)
    .env('FEES_MAKER')
  )
  .addOption(new Option('-ft, --fee-taker <number>', 'taker fee')
    .argParser(parseFloat)
    .default(0.001)
    .env('FEES_TAKER')
  )
  .parse(process.argv);

const configService = container.resolve(ConfigurationService);
configService.setApplicationConfig(program.opts());

const websocketServer = container.resolve(WebsocketServer);
const server = websocketServer.createFromExpressApp(createApplication(configService.getAll()));

//start our server
server.listen(configService.get('port'), () => {
  const address = server.address();
  const port = typeof address === 'string' ? address : address?.port;

  console.log(`Binance local exchange is listening on port: ${port}\n`);

  if (!configService.get('IKNOWWHATIAMDOING')) {
    const msg = `Don't send any API keys or signed signatures.
Binance local exchange doesn't need any of these to operate.`;

    console.warn(chalk.bgYellowBright.black(msg));
  }
});