Prezentăm new-js-clock
Acum mai bine de 15 ani am publicat un mic plugin jQuery numit JS-Clock. Era un widget simplu care reda un ceas care ticăia într-un element DOM — util, simplu și complet în spiritul vremii. Se baza pe jQuery, avea câteva probleme cu suportul pentru instanțe multiple și nu a mai fost actualizat în mod semnificativ după acel prim release.
Astăzi asta se schimbă. Lansez new-js-clock 1.0.0 — o rescriere completă în TypeScript care păstrează spiritul originalului lăsând în urmă fiecare dintre limitările sale. Îl poți vedea în acțiune pe pagina demo.
Ce este nou în 1.0.0
Tot ce a adus acest release:
- 🔒 TypeScript — Siguranță completă a tipurilor cu interfețe cuprinzătoare în întregul cod.
- 🌐 Suite de teste E2E + unitare — Acoperire Jest deterministă plus teste Selenium E2E în browsere reale, inclusiv validarea extinsă a comportamentului în filele de fundal.
- 📦 Zero dependențe — JavaScript vanilla pur. Fără jQuery.
- 🐛 Remedieri de erori — Suportul pentru instanțe multiple funcționează acum corect — aceasta era principala problemă în versiunea 0.8.
- ⚡ API modern — Un API curat și intuitiv cu metode proprii de instanță pe fiecare ceas creat.
- 🧪 Complet testat — 162 de teste Jest deterministe cu acoperire de linii de 99,74 %, acoperire de instrucțiuni de 99,02 %, acoperire de funcții de 100 % și acoperire de ramuri de 98,32 %.
- 🐳 Grilă E2E Dockerizată — Selenium Grid rulând Chrome, Firefox și Edge în mod headless local și în CI prin
pnpm run e2e:docker. - 📱 Module ES — Importuri ES Module cu suport pentru tree-shaking, alături de bundle-uri CommonJS și IIFE.
- 🌍 Zone orare cu suport DST — Suport pentru zone orare IANA cu gestionare automată a orei de vară.
- ⏱️ Modul cronometru — Un nou cronometru care numără de la 00:00:00.
- 🏁 Timpi de tură și split — Înregistrează timpi de tură (delta) și timpi cumulativi (split) în modul cronometru.
- 📊 Cel mai bun/cel mai rău tur — Funcții auxiliare încorporate pentru a găsi cel mai rapid și cel mai lent tur dintr-o sesiune.
- 🎯 Temporizare de înaltă rezoluție — Deltele turelor măsurate prin
performance.now()cu precizie sub milisecundă.
Instalare
npm install new-js-clock
# sau
pnpm add new-js-clock Disponibil și prin CDN pentru utilizare directă în browser — consultați README pentru linkurile unpkg și jsDelivr.
De ce a durat atât de mult?
Sincer? Viața. JS-Clock-ul original a fost scris la cererea defunctului meu prieten Gustavo Beltrão (un maestru PHP pe atunci, cu care am avut privilegiul să lucrez de mai multe ori) pentru a fi utilizat în dashboard-uri interne corporative și pe site-uri cu o singură pagină pentru evenimente cu vizitatori din diferite zone orare. Și-a îndeplinit misiunea suficient de bine cât să nu pară urgent să-l revizuiesc. Dar jQuery a dispărut de mult din proiectele moderne, TypeScript a devenit standardul pentru dezvoltarea de biblioteci, iar bug-ul legat de suportul pentru instanțe multiple m-a deranjat mereu. Când m-am așezat în cele din urmă să-l repar cum trebuie, a avut sens să o fac bine — cu tipuri, teste, un sistem modern de module și suficiente funcționalități ca să fie cu adevărat util în 2026. Și plănuiesc să o folosesc în următorul meu proiect comercial.
Mai bine târziu decât niciodată.
Numai lui Isus Hristos fie slava!