new-js-clock Tanıtımı
15 yılı aşkın bir süre önce JS-Clock adlı küçük bir jQuery eklentisi yayımladım. Bu, bir DOM öğesi içinde tik taklayan bir saat gösteren sade bir widget’tı — kullanışlı, basit ve tamamen kendi döneminin ürünüydü. jQuery’ye bağımlıydı, çoklu örnek desteğinde bazı sorunları vardı ve o ilk sürümden sonra hiçbir zaman anlamlı biçimde güncellenmedi.
Bugün bu değişiyor. new-js-clock 1.0.0‘ı yayımlıyorum — orijinalin ruhunu korurken her sınırlamasını geride bırakan, sıfırdan TypeScript ile yazılmış bir sürüm. Projeyi demo sayfasında eylemde görebilirsiniz.
1.0.0’daki Yenilikler
Bu sürümde gelen her şey:
- 🔒 TypeScript — Kod tabanının tamamında kapsamlı arayüzlerle tam tür güvenliği.
- 🌐 E2E + Birim Test Paketi — Deterministik Jest kapsamının yanı sıra gerçek tarayıcılarda Selenium E2E testleri; arka plan sekme davranışının genişletilmiş doğrulaması dahil.
- 📦 Sıfır Bağımlılık — Saf vanilla JavaScript. jQuery gerekmez.
- 🐛 Hata Düzeltmeleri — Çoklu örnek desteği artık doğru çalışıyor; bu 0.8 sürümündeki temel sorundu.
- ⚡ Modern API — Oluşturulan her saatte uygun örnek yöntemleriyle temiz ve sezgisel bir API.
- 🧪 Tam Kapsamlı Test — %99,74 satır kapsamı, %99,02 deyim kapsamı, %100 fonksiyon kapsamı ve %98,32 dal kapsamıyla 162 deterministik Jest testi.
- 🐳 Dockerize E2E Grid —
pnpm run e2e:dockeraracılığıyla yerel ortamda ve CI’da headless Chrome, Firefox ve Edge çalıştıran Selenium Grid. - 📱 ES Modülleri — Tree-shaking desteğiyle ES Module içe aktarmaları; CommonJS ve IIFE paketleriyle birlikte.
- 🌍 DST’ye Duyarlı Saat Dilimleri — Otomatik yaz saati uygulaması yönetimiyle IANA saat dilimi desteği.
- ⏱️ Kronometre Modu — 00:00:00’dan yukarıya sayan yeni bir kronometre.
- 🏁 Tur ve Split Süreleri — Kronometre modunda tur sürelerini (delta) ve birikimli süreleri (split) kaydedin.
- 📊 En İyi/En Kötü Tur — Bir oturumdaki en hızlı ve en yavaş turu bulmak için yerleşik yardımcı fonksiyonlar.
- 🎯 Yüksek Çözünürlüklü Zamanlama —
performance.now()ile milisaniyenin altında hassasiyetle ölçülen tur deltaları.
Kurulum
npm install new-js-clock
# veya
pnpm add new-js-clock Doğrudan tarayıcıda kullanım için CDN üzerinden de erişilebilir — unpkg ve jsDelivr bağlantıları için README dosyasını inceleyin.
Neden Bu Kadar Uzun Sürdü?
Dürüstçe? Hayat. Orijinal JS-Clock, merhum arkadaşım Gustavo Beltrão’nun (o dönem gerçek bir PHP ustası olup birden fazla kez birlikte çalışma ayrıcalığı bulduğum kişi) isteği üzerine; kurumsal iç panolarda ve farklı saat dilimlerinden katılımcıların bulunduğu etkinliklere yönelik tek sayfalık web sitelerinde kullanılmak üzere yazılmıştı. Görevini yeterince iyi yerine getirdi; bu yüzden üzerinde çalışmak hiç acil gelmedi. Ancak jQuery modern projelerden çoktan çekilip gitti, TypeScript kütüphane geliştirmenin standardı hâline geldi ve çoklu örnek desteğindeki hata beni hep rahatsız etti. Sonunda düzgünce düzeltmeye oturduğumda, bunu doğru yapmak anlamlıydı — türlerle, testlerle, modern bir modül sistemiyle ve 2026’da gerçekten işe yarayacak kadar özellikle. Üstelik bir sonraki ticari projemde kullanmayı planlıyorum.
Geç olsun güç olmasın.
Yalnız İsa Mesih’e olsun şan ve şeref!