robotty/dank-twitch-irc

View on GitHub
lib/client/transport/make-transport.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import { ExpandedTransportConfiguration } from "../../config/expanded";
import { DuplexTransport } from "./duplex-transport";
import { TcpTransport } from "./tcp-transport";
import { Transport } from "./transport";
import { WebSocketTransport } from "./websocket-transport";

export function makeTransport(
  config: ExpandedTransportConfiguration
): Transport {
  switch (config.type) {
    case "tcp":
      return new TcpTransport(config);
    case "duplex":
      return new DuplexTransport(config);
    case "websocket":
      return new WebSocketTransport(config);
    default:
      throw new Error("Unknown transport type");
  }
}