Predstavujeme new-js-clock
Pred viac ako 15 rokmi som vydal malý jQuery plugin s názvom JS-Clock. Bol to priamočiary widget, ktorý vykresľoval tikajúce hodiny do DOM elementu — užitočný, jednoduchý a plne zodpovedajúci dobe svojho vzniku. Závisel od jQuery, mal niekoľko problémov s podporou viacerých inštancií a po tom prvom vydaní nebol nikdy zmysluplne aktualizovaný.
Dnes sa to mení. Vydávam new-js-clock 1.0.0 — prepis od základu v TypeScripte, ktorý zachováva ducha originálu a zároveň necháva za sebou každé jeho obmedzenie. Môžete ju vidieť v akcii na ukážkovej stránke.
Čo je nové vo verzii 1.0.0
Všetko, čo prinieslo toto vydanie:
- 🔒 TypeScript — Úplná typová bezpečnosť s komplexnými rozhraniami po celom kóde.
- 🌐 Sada testov E2E + jednotkových — Deterministické pokrytie Jest plus Selenium E2E testy v reálnych prehliadačoch, vrátane rozšírenej validácie správania na kartách na pozadí.
- 📦 Žiadne závislosti — Čistý vanilla JavaScript. Bez jQuery.
- 🐛 Opravy chýb — Podpora viacerých inštancií teraz funguje správne — to bol hlavný problém vo verzii 0.8.
- ⚡ Moderné API — Čisté, intuitívne API s vlastnými metódami inštancie na každých vytvorených hodinách.
- 🧪 Plne otestované — 162 deterministických testov Jest s pokrytím riadkov 99,74 %, pokrytím príkazov 99,02 %, pokrytím funkcií 100 % a pokrytím vetiev 98,32 %.
- 🐳 Dockerizovaná E2E sieť — Selenium Grid spúšťajúci headless Chrome, Firefox a Edge lokálne a v CI cez
pnpm run e2e:docker. - 📱 ES moduly — Importy ES Module s podporou tree-shaking, vedľa bundlov CommonJS a IIFE.
- 🌍 Časové pásma s podporou letného času — Podpora časových pásiem IANA s automatickým spracovaním letného času.
- ⏱️ Režim stopiek — Nové stopky počítajúce od 00:00:00.
- 🏁 Časy kôl a splitov — Zaznamenávajte časy kôl (delta) a kumulatívne časy (split) v režime stopiek.
- 📊 Najlepšie/najhoršie kolo — Vstavaná pomocné funkcie na nájdenie najrýchlejšieho a najpomalšieho kola v sedení.
- 🎯 Vysoké rozlíšenie časovania — Delty kôl merané cez
performance.now()s presnosťou na submilisekundu.
Inštalácia
npm install new-js-clock
# alebo
pnpm add new-js-clock K dispozícii aj cez CDN na priame použitie v prehliadači — pozrite si README pre odkazy na unpkg a jsDelivr.
Prečo to trvalo tak dlho?
Úprimne? Život. Pôvodný JS-Clock vznikol na žiadosť môjho zosnulého priateľa Gustava Beltrãa (vtedy majstra PHP, s ktorým som mal to privilégium pracovať viac ako raz) na použitie vo firemných interných dashboardoch a tiež na jednostránkových weboch pre podujatia s návštevníkmi z rôznych časových pásiem. Svoju úlohu plnil dostatočne dobre, takže sa nikdy nezdalo urgentné ho prepracovávať. Ale jQuery z moderných projektov dávno zmizol, TypeScript sa stal štandardom pre vývoj knižníc a bug s podporou viacerých inštancií ma vždy dráždil. Keď som si konečne sadol, aby som ho poriadne opravil, dávalo zmysel urobiť to poriadne — s typmi, testami, moderným modulovým systémom a dostatkom funkcií, aby bol skutočne užitočný v roku 2026. Navyše ju plánujem použiť vo svojom ďalšom komerčnom projekte.
Lepšie neskoro ako nikdy.
Jedinému Ježišovi Kristovi nech je sláva!