@backstage/backend-defaults
Version:
Backend defaults used by Backstage backend apps
53 lines (47 loc) • 1.67 kB
JavaScript
;
var Router = require('express-promise-router');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
var Router__default = /*#__PURE__*/_interopDefaultCompat(Router);
const HEADER_CONFIG_KEY = "backend.health.headers";
function createHealthRouter(options) {
const headersConfig = options.config.getOptionalConfig(HEADER_CONFIG_KEY)?.get();
if (headersConfig) {
for (const [key, value] of Object.entries(headersConfig)) {
if (!key || typeof key !== "string") {
throw new Error(
`Invalid header name in at ${HEADER_CONFIG_KEY}, must be a non-empty string`
);
}
if (!value || typeof value !== "string") {
throw new Error(
`Invalid header value in at ${HEADER_CONFIG_KEY}, must be a non-empty string`
);
}
}
}
const headers = headersConfig && new Headers(headersConfig);
const router = Router__default.default();
router.get(
"/.backstage/health/v1/readiness",
async (_request, response) => {
const { status, payload } = await options.health.getReadiness();
if (headers) {
response.setHeaders(headers);
}
response.status(status).json(payload);
}
);
router.get(
"/.backstage/health/v1/liveness",
async (_request, response) => {
const { status, payload } = await options.health.getLiveness();
if (headers) {
response.setHeaders(headers);
}
response.status(status).json(payload);
}
);
return router;
}
exports.createHealthRouter = createHealthRouter;
//# sourceMappingURL=createHealthRouter.cjs.js.map