@tsed/platform-http
Version:
A TypeScript Framework on top of Express
28 lines (27 loc) • 1.18 kB
JavaScript
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;
};
}
}