UNPKG

bad-stats-common

Version:

Common constants and types for bad-stats client and server

46 lines (44 loc) 1.88 kB
// 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 };