Presenterar new-js-clock
För mer än 15 år sedan publicerade jag ett litet jQuery-plugin vid namn JS-Clock. Det var en enkel widget som renderade ett tickande ur i ett DOM-element — användbart, enkelt och helt i sin tids anda. Det var beroende av jQuery, hade en del problem med stöd för flera instanser och uppdaterades aldrig på ett meningsfullt sätt efter den första utgåvan.
Idag förändras det. Jag släpper new-js-clock 1.0.0 — en från grunden omskriven TypeScript-version som bevarar originalets anda och lämnar varje begränsning bakom sig. Du kan se den i aktion på demosidan.
Vad är nytt i 1.0.0
Allt som kom med den här utgåvan:
- 🔒 TypeScript — Full typsäkerhet med heltäckande gränssnitt i hela kodbasen.
- 🌐 E2E- och enhetstestsvit — Deterministisk Jest-täckning plus Selenium E2E-webbläsartester, inklusive utökad validering av beteende i bakgrundsflikar.
- 📦 Noll beroenden — Ren vanilla JavaScript. Ingen jQuery krävs.
- 🐛 Felrättningar — Stöd för flera instanser fungerar nu korrekt — det var det största problemet i version 0.8.
- ⚡ Modernt API — Ett rent, intuitivt API med riktiga instansmetoder på varje skapat ur.
- 🧪 Fullt testat — 162 deterministiska Jest-tester med 99,74 % radtäckning, 99,02 % satsvisetäckning, 100 % funktionstäckning och 98,32 % grenttäckning.
- 🐳 Dockeriserat E2E-grid — Selenium Grid som kör headless Chrome, Firefox och Edge lokalt och i CI via
pnpm run e2e:docker. - 📱 ES-moduler — ES Module-importer med tree-shaking-stöd, tillsammans med CommonJS- och IIFE-buntar.
- 🌍 DST-medvetna tidszoner — IANA-tidszonsstöd med automatisk hantering av sommartid.
- ⏱️ Stoppsurläge — En ny stoppsur som räknar uppåt från 00:00:00.
- 🏁 Varv- och splitttider — Registrera varvtider (delta) och kumulativa tider (split) i stoppsurläge.
- 📊 Bästa/sämsta varv — Inbyggda hjälpfunktioner för att hitta det snabbaste och långsammaste varvet i en session.
- 🎯 Högupplöst tidtagning — Varvdeltan mätta via
performance.now()med submillisekundsprecision.
Installation
npm install new-js-clock
# eller
pnpm add new-js-clock Finns också via CDN för direkt användning i webbläsaren — se README för unpkg- och jsDelivr-länkarna.
Varför dröjde det så länge?
Ärligt talat? Livet. Det ursprungliga JS-Clock skrevs på begäran av min bortgångne vän Gustavo Beltrão (en PHP-mästare på den tiden, med vilken jag hade förmånen att arbeta mer än en gång) för att användas i interna företagsdashboards och på ensidiga webbplatser för evenemang med besökare från olika tidszoner. Det utförde sitt jobb tillräckligt bra för att det aldrig verkade brådskande att se över det. Men jQuery har länge försvunnit från moderna projekt, TypeScript har blivit standard för biblioteksutveckling och felet med stöd för flera instanser har alltid stört mig. När jag äntligen satte mig ner för att fixa det ordentligt gav det mening att göra det rätt — med typer, tester, ett modernt modulsystem och tillräckligt med funktioner för att vara genuint användbart 2026. Jag planerar dessutom att använda det i mitt nästa kommersiella projekt.
Bättre sent än aldrig.
Jesus Kristus allena äre!