UNPKG

discord-player-music

Version:

A powerful music module for your Discord bot with lots of features

118 lines (117 loc) 3.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); let s = 1000, m = s * 60, h = m * 60, d = h * 24, w = d * 7, y = d * 365.25; /** * Parse or format the given `value` * * @param {string | number} value Value for parsing or formatting * @param {{ long: boolean }} [options] Formatting options * * @returns {number | string} Formatted value */ function default_1(value, options) { options = options || {}; switch (typeof value) { case 'string': { if (value.length > 0) return parse(value); break; } case 'number': { if (isFinite(value)) return options.long ? formatLong(value) : formatShort(value); } } throw new Error(`'value' is not a non-empty string or a valid number! 'value' = '${JSON.stringify(value)}'`); } exports.default = default_1; /** * @private */ function parse(value) { if (value.length > 100) return; let match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(value); if (!match) return; let n = parseFloat(match[1]); let type = (match[2] || 'ms').toLowerCase(); switch (type) { case 'years': case 'year': case 'yrs': case 'yr': case 'y': return n * y; case 'weeks': case 'week': case 'w': return n * w; case 'days': case 'day': case 'd': return n * d; case 'hours': case 'hour': case 'hrs': case 'hr': case 'h': return n * h; case 'minutes': case 'minute': case 'mins': case 'min': case 'm': return n * m; case 'seconds': case 'second': case 'secs': case 'sec': case 's': return n * s; case 'milliseconds': case 'millisecond': case 'msecs': case 'msec': case 'ms': return n; default: return undefined; } } /** * @private */ function formatShort(value) { let msAbs = Math.abs(value); if (msAbs >= d) return Math.round(value / d) + 'd'; if (msAbs >= h) return Math.round(value / h) + 'h'; if (msAbs >= m) return Math.round(value / m) + 'm'; if (msAbs >= s) return Math.round(value / s) + 's'; return value + 'ms'; } /** * @private */ function formatLong(value) { let msAbs = Math.abs(value); if (msAbs >= d) return format(value, msAbs, d, 'day'); if (msAbs >= h) return format(value, msAbs, h, 'hour'); if (msAbs >= m) return format(value, msAbs, m, 'minute'); if (msAbs >= s) return format(value, msAbs, s, 'second'); return value + ' ms'; } /** * @private */ function format(value, abs, n, name) { let isFormat = abs >= n * 1.5; return Math.round(value / n) + ' ' + name + (isFormat ? 's' : ''); }