feat: amélioration majeure de la qualité du code et des tests - ajout de 20 nouveaux tests et fonctions utilitaires
This commit is contained in:
@@ -43,3 +43,63 @@ export function parseFooterMessage(message: string, repositoryUrl: string): { te
|
||||
|
||||
return { text: processedText, links };
|
||||
}
|
||||
|
||||
/**
|
||||
* Génère un slug à partir d'un titre
|
||||
*/
|
||||
export function generateSlug(title: string): string {
|
||||
return title
|
||||
.toLowerCase()
|
||||
.normalize('NFD')
|
||||
.replace(/[\u0300-\u036f]/g, '') // Supprime les accents
|
||||
.replace(/[^a-z0-9\s-]/g, '') // Garde seulement lettres, chiffres, espaces et tirets
|
||||
.replace(/\s+/g, '-') // Remplace les espaces par des tirets
|
||||
.replace(/-+/g, '-') // Remplace les tirets multiples par un seul
|
||||
.trim();
|
||||
}
|
||||
|
||||
/**
|
||||
* Génère un ID court aléatoire
|
||||
*/
|
||||
export function generateShortId(): string {
|
||||
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
||||
let result = '';
|
||||
for (let i = 0; i < 8; i++) {
|
||||
result += chars.charAt(Math.floor(Math.random() * chars.length));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formate un montant en euros
|
||||
*/
|
||||
export function formatCurrency(amount: number): string {
|
||||
return new Intl.NumberFormat('fr-FR', {
|
||||
style: 'currency',
|
||||
currency: 'EUR',
|
||||
}).format(amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* Formate une date
|
||||
*/
|
||||
export function formatDate(date: Date | string): string {
|
||||
const dateObj = typeof date === 'string' ? new Date(date) : date;
|
||||
return dateObj.toLocaleDateString('fr-FR');
|
||||
}
|
||||
|
||||
/**
|
||||
* Valide une adresse email
|
||||
*/
|
||||
export function validateEmail(email: string): boolean {
|
||||
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
return emailRegex.test(email);
|
||||
}
|
||||
|
||||
/**
|
||||
* Nettoie le HTML pour éviter les attaques XSS
|
||||
*/
|
||||
export function sanitizeHtml(html: string): string {
|
||||
// Supprime les balises dangereuses
|
||||
return html.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user