refactor(front) : extrait debounce dans shared/utils + tests Vitest

T-013 — sort la fonction debounce inline de audit-log.vue vers
frontend/shared/utils/debounce.ts (auto-importe par Nuxt) et ajoute
3 tests Vitest (delay coalesce, derniere invocation gagne, plusieurs
executions espacees). Pret pour reutilisation sur les prochaines
pages avec recherche/filtres.
This commit is contained in:
Matthieu
2026-04-23 11:46:13 +02:00
parent da35f29960
commit 4c142aecbb
3 changed files with 70 additions and 10 deletions

View File

@@ -301,16 +301,9 @@ async function loadEntries(): Promise<void> {
}
}
// Debounce utilitaire pour le champ texte performedBy : evite un refetch a
// chaque frappe (reseau + SQL) et laisse l'utilisateur finir sa saisie.
function debounce<T extends (...args: never[]) => void>(fn: T, delay: number): T {
let timer: ReturnType<typeof setTimeout> | null = null
return ((...args: Parameters<T>) => {
if (null !== timer) clearTimeout(timer)
timer = setTimeout(() => fn(...args), delay)
}) as T
}
// Debounce auto-importe depuis `frontend/shared/utils/debounce.ts` : evite
// un refetch a chaque frappe sur le champ texte performedBy (reseau + SQL)
// et laisse l'utilisateur finir sa saisie avant de lancer la requete.
const debouncedReload = debounce(() => loadEntries(), 300)
function toIso(localDateTime: string): string {