import ms from 'ms' export default class Util { async wait(ms: number): Promise { return new Promise((resolve) => { setTimeout(resolve, ms) }) } getFormattedDate(ms = Date.now()): string { const today = new Date(ms) const month = String(today.getMonth() + 1).padStart(2, '0') // January is 0 const day = String(today.getDate()).padStart(2, '0') const year = today.getFullYear() return `${month}/${day}/${year}` } shuffleArray(array: T[]): T[] { return array.map(value => ({ value, sort: Math.random() })) .sort((a, b) => a.sort - b.sort) .map(({ value }) => value) } randomNumber(min: number, max: number): number { return Math.floor(Math.random() * (max - min + 1)) + min } chunkArray(arr: T[], numChunks: number): T[][] { const chunkSize = Math.ceil(arr.length / numChunks) const chunks: T[][] = [] for (let i = 0; i < arr.length; i += chunkSize) { const chunk = arr.slice(i, i + chunkSize) chunks.push(chunk) } return chunks } stringToMs(input: string | number): number { const milisec = ms(input.toString()) if (!milisec) { throw new Error('The string provided cannot be parsed to a valid time! Use a format like "1 min", "1m" or "1 minutes"') } return milisec } }