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!