bad-stats-common
Version:
Common constants and types for bad-stats client and server
46 lines (44 loc) • 1.88 kB
JavaScript
// src/constants/index.ts
var PLAYER_RANKS = ["R5", "R4", "R3", "R2", "R1", "R0"];
var PLAYER_ROLES = [
"owner",
"administrator",
"moderator",
"user",
"quest"
];
var EVENT_STATUSES = ["active", "finished", "planned"];
// src/utils/math.ts
var calculateDifference = (startValue, endValue) => {
if ([startValue, endValue].some((v) => typeof v !== "number" || isNaN(v))) {
console.error("\u041E\u0431\u0430 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043E\u043B\u0436\u043D\u044B \u0431\u044B\u0442\u044C \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u043C\u0438 \u0447\u0438\u0441\u043B\u0430\u043C\u0438.");
return null;
}
const difference = endValue - startValue;
if (difference < 0) {
console.warn("\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: endValue \u043C\u0435\u043D\u044C\u0448\u0435 startValue. \u0412\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u044E 0.");
return 0;
}
return Math.round(difference);
};
var calculateAverage = (values, round = false) => {
if (!Array.isArray(values) || values.length === 0) {
console.warn("\u041C\u0430\u0441\u0441\u0438\u0432 \u043F\u0443\u0441\u0442\u043E\u0439 \u0438\u043B\u0438 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D.");
return null;
}
const validNumbers = values.filter((v) => typeof v === "number" && !isNaN(v));
if (validNumbers.length === 0) {
console.warn("\u041D\u0435\u0442 \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0445 \u0447\u0438\u0441\u0435\u043B \u0432 \u043C\u0430\u0441\u0441\u0438\u0432\u0435.");
return null;
}
const sum = validNumbers.reduce((acc, curr) => acc + curr, 0);
const avg = sum / validNumbers.length;
return round ? Math.round(avg) : avg;
};
export {
EVENT_STATUSES,
PLAYER_RANKS,
PLAYER_ROLES,
calculateAverage,
calculateDifference
};