Præsenterer new-js-clock
For mere end 15 år siden udgav jeg et lille jQuery-plugin ved navn JS-Clock. Det var en enkel widget, der renderede et tikkende ur i et DOM-element — nyttigt, simpelt og fuldstændigt i takt med sin tid. Det var afhængigt af jQuery, havde nogle problemer med understøttelse af flere instanser og blev aldrig meningsfuldt opdateret efter den første udgivelse.
I dag ændrer det sig. Jeg udgiver new-js-clock 1.0.0 — en omskrivning fra bunden i TypeScript, der bevarer originalets ånd og efterlader enhver begrænsning bag sig. Du kan se det i aktion på demosiden.
Hvad er nyt i 1.0.0
Alt hvad der kom med denne udgivelse:
- 🔒 TypeScript — Fuld typesikkerhed med omfattende grænseflader i hele kodebasen.
- 🌐 E2E + enhedstestsuite — Deterministisk Jest-dækning plus Selenium E2E-browsertests, herunder udvidet validering af adfærd i baggrundsfaner.
- 📦 Nul afhængigheder — Ren vanilla JavaScript. Ingen jQuery påkrævet.
- 🐛 Fejlrettelser — Understøttelse af flere instanser fungerer nu korrekt — det var det største problem i version 0.8.
- ⚡ Moderne API — Et rent, intuitivt API med ordentlige instansmetoder på hvert oprettet ur.
- 🧪 Fuldt testet — 162 deterministiske Jest-tests med 99,74 % linjedækning, 99,02 % sætningsdækning, 100 % funktionsdækning og 98,32 % grensdækning.
- 🐳 Dockeriseret E2E-grid — Selenium Grid der kører headless Chrome, Firefox og Edge lokalt og i CI via
pnpm run e2e:docker. - 📱 ES-moduler — ES Module-imports med tree-shaking-understøttelse, ved siden af CommonJS- og IIFE-bundler.
- 🌍 DST-bevidste tidszoner — IANA-tidszoneunderstøttelse med automatisk håndtering af sommertid.
- ⏱️ Stopur-tilstand — Et nyt stopur der tæller op fra 00:00:00.
- 🏁 Omgangs- og splittider — Registrer omgangstider (delta) og kumulative tider (split) i stopur-tilstand.
- 📊 Bedste/værste omgang — Indbyggede hjælpefunktioner til at finde den hurtigste og langsomste omgang i en session.
- 🎯 Høj-opløsnings tidtagning — Omgangsdeltas målt via
performance.now()med submillisekundspræcision.
Installation
npm install new-js-clock
# eller
pnpm add new-js-clock Tilgængelig via CDN til direkte brug i browseren — se README for unpkg- og jsDelivr-links.
Hvorfor tog det så lang tid?
Ærligt? Livet. Den originale JS-Clock blev skrevet på opfordring fra min afdøde ven Gustavo Beltrão (en PHP-mester dengang, med hvem jeg havde privilegiet at arbejde mere end én gang) til brug i interne virksomhedsdashboards og på ensidede websites til events med besøgende fra forskellige tidszoner. Den udførte sit job godt nok til at det aldrig virkede presserende at gennemgå den. Men jQuery er for længst forsvundet fra moderne projekter, TypeScript er blevet standarden for biblioteksudvikling, og fejlen med understøttelse af flere instanser har altid generet mig. Da jeg endelig satte mig ned for at rette det ordentligt, gav det mening at gøre det rigtigt — med typer, tests, et moderne modulsystem og nok funktioner til at være genuint nyttigt i 2026. Jeg planlægger desuden at bruge det i mit næste kommercielle projekt.
Bedre sent end aldrig.
Jesus Kristus alene æren!