Présentation de new-js-clock

Il y a plus de 15 ans, j’ai publié un petit plugin jQuery appelé JS-Clock. C’était un widget simple qui affichait une horloge animée dans un élément du DOM — utile, simple, et entièrement de son époque. Il dépendait de jQuery, présentait quelques problèmes de support multi-instances, et n’a jamais été mis à jour de façon significative après cette première sortie.

Aujourd’hui, cela change. Je publie new-js-clock 1.0.0 — une réécriture complète en TypeScript qui préserve l’esprit de l’original tout en laissant derrière lui chacune de ses limitations. Vous pouvez la voir en action sur la page de démonstration.

Quoi de neuf dans 1.0.0

Tout ce qui a été introduit dans cette version :

  • 🔒 TypeScript — Typage complet avec des interfaces exhaustives dans tout le code.
  • 🌐 Suite de tests E2E + unitaires — Couverture Jest déterministe et tests E2E Selenium sur navigateurs réels, y compris la validation étendue du comportement en onglet arrière-plan.
  • 📦 Zéro dépendance — JavaScript vanilla pur. Plus besoin de jQuery.
  • 🐛 Corrections de bugs — Le support multi-instances fonctionne désormais correctement, ce qui était le principal problème dans la version 0.8.
  • API moderne — Une API propre et intuitive avec des méthodes d’instance propres sur chaque horloge créée.
  • 🧪 Entièrement testé — 162 tests Jest déterministes avec 99,74 % de couverture de lignes, 99,02 % de couverture d’instructions, 100 % de couverture de fonctions et 98,32 % de couverture de branches.
  • 🐳 Grid E2E Dockerisé — Selenium Grid exécutant Chrome, Firefox et Edge en mode headless localement et en CI via pnpm run e2e:docker.
  • 📱 ES Modules — Imports ES Module avec support du tree-shaking, accompagnés de bundles CommonJS et IIFE.
  • 🌍 Fuseaux horaires avec gestion de l’heure d’été — Support des fuseaux IANA avec gestion automatique de l’heure d’été.
  • ⏱️ Mode chronomètre — Un nouveau chronomètre qui compte à partir de 00:00:00.
  • 🏁 Temps de tour et split — Enregistrez des temps de tour (delta) et des temps cumulés (split) en mode chronomètre.
  • 📊 Meilleur/Pire tour — Fonctions utilitaires intégrées pour trouver le tour le plus rapide et le plus lent d’une session.
  • 🎯 Timing haute résolution — Deltas de tour mesurés via performance.now() pour une précision submilliseconde.

Installation

npm install new-js-clock
# ou
pnpm add new-js-clock

Également disponible via CDN pour une utilisation directe dans le navigateur — consultez le README pour les liens unpkg et jsDelivr.

Pourquoi ça a pris si longtemps ?

Honnêtement ? La vie. Le JS-Clock original a été écrit à la demande de mon regretté ami Gustavo Beltrão (un maître en PHP à l’époque, avec qui j’ai eu le privilège de travailler à plus d’une occasion) pour être utilisé dans des tableaux de bord internes d’entreprise et dans des sites d’une seule page pour des événements accueillant des visiteurs de différents fuseaux horaires. Il a accompli sa mission suffisamment bien pour qu’il n’ait jamais paru urgent de le revoir. Mais jQuery a depuis longtemps quitté le devant de la scène dans les projets modernes, TypeScript est devenu le standard pour le développement de bibliothèques, et le bug du support multi-instances m’a toujours agacé. Quand j’ai finalement décidé de le corriger correctement, il semblait logique de le faire bien — avec des types, des tests, un système de modules moderne et suffisamment de fonctionnalités pour être genuinement utile en 2026. J’ai d’ailleurs l’intention de l’utiliser dans mon prochain projet commercial.

Mieux vaut tard que jamais.

À Jésus-Christ seul soit la gloire !