Predstavljamo new-js-clock

Prije više od 15 godina objavio sam mali jQuery plugin nazvan JS-Clock. Bio je to jednostavan widget koji je prikazivao sat koji otkucava unutar DOM elementa — koristan, jednostavan i sasvim u duhu svog vremena. Ovisio je o jQuery, imao je nekoliko problema s podrškom za višestruke instance i nikada nije bio smisleno ažuriran nakon tog prvog izdanja.

Danas se to mijenja. Objavljujem new-js-clock 1.0.0 — potpuno prepisanu verziju u TypeScriptu koja čuva duh originala ostavljajući iza sebe svako njegovo ograničenje. Možete je vidjeti u akciji na demo stranici.

Što je novo u 1.0.0

Sve što je stiglo u ovom izdanju:

  • 🔒 TypeScript — Potpuna sigurnost tipova sa sveobuhvatnim sučeljima diljem cijelog koda.
  • 🌐 Paket testova E2E + jediničnih — Deterministička pokrivenost Jestom plus Selenium E2E testovi u pravim preglednicima, uključujući proširenu provjeru ponašanja na karticama u pozadini.
  • 📦 Nula ovisnosti — Čisti vanilla JavaScript. Bez jQuery.
  • 🐛 Ispravci grešaka — Podrška za višestruke instance sada funkcionira ispravno — to je bio glavni problem u verziji 0.8.
  • Moderno API — Čisto, intuitivno API s ispravnim metodama instance na svakom stvorenom satu.
  • 🧪 Potpuno testirano — 162 deterministička Jest testa s pokrivenošću linija 99,74 %, pokrivenošću naredbi 99,02 %, pokrivenošću funkcija 100 % i pokrivenošću grana 98,32 %.
  • 🐳 Dockerizirana E2E mreža — Selenium Grid koji pokreće headless Chrome, Firefox i Edge lokalno i u CI putem pnpm run e2e:docker.
  • 📱 ES moduli — Uvozi ES Module s podrškom za tree-shaking, zajedno s CommonJS i IIFE bundlovima.
  • 🌍 Vremenske zone svjesne ljetnog računanja vremena — Podrška za IANA vremenske zone s automatskim upravljanjem ljetnim računanjem vremena.
  • ⏱️ Način rada štoperice — Nova štoperica koja broji od 00:00:00.
  • 🏁 Vremena krugova i splitova — Bilježite vremena krugova (delta) i kumulativna vremena (split) u načinu rada štoperice.
  • 📊 Najbolji/najlošiji krug — Ugrađene pomoćne funkcije za pronalazak najbržeg i najsporijeg kruga u sesiji.
  • 🎯 Vremenski mjerač visoke rezolucije — Delte krugova mjerene putem performance.now() s preciznošću ispod milisekunde.

Instalacija

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

Dostupno i putem CDN-a za izravnu upotrebu u pregledniku — pogledajte README za unpkg i jsDelivr poveznice.

Zašto je to potrajalo toliko dugo?

Iskreno? Život. Originalni JS-Clock napisan je na zahtjev mog pokojnog prijatelja Gustava Beltrãa (tadašnjeg majstora PHP-a, s kojim sam imao privilegij raditi više od jedanput) za korištenje u internim korporativnim dashboardima i na jednostraničnim web stranicama za događaje s posjetiteljima iz različitih vremenskih zona. Obavljao je svoju ulogu dovoljno dobro da nikad nije izgledalo hitnim revidirati ga. No jQuery je već odavno nestao iz modernih projekata, TypeScript je postao standard za razvoj biblioteka, a greška s podrškom za višestruke instance me uvijek gnjavila. Kad sam se konačno sjeo da je ispravim kako valja, imalo je smisla učiniti to dobro — s tipovima, testovima, modernim modulnim sustavom i dovoljno značajki da bude istinski koristan u 2026. Uz to, planiram je koristiti u svom sljedećem komercijalnom projektu.

Bolje ikad nego nikad.

Jedino Isusu Kristu slava!