@backstage/backend-defaults
Version:
Backend defaults used by Backstage backend apps
65 lines (62 loc) • 1.73 kB
JavaScript
;
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