UNPKG

@randsum/dice

Version:

A flexible, type-safe dice roller for tabletop RPGs, game development, and probability simulations

28 lines (27 loc) 1.01 kB
/** * Cache for storing pre-generated dice faces to avoid redundant calculations * This significantly improves performance for frequently used dice (d4, d6, d8, d10, d12, d20) */ const facesCache = new Map(); /** * Generates an array of numerical faces for a die with the given number of sides * Uses memoization to cache results for better performance * * @param sides - The number of sides on the die * @returns An array of numbers representing the faces of the die */ export function generateNumericalFaces(sides) { const numSides = Number(sides); if (facesCache.has(numSides)) { const cachedFaces = facesCache.get(numSides); if (cachedFaces === undefined) { throw new Error('Faces cache is empty'); } return cachedFaces; } const faces = Array.from({ length: numSides }, (_, index) => index + 1); if (numSides <= 100 || [4, 6, 8, 10, 12, 20, 100].includes(numSides)) { facesCache.set(numSides, faces); } return faces; }