Představujeme new-js-clock
Před více než 15 lety jsem vydal malý jQuery plugin s názvem JS-Clock. Byl to přímočarý widget, který vykresloval tikající hodiny do DOM elementu — užitečný, jednoduchý a plně odpovídající době svého vzniku. Závisel na jQuery, měl několik problémů s podporou více instancí a po tom prvním vydání nebyl nikdy smysluplně aktualizován.
Dnes se to mění. Vydávám new-js-clock 1.0.0 — přepis od základu v TypeScriptu, který zachovává ducha originálu a přitom nechává za sebou každé jeho omezení. Můžete ji vidět v akci na ukázkové stránce.
Co je nového ve verzi 1.0.0
Vše, co přineslo toto vydání:
- 🔒 TypeScript — Úplná typová bezpečnost s komplexními rozhraními po celém kódu.
- 🌐 Sada testů E2E + jednotkových — Deterministické pokrytí Jest plus Selenium E2E testy v reálných prohlížečích, včetně rozšířené validace chování na kartách na pozadí.
- 📦 Žádné závislosti — Čistý vanilla JavaScript. Bez jQuery.
- 🐛 Opravy chyb — Podpora více instancí nyní funguje správně — to byl hlavní problém ve verzi 0.8.
- ⚡ Moderní API — Čisté, intuitivní API s vlastními metodami instance na každých vytvořených hodinách.
- 🧪 Plně otestováno — 162 deterministických testů Jest s pokrytím řádků 99,74 %, pokrytím příkazů 99,02 %, pokrytím funkcí 100 % a pokrytím větví 98,32 %.
- 🐳 Dockerizovaná E2E mřížka — Selenium Grid spouštějící headless Chrome, Firefox a Edge lokálně a v CI přes
pnpm run e2e:docker. - 📱 ES moduly — Importy ES Module s podporou tree-shaking, vedle bundlů CommonJS a IIFE.
- 🌍 Časová pásma s podporou letního času — Podpora časových pásem IANA s automatickým zpracováním letního času.
- ⏱️ Režim stopek — Nové stopky počítající od 00:00:00.
- 🏁 Časy kol a splitů — Zaznamenávejte časy kol (delta) a kumulativní časy (split) v režimu stopek.
- 📊 Nejlepší/nejhorší kolo — Vestavěné pomocné funkce pro nalezení nejrychlejšího a nejpomalejšího kola v sezení.
- 🎯 Vysoké rozlišení časování — Delty kol měřené přes
performance.now()s přesností na submilisekundu.
Instalace
npm install new-js-clock
# nebo
pnpm add new-js-clock K dispozici také přes CDN pro přímé použití v prohlížeči — podívejte se do README pro odkazy na unpkg a jsDelivr.
Proč to trvalo tak dlouho?
Upřímně? Život. Původní JS-Clock vznikl na žádost mého zesnulého přítele Gustava Beltrãa (tehdy mistra PHP, se kterým jsem měl to privilegium pracovat více než jednou) pro použití ve firemních interních dashboardech a také na jednostránkových webech pro akce s návštěvníky z různých časových pásem. Svůj úkol plnil dostatečně dobře, takže se nikdy nezdálo urgentní ho přepracovávat. Ale jQuery z moderních projektů dávno vymizel, TypeScript se stal standardem pro vývoj knihoven a bug s podporou více instancí mě vždy dráždil. Když jsem si konečně sedl, abych ho pořádně opravil, dávalo smysl udělat to pořádně — s typy, testy, moderním modulovým systémem a dostatkem funkcí, aby byl skutečně užitečný v roce 2026. Navíc ji plánuji použít ve svém příštím komerčním projektu.
Lépe pozdě než nikdy.
Jedině Ježíši Kristu buď sláva!