Un rapido y simple generador de IDs con opciones de personalizacion
Con tan Solo Dos funciónes y multiples opciones de configuración, puedes obtener IDs personalizados para tus necesidades.
-
miniID()
: Genera IDs (de 3 a 9 caracteres). -
MegaID()
: Genera IDs (de 3 a 10000 caracteres).
- 🔹 0 dependencias
- 🔹 Permite caracteres custom
- 🔹 configuraciones inteligentes
- 🔹 patrones configurables
- 🔹 documentacion robusta y didactica
console.log(miniID());
// Ejemplo de salida: QKiMZ
console.log(MegaID());
// Ejemplo de salida: 9EBuQK5bdCK723MroaLEuMxiQ
Estos grupos de caracteres permiten generar IDs especificos, los caracteres de los grupos son de tipo string
.
-
num
: Números (0-9) → 9 caracteres -
low
: Letras minúsculas (a-z) → 26 caracteres -
upp
: Letras mayúsculas (A-Z) → 26 caracteres -
alfa
: Números, letras minúsculas y mayúsculas → 62 caracteres
Ambas funciones, miniID()
y MegaID()
, permiten las siguientes configuraciones:
- Habilitar o Deshabilitar la repeticion caracteres.
- Seleccionar grupos de caracteres predeterminados o personalizados.
- Utilizar solo caracteres proporcionados por el usuario.
- La longitud del ID se limita a un rango de 3 a 9 caracteres.
- Permite obtener la siguiente informacion:
- Cantidad de combinaciones posibles (aproximado).
- Configuracion actual establecida.
- La longitud del ID se limita a un rango de 3 a 10000 caracteres.
- Permite obtener la siguiente informacion:
- Configuracion actual establecida.
Ambas funciones incluyen valores por defecto pero son configurables.
function miniID({
length = 5, // Longitud del ID
groups = ["alfa"], // Grupo de caracteres alfa-numéricos
customChars = [], // Grupo de caracteres custom
repeat = false, // Sin repetición de caracteres
infoCombinations = false, // Cantidad de combinaciones (aproximada)
infoConfig = false, // Configuracion actual
onlyCustom = false, // Solo caracteres custom
} = {})
function MegaID({
length= 25, // Longitud del ID
groups = ["alfa"], // Grupo de caracteres alfa-numéricos
customChars = [], // Grupo de caracteres custom
repeat = true, // Con repetición de caracteres
onlyCustom = false, // Solo caracteres custom
infoConfig = false, // Configuracion actual
} = {})
Puedes personalizar la generación de mini IDs utilizando las siguientes opciones:
PARAMETRO | TIPO | UTILIDAD | VALOR PREDETERMINADO | VALORES POSIBLES |
---|---|---|---|---|
length | number | Permite establecer la longitud del ID | 5 | numeros del 3 al 9 |
repeat | boolean | Determina si el ID puede tener o no caracteres repetidos | false | true o false |
infoCombinations | boolean | Muestra la cantidad de combinaciones posibles con la configuracion actual | false | true o false |
infoConfig | boolean | Muestra la configuracion que se ha elegido | false | true o false |
onlyCustom | boolean | Determina si SOLO se utilizan los caracteres que brinda el usuario | false | true o false |
groups | array | Permite establecer que grupos de caracteres predeterminados son usados | ["alfa"] | ["num", "low", "upp", "alfa"]; |
customChars | array | Permite agregar cualquier caracter deseado | [] | [cualquier caracter] |
Puedes personalizar la generación de mini IDs utilizando las siguientes opciones:
PARAMETRO | TIPO | UTILIDAD | VALOR PREDETERMINADO | VALORES POSIBLES |
---|---|---|---|---|
length | number | Permite establecer la longitud del ID | 25 | numeros del 3 al 10000 |
repeat | boolean | Determina si el ID puede tener o no caracteres repetidos | true | true o false |
onlyCustom | boolean | Determina si SOLO se utilizan los caracteres que brinda el usuario | false | true o false |
groups | array | Permite establecer que grupos de caracteres predeterminados son usados | ["alfa"] | ["num", "low", "upp", "alfa"]; |
customChars | array | Permite agregar cualquier caracter deseado | [] | [cualquier caracter] |
Con el fin de ahorrar tiempo al escribir la configuracion se crearon variables que funcionan como atajos equivalentes, para los parametros de ambas funciones:
const infoCombinations = true;
const infoConfig = true;
const onlyCustom = true;
const repeat = true;
const no = false;
const groups = ["num", "low", "upp", "alfa"];
const [num, low, upp, alfa] = groups;
const infoCombinations = true;
const help = " ";
const options = [{help:"length"}, {help:"repeat"}, {help:"onlyCustom"}, {help:"groups"}, {help:"customChars"},{help:"infoConfig"},{help:"infoCombinations"}];
const [lengthInfo, repeatInfo, onlyCustomInfo, groupsInfo, customCharsInfo,configInfo,combinationsInfo] = options ;
Tanto la funcion
miniID()
como la funcionMegaID()
reciben como parametro un objeto de configuracion: La mayoria de los parametros que reciben son booleanos por lo que tiene solo dos valores posibles (true
ofalse
) Con el fin de evitar escribir algo tal como {parametro:true} o {parametro:false}, parecia agil poner simplemente {parametro}
Gracias a la limpieza previa de
customChars
usted puede pasar caracteres en una sola cadena de texto: De esta forma esto: -->customChars:["1","h","s","♥","2","H","b","$"]
equivale a esto: -->customChars:["1hs♥2Hb$"]
Y con este atajo puede ahorrar mucho tiempo al evitar las comillas ("") y las comas (,)
Algunos ejemplos de los posibles resultados dada una configuracion.
const customID = miniID({
length: 8,
repeat: true,
infoConfig: true,
onlyCustom: true,
customChars: ["@", "#", "$"],
});
console.log(customID);
/*↓ RESULTADO ↓*/
// largo del ID 8
// La repeticion esta activada
// los caracteres usados son @,#,$
// Cantidad de Caracteres Custom: 3
// ##@$$@@@
const customID = miniID({
length: 4,
infoCombinations: true,
repeat: false,
group: ["low"],
});
console.log(customID);
/*↓ RESULTADO ↓*/
// Combinaciones posibles: 13388280
// xsDc
const customID = miniID({
length: 6,
infoCombinations: true,
repeat: false,
group: ["low", "num"],
});
console.log(customID);
/*↓ RESULTADO ↓*/
// Combinaciones posibles: 44261653680
// Qw4Nz6
Algunos ejemplos de los posibles resultados dada una configuracion.
const customID = miniID({
length: 8,
repeat,
infoConfig,
onlyCustom,
customChars: ["@", "#", "$"],
});
console.log(customID);
/*↓ RESULTADO ↓*/
// largo del ID 8
// La repeticion esta activada
// los caracteres usados son @,#,$
// Cantidad de Caracteres Custom: 3
// @#$@#@@@
const customID = miniID({ length: 4, infoCombinations, repeat, group: [low] });
console.log(customID);
/*↓ RESULTADO ↓*/
// Combinaciones posibles: 14776336
// 28hs
const customID = miniID({ length: 4, infoCombinations, repeat, group: [low] });
console.log(customID);
/*↓ RESULTADO ↓*/
// Combinaciones posibles: 14776336
// gE7B
Debido a que existen muchas formas de lograr los mismos resultados, es importante exponer las distintas redundancias posibles.
miniID() === miniID({length:5,repeat:false,groups:["alfa"],infoCombinations:false,infoConfig:false,onlyCustom:false,customChars:[]})
miniID({groups:[num,upp,low,alfa]}) === miniID({groups:["num","upp","low","alfa"]})
miniID({groups:[alfa]}) === miniID({groups:[num,upp,low]})
miniID({repeat}) === miniID({repeat:true})
miniID({repeat:no}) === miniID({repeat:false}))
miniID({infoCombinations}) === miniID({infoCombinations:true}))
miniID({infoConfig}) === miniID({infoConfig:true}))
miniID({onlyCustom}) === miniID({onlyCustom:true}))
miniID({customChars:[123456]}) === miniID({customChars:[1,2,3,4,5,6]}))
miniID({customChars:["123456"]}) === miniID({customChars:["1","2","3","4","5","6"]}))
MegaID() === MegaID({length: 25,repeat: true,groups: ["alfa"],onlyCustom: false,customChars: [],})
MegaID({ groups: [num, upp, low, alfa] }) === MegaID({ groups: ["num", "upp", "low", "alfa"] })
MegaID({ groups: [alfa] }) === MegaID({ groups: [num, upp, low] })
MegaID({ repeat: true }) === MegaID({ repeat })
MegaID({ repeat: false }) === MegaID({ repeat: no })
MegaID({ onlyCustom: true }) === MegaID({ onlyCustom })
MegaID({ customChars: [1, 2, 3, 4, 5, 6] }) === MegaID({ customChars: [123456] })
MegaID({ customChars: ["1", "2", "3", "4", "5", "6"] }) === MegaID({ customChars: ["123456"] });
Esta sección describe los procesos de validación y limpieza que aseguran que los IDs se generen correctamente.
Antes de generar el ID ocurren una serie de validaciones y limpiezas para que las funciones encargadas de generar el ID trabajen con solo los datos necesarios.
Validación de longitud: Garantiza que la longitud esté dentro del rango permitido. Limpieza de caracteres personalizados: Se eliminan caracteres duplicados y se normalizan cadenas de texto.
esto evita bucles infinitos e IDs con una longitud coherente mayor a 1
Incluso si el usuario ingresa numeros negativos o numeros extremadamente altos.
- La constante
limit
garantiza que el ID siempre se va a mantener en los rangos estipulados.
para que todos los caracteres puedan elegirse con la misma igualdad de probabilidades es necesario que no haya caracteres repetidos y que no haya similitudes simbolicas como lo serian 1 y "1". Gracias a esta limpieza usted puede ahorrarse separar cada item de customChars con comas (,) y comilla ("") y escribirlos como si fueran una sola cadena de texto.
- Es por esto que primero se separan las cadenas de texto que tengan mas de un caracter y todos los numeros que tengan mas de una cifra. Durante el proceso Todos los caracteres otorgados, se transforman a variables de tipo
strings
. - Luego se coloca TODOS los caracteres recoletados en un conjunto, donde se elimina cualquier posibilidad de dobles concurrencias.
- Finalmente esto se transforma a un arreglo limpio, para poder manipularlo y generar IDs correctamente.
-
factorial()
--> Colabora con el calculo de la cantidad de combinaciones posibles. -
getAmmountCombinations()
--> Calcula la cantidad de combinaciones posibles segun la configuracion dada enminiID()
. -
getRandomItem()
--> Obtiene un item random de un array dado. -
generateDefaultID()
--> Genera un ID por default en caso de errores enminiID()
yMegaID()
.
-
const limit
--> Limita la entrada delength
dentro de los rangos estipulados enminiID()
yMegaID()
-
const customCharsClean
--> Almacena todos los caracteres pasados por el usuario acustomChars
y separa los items que tengan mas de 1 de longitud. -
const chars
--> Crea un conjunto con todos los grupos predeterminados mas los caracteres custom. -
const totalChars
--> Almacena la longitud dechars
-
const amountCombinations
--> Almacena la cantidad de combinaciones posibles. -
const DefaultID
--> Almacena el ID por default para casos de error. -
const customCharsSet
--> Crea un conjunto con los caracteres pasados por el usuario en el arraycustomChars
para eliminar caracteres repetidos. -
let setToArray
--> Convierte y almacenacustomCharsSet
en un array, para poder operarlo. -
let randomMiniID
--> Almacena el mini ID final que se retornara al usuario. -
let randomSuperID
--> Almacena el mega ID final que se retornara al usuario.
Debido a que la libertad de configuracion amerita propuestas ilogicas, se idearon alternativas para evitar errores.
Si se proporciona una longitud mayor que el número de caracteres disponibles, se devuelve un ID por defecto. Para evitar este error, el usuario puede:
Hay tres formas de solucionarlo:
- proporcionar mas caracteres en
customChars
: Hasta tener una cantidad de caracteres igual o mayor que la longitud exigida. - Disminuir la longitud exigida en
length
: Hasta tener una longitud igual o menor que la cantidad de caracteres proporcionados - Activar la repeticion con
repeat
: De esta forma, si exige una longitud de X numeros, y proporciona al menos 1 caracter, este o estos caracteres proporcionados se podran repetir todas las veces necesarias hasta generar un ID con la longitud exigida.
🙏 si te gusta el proyecto puedes apoyarme comprandome un cafe: ☕
¿Encontrastes algun error? 😮 ¿Quieres hacer una propuesta para mejorar el codigo o cambiarlo radicalmente haciendo que nada de esto tenga sentido? 😲
Me encantan los cambios siempre que sean buenos y esten justificados!🧐
No dudes en contribuir o informar problemas si encuentras alguna mejora o ajuste necesario.
Si usted tiene una sugerencia para mejorar el codigo, por favor indiquela de la siguiente forma:
- Idea en resumen: (Una explicacion breve en una linea)
- Variables involucradas en el cambio, ejemplo: (customChars,infoConfig,etc...)
- Aspecto que se mejora al cambiar el codigo, ejemplo:(seguridad, performance,legibilidad,acomplamiento,cohesion,etc...)
- Razon por la cual lo considera algo positivo (opcional, no necesario siempre): (explicacion personal)
- Propuesta: (una explicacion de que lo se propone)
Ejemplo: Este ejemplo es ficticio y no tiene un sentido practico es solo ilustrativo:
Usuario anonimo:
- Idea: Considero que no tiene sentido que haya caracteres predeterminados en minuscula y mayuscula.
-
Variables involucradas:
- characters.low
- characters.upp
- Aspecto que se mejora: decremento en cantidad de lineas de codigo.
- Razon positiva: Gracias a esto usted puede ahorrarse un monton de palabras innecesarias en su codigo
- Propuesta: La idea es que en vez de que haya dos grupos arreglos con caracteres uno en minusculas y otro en mayusculas, simplemente eliga uno y el otro lo transorme a mayusculas o minusculas segun la necesidad, de esta forma evita la necesidad de tener dos arrays con las mismas letras. ☺
Si usted encuentra un error en el codigo, por favor indiquelo de la siguiente forma:
- Nombre del error.
- Lugar del error.
- Devolucion de la consola.
- Comportamiento esperado.
Ejemplo: Este ejemplo es ficticio y no tiene un sentido practico es solo ilustrativo:
-
Nombre del error:
ReferenceError: asdfgh is not defined
-
Lugar del error:
console.log(MegaID({length:asdfgh,onlyCustom,repeat:no,customChars:[1234]}));
- Devolucion de la consola: `ReferenceError: asdfgh is not defined at Object. (c:\Users\usuario\Desktop\quick-id\logica.js:199:28) at Module._compile (node:internal/modules/cjs/loader:1256:14) at Module._extensions..js (node:internal/modules/cjs/loader:1310:10) at Module.load (node:internal/modules/cjs/loader:1119:32) at Module._load (node:internal/modules/cjs/loader:960:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:23:47
Node.js v18.16.1`
- Comportamiento esperado: Simplemente queria un ID que tenga los caracteres asdfgh mezclados de forma random.