nodejs-health-checker-lw
Version:
The main purpose of this package is to substitute nodejs-health-checker package and standardize the liveness and readiness actions for Nodejs applications running in Kubernetes deployments, without adding complexity and extra package installs.
72 lines • 2.61 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.HealthChecker = exports.Check = void 0;
class Check {
constructor(obj) {
this.url = obj.url;
this.error = obj.error;
}
}
exports.Check = Check;
class HealthChecker {
constructor(config) {
this.name = config.name;
this.version = config.version;
this.integrations = config.integrations;
}
liveness() {
return {
status: "fully functional",
version: this.version
};
}
readiness() {
return __awaiter(this, void 0, void 0, function* () {
const start = new Date().getTime();
const promises = [];
this.integrations.forEach(v => promises.push(this.check(v)));
const result = yield Promise.all(promises);
return {
name: this.name,
version: this.version,
status: !result.some(({ status }) => status === false),
date: new Date(),
duration: this.delta(start),
integrations: result.map(v => v)
};
});
}
check(integration) {
return __awaiter(this, void 0, void 0, function* () {
const start = new Date().getTime();
let result = new Check({ url: 'unknown' });
try {
result = yield integration.handle();
}
catch (error) {
result.error = error;
}
return {
name: integration.name,
status: !result.error,
response_time: this.delta(start),
url: result.url,
error: result.error
};
});
}
delta(time) {
return (new Date().getTime() - time) / 1000;
}
}
exports.HealthChecker = HealthChecker;
//# sourceMappingURL=index.js.map