@aqua-ds/web-components
Version:
AquaDS Web Components
25 lines (23 loc) • 880 B
JavaScript
class UniqueIdGenerator {
constructor(prefix = 'id') {
this.localCounter = 0; // Contador específico de la instancia
this.prefix = prefix; // Permite personalizar el formato del ID
}
/**
* Genera un ID único basado en un contador interno y global
* @returns {string} Un ID único
*/
generateId() {
// Incrementa el contador global y el local
UniqueIdGenerator.globalCounter++;
this.localCounter++;
// Retorna el ID único con el prefijo
return `${this.prefix}-${Date.now()}-${UniqueIdGenerator.globalCounter}-${this.localCounter}`;
}
assignIdToObject(obj, idKey) {
const id = this.generateId();
return { ...obj, [idKey]: id };
}
}
UniqueIdGenerator.globalCounter = 0; // Contador global para asegurar unicidad entre instancias
export { UniqueIdGenerator as U };