UNPKG

@backstage/backend-defaults

Version:

Backend defaults used by Backstage backend apps

65 lines (62 loc) 1.73 kB
'use strict'; const DEFAULT_PORT = 7007; const DEFAULT_HOST = ""; function readHttpServerOptions(config) { return { listen: readHttpListenOptions(config), https: readHttpsOptions(config) }; } function readHttpListenOptions(config) { const listen = config?.getOptional("listen"); if (typeof listen === "string") { const parts = String(listen).split(":"); const port = parseInt(parts[parts.length - 1], 10); if (!isNaN(port)) { if (parts.length === 1) { return { port, host: DEFAULT_HOST }; } if (parts.length === 2) { return { host: parts[0], port }; } } throw new Error( `Unable to parse listen address ${listen}, expected <port> or <host>:<port>` ); } const host = config?.getOptional("listen.host") ?? DEFAULT_HOST; if (typeof host !== "string") { config?.getOptionalString("listen.host"); throw new Error("unreachable"); } return { port: config?.getOptionalNumber("listen.port") ?? DEFAULT_PORT, host }; } function readHttpsOptions(config) { const https = config?.getOptional("https"); if (https === true) { const baseUrl = config.getString("baseUrl"); let hostname; try { hostname = new URL(baseUrl).hostname; } catch (error) { throw new Error(`Invalid baseUrl "${baseUrl}"`); } return { certificate: { type: "generated", hostname } }; } const cc = config?.getOptionalConfig("https"); if (!cc) { return void 0; } return { certificate: { type: "pem", cert: cc.getString("certificate.cert"), key: cc.getString("certificate.key") } }; } exports.readHttpServerOptions = readHttpServerOptions; //# sourceMappingURL=config.cjs.js.map