UNPKG

npm-shortidx

Version:

Generador de Id aleatorios, Random Id Generator

1 lines 2.37 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PasswordGen=exports.CustomIdx=exports.ShuffleString=exports.IndexShuffle=exports.RepeatIdx=exports.RandomIdx=exports.ShortIdx=exports.ShuffleX=void 0;const ShuffleX=(e,r)=>{if(!Array.isArray(e))throw new TypeError("El parámetro debe ser un array");const t=e.length,o=void 0!==r?r:t;if(0===t||0===o)return[];validateLimit(o,t);const n=[...e];for(let e=0;e<o;e++){const r=e+Math.floor(Math.random()*(t-e));[n[e],n[r]]=[n[r],n[e]]}return n.slice(0,o)};exports.ShuffleX=ShuffleX;const validateLimit=(e,r)=>{if(e<1||e>r)throw new Error(`El límite debe estar entre 1 y ${r}`);return e},generateId=(e,r=7)=>{if(r<1)throw new Error("El límite debe ser mayor a 0");if(e.length<2)throw new Error("El charset debe tener al menos 2 caracteres");const t=e.length,o=4294967295,n=o-o%t;let s="";for(;s.length<r;){const o=r-s.length,a=new Uint32Array(o);crypto.getRandomValues(a);for(let d=0;d<o&&s.length!==r;d++){const r=a[d];r<n&&(s+=e[r%t])}}return s},ShortIdx=(e=7)=>generateId("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_",e);exports.ShortIdx=ShortIdx;const RandomIdx=(e=7)=>generateId("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_!#$%&'()*+,./:;<=>?@[]^`{|}~\"",e);exports.RandomIdx=RandomIdx;const RepeatIdx=(e,r,t)=>{if(!Number.isInteger(e)||e<1)throw new Error("El número de elementos debe ser un entero mayor a 0");return Array.from({length:e},()=>r(t))};exports.RepeatIdx=RepeatIdx;const IndexShuffle=e=>{if(e<1)throw new Error("La longitud debe ser mayor a 0");const r=Array.from({length:e},(e,r)=>r);return(0,exports.ShuffleX)(r)};exports.IndexShuffle=IndexShuffle;const ShuffleString=e=>(0,exports.ShuffleX)(e.split("")).join("");exports.ShuffleString=ShuffleString;const CustomIdx=(e,r=7)=>generateId(e,r);exports.CustomIdx=CustomIdx;const DEFAULT_CHARS="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",PasswordGen=({length:e=16,chars:r=DEFAULT_CHARS,extraChars:t=""}={})=>{if(!Number.isInteger(e)||e<1)throw new Error("La longitud debe ser un número entero mayor a 0");if("string"!=typeof t)throw new Error("extraChars debe ser un string");if("string"!=typeof r||r.length<2)throw new Error("El charset debe tener al menos 2 caracteres");const o=Array.from(new Set(r+t)).join("");return generateId(o,e)};exports.PasswordGen=PasswordGen;