@qrvey/health-checker
Version:
 
38 lines • 1.53 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.withTimeout = withTimeout;
exports.withTimeoutAndTiming = withTimeoutAndTiming;
const constants_1 = require("./constants");
const logger_1 = __importDefault(require("./logger"));
function withTimeout(context, healthCheckFn, ms = constants_1.DEFAULT_HEALTH_CHECK_TIMEOUT) {
return new Promise((resolve, reject) => {
const timeoutId = setTimeout(() => {
const message = `[${context}] HealthChecker timeout after ${ms}ms`;
logger_1.default.error(message);
reject(new Error(message));
}, ms);
healthCheckFn
.then((value) => {
clearTimeout(timeoutId);
resolve(value);
})
.catch((error) => {
clearTimeout(timeoutId);
reject(error);
});
});
}
async function withTimeoutAndTiming(context, healthCheckPromise, ms = constants_1.DEFAULT_HEALTH_CHECK_TIMEOUT) {
const start = Date.now();
const result = await withTimeout(context, healthCheckPromise, ms);
const durationMs = Date.now() - start;
const maybeMetadata = result === null || result === void 0 ? void 0 : result.metadata;
return {
durationMs,
metadata: typeof maybeMetadata === 'object' ? maybeMetadata : undefined,
};
}
//# sourceMappingURL=withTimeout.js.map