UNPKG

@tsed/platform-http

Version:
28 lines (27 loc) 1.18 kB
import { getHostInfoFromPort } from "@tsed/core"; import { configuration, injector, logger, ProviderScope } from "@tsed/di"; import { listenServer } from "./listenServer.js"; export function createServer({ token, type, port, server: get, listen }) { const server = port !== false ? get() : null; injector().addProvider(token, { scope: ProviderScope.SINGLETON, useValue: server }); injector().invoke(token); if (server) { const hostInfo = getHostInfoFromPort(type, port); return async () => { const url = `${hostInfo.protocol}://${hostInfo.address}:${port}`; logger().debug(`Start server on ${url}`); await (listen ? listen(hostInfo) : listenServer(server, hostInfo)); const address = server.address(); if (address && typeof address !== "string") { hostInfo.address = address.address; hostInfo.port = address.port; } logger().info(`Listen server on ${hostInfo.toString()}`); configuration().set(`${type}Port`, `${hostInfo.address}:${hostInfo.port}`); return server; }; } }