Presenterer new-js-clock
For mer enn 15 år siden publiserte jeg et lite jQuery-plugin kalt JS-Clock. Det var en enkel widget som renderte et tikkende ur i et DOM-element — nyttig, enkelt og helt i sin tids ånd. Det var avhengig av jQuery, hadde noen problemer med støtte for flere instanser og ble aldri meningsfullt oppdatert etter den første utgivelsen.
I dag endrer det seg. Jeg slipper new-js-clock 1.0.0 — en omskriving fra bunnen av i TypeScript som bevarer originalets ånd og legger igjen enhver begrensning. Du kan se det i aksjon på demosiden.
Hva er nytt i 1.0.0
Alt som kom med denne utgivelsen:
- 🔒 TypeScript — Full typesikkerhet med omfattende grensesnitt gjennom hele kodebasen.
- 🌐 E2E + enhetstestsuite — Deterministisk Jest-dekning pluss Selenium E2E-nettlesertester, inkludert utvidet validering av atferd i bakgrunnsfaner.
- 📦 Null avhengigheter — Ren vanilla JavaScript. Ingen jQuery påkrevd.
- 🐛 Feilrettinger — Støtte for flere instanser fungerer nå korrekt — det var det største problemet i versjon 0.8.
- ⚡ Moderne API — Et rent, intuitivt API med ordentlige instansmetoder på hvert opprettet ur.
- 🧪 Fullt testet — 162 deterministiske Jest-tester med 99,74 % linjedekning, 99,02 % setningsdekning, 100 % funksjonsdekning og 98,32 % greindekning.
- 🐳 Dockerisert E2E-grid — Selenium Grid som kjører headless Chrome, Firefox og Edge lokalt og i CI via
pnpm run e2e:docker. - 📱 ES-moduler — ES Module-importer med tree-shaking-støtte, ved siden av CommonJS- og IIFE-bunter.
- 🌍 DST-bevisste tidssoner — IANA-tidssone-støtte med automatisk håndtering av sommertid.
- ⏱️ Stoppeklokke-modus — En ny stoppeklokke som teller opp fra 00:00:00.
- 🏁 Rundetider og split — Registrer rundetider (delta) og kumulative tider (split) i stoppeklokke-modus.
- 📊 Beste/verste runde — Innebygde hjelpefunksjoner for å finne den raskeste og langsomste runden i en økt.
- 🎯 Høyoppløselig tidtaking — Rundedelta målt via
performance.now()med submillisekundspresisjon.
Installasjon
npm install new-js-clock
# eller
pnpm add new-js-clock Tilgjengelig via CDN for direkte bruk i nettleseren — se README for unpkg- og jsDelivr-lenker.
Hvorfor tok det så lang tid?
Ærlig talt? Livet. Den originale JS-Clock ble skrevet på forespørsel fra min avdøde venn Gustavo Beltrão (en PHP-mester på den tiden, med hvem jeg hadde privilegiet å jobbe mer enn én gang) for bruk i interne bedriftsdashboards og på enkeltside-nettsteder for arrangementer med besøkende fra forskjellige tidssoner. Den utførte jobben sin godt nok til at det aldri virket presserende å se den over. Men jQuery er for lengst forsvunnet fra moderne prosjekter, TypeScript har blitt standarden for biblioteksutvikling, og feilen med støtte for flere instanser har alltid irritert meg. Da jeg endelig satte meg ned for å fikse det ordentlig, ga det mening å gjøre det riktig — med typer, tester, et moderne modulsystem og nok funksjoner til å være genuint nyttig i 2026. Jeg planlegger dessuten å bruke det i mitt neste kommersielle prosjekt.
Bedre sent enn aldri.
Jesus Kristus alene æren!