Tutvustame new-js-clock

Enam kui 15 aastat tagasi avaldasin väikese jQuery pistikprogrammi nimega JS-Clock. See oli lihtne vidin, mis kuvab tiksuvat kella DOM-elemendis — kasulik, lihtne ja täiesti oma aja vaim. See sõltus jQuery-st, sellel oli mõningaid probleeme mitmete eksemplaride toega ja seda ei uuendatud pärast esimest väljalaset kunagi sisuliselt.

Täna see muutub. Avaldan new-js-clock 1.0.0 — nullist TypeScript-is ümberkirjutatud versiooni, mis säilitab originaali vaimu jättes iga piirangu selja taha. Saate seda tegevuses näha demoleheküljel.

Mis on uut versioonis 1.0.0

Kõik, mis selle väljalasega kaasas tuli:

  • 🔒 TypeScript — Täielik tüübiohutus kõikehõlmavate liidestega kogu koodialuses.
  • 🌐 E2E + ühiktestide komplekt — Deterministlik Jest-katvus pluss Selenium E2E brauseri testid, sealhulgas laiendatud taustakaartide käitumise valideerimine.
  • 📦 Null sõltuvusi — Puhas vanilla JavaScript. jQuery pole vajalik.
  • 🐛 Veaparandused — Mitme eksemplari tugi töötab nüüd õigesti — see oli peamine probleem versioonis 0.8.
  • Kaasaegne API — Puhas, intuitiivne API õigete eksemplarimeetoditega igal loodud kellal.
  • 🧪 Täielikult testitud — 162 deterministlikku Jest-testi 99,74 % ridade katvusega, 99,02 % lausete katvusega, 100 % funktsioonide katvusega ja 98,32 % harude katvusega.
  • 🐳 Dockeriseeritud E2E võrgustik — Selenium Grid, mis käitab headless Chrome’i, Firefoxi ja Edge’i lokaalselt ja CI-s käsuga pnpm run e2e:docker.
  • 📱 ES moodulid — ES Module impordid tree-shaking toega, CommonJS ja IIFE pakettide kõrval.
  • 🌍 DST-teadlikud ajavööndid — IANA ajavööndi tugi automaatse suveaja käsitlusega.
  • ⏱️ Stopperrežiim — Uus stopper, mis loeb alates 00:00:00.
  • 🏁 Ringide ja split-ajad — Salvestage ringide ajad (delta) ja kumulatiivsed ajad (split) stopperrežiimis.
  • 📊 Parim/halvim ring — Sisseehitatud abifunktsioonid kiireima ja aeglaseima ringi leidmiseks sessioonis.
  • 🎯 Kõrge eraldusvõimega ajastamine — Ringide deltas mõõdetud performance.now() kaudu millisekundist väiksema täpsusega.

Paigaldamine

npm install new-js-clock
# või
pnpm add new-js-clock

Saadaval ka CDN kaudu otse brauseris kasutamiseks — vaadake README unpkg ja jsDelivr linkide jaoks.

Miks see nii kaua aega võttis?

Ausalt? Elu. Algne JS-Clock kirjutati minu lahkunud sõbra Gustavo Beltrão palvel (toona tõeline PHP meister, kellega mul oli au töötada rohkem kui ühel korral) ettevõtete sisemistes armatuurlaudades ja üheleheküljelistes veebisaitides üritustele külastajatega erinevatest ajavöönditest kasutamiseks. See täitis oma ülesannet piisavalt hästi, et seda polnud kunagi kiireloomuline üle vaadata. Kuid jQuery on juba ammu modernsest projektidest kadunud, TypeScript on saanud teekide arendamise standardiks ja viga mitme eksemplari toega häiris mind alati. Kui lõpuks istusin seda korralikult parandama, oli mõistlik seda õigesti teha — tüüpide, testide, kaasaegse moodulisüsteemi ja piisavalt funktsioonidega, et olla 2026. aastal tõeliselt kasulik. Lisaks plaanin seda kasutada oma järgmises äriprojektis.

Parem hilja kui mitte kunagi.

Ainuüksi Jeesus Kristusele olgu au!