UNPKG

fast-cartesian

Version:
46 lines (32 loc) 949 B
export const validateInputs=(inputs)=>{ if(!Array.isArray(inputs)){ throw new TypeError("Argument must be an array of arrays") } inputs.forEach(validateInput); validateDimensions(inputs); validateCombinations(inputs) }; const validateInput=(input)=>{ if(!Array.isArray(input)){ throw new TypeError(`Argument must be an array: ${input}`) } }; const validateDimensions=({length})=>{ if(length>=MAX_DIMENSIONS){ throw new TypeError( `Too many arrays (${length}): please use the 'big-cartesian' library instead of 'fast-cartesian'` ) } }; const MAX_DIMENSIONS=100; const validateCombinations=(inputs)=>{ const size=inputs.reduce(multiplySize,1); if(size>=MAX_SIZE){ const sizeStr=Number.isFinite(size)?` (${size.toExponential(0)})`:""; throw new TypeError( `Too many combinations${sizeStr}: please use the 'big-cartesian' library instead of 'fast-cartesian'` ) } }; const multiplySize=(size,input)=>size*input.length; const MAX_SIZE=2**32;