Apresentando o new-js-clock
Há mais de 15 anos publiquei um pequeno plugin jQuery chamado JS-Clock. Era um widget direto ao ponto que renderizava um relógio em tick-tack dentro de um elemento do DOM — útil, simples, e completamente do seu tempo. Dependia da jQuery, tinha alguns problemas com suporte a múltiplas instâncias, e nunca foi atualizado de forma significativa após aquele lançamento inicial.
Hoje isso muda. Estou lançando a biblioteca new-js-clock 1.0.0 — uma reescrita completa em TypeScript que preserva o espírito do plugin original enquanto deixa para trás cada uma de suas limitações. Você pode vê-la em ação na página de demonstração.
O que há de novo na v1.0.0
Tudo o que chegou nesta versão:
- 🔒 TypeScript — Tipagem completa com interfaces abrangentes em todo o código.
- 🌐 Suite de Testes E2E + Unitários — Cobertura determinística com Jest mais testes E2E com Selenium em navegadores reais, incluindo validação de comportamento em abas em segundo plano.
- 📦 Zero Dependências — JavaScript puro. Sem jQuery.
- 🐛 Correções de Bugs — O suporte a múltiplas instâncias agora funciona corretamente, que era o principal problema na v0.8.
- ⚡ API Moderna — Uma API limpa e intuitiva com métodos de instância próprios em cada relógio criado.
- 🧪 Totalmente Testado — 162 testes Jest determinísticos com 99,74% de cobertura de linhas, 99,02% de cobertura de instruções, 100% de cobertura de funções e 98,32% de cobertura de branches.
- 🐳 Grid E2E Dockerizado — Selenium Grid rodando Chrome, Firefox e Edge headless localmente e em CI via
pnpm run e2e:docker. - 📱 ES Modules — Imports ES Module com suporte a tree-shaking, acompanhados de bundles CommonJS e IIFE.
- 🌍 Fusos Horários com Suporte a Horário de Verão — Suporte a fusos IANA com tratamento automático do horário de verão.
- ⏱️ Modo Cronômetro — Um novo cronômetro que conta a partir de 00:00:00.
- 🏁 Tempos de Volta e Split — Registre tempos de volta (delta) e tempos acumulados (split) no modo cronômetro.
- 📊 Melhor/Pior Volta — Funções auxiliares nativas para encontrar a volta mais rápida e a mais lenta de uma sessão.
- 🎯 Temporização de Alta Resolução — Deltas de volta medidos via
performance.now()com precisão submilissegundo.
Instalação
npm install new-js-clock
# ou
pnpm add new-js-clock Também está disponível via CDN para uso direto no navegador — consulte o README para os links do unpkg e jsDelivr.
Por que demorou tanto?
Honestamente? A vida. O JS-Clock original foi escrito por conta de um pedido do meu saudoso amigo Gustavo Beltrão (um mestre em PHP naquela época, com quem tive o privilégio de trabalhar em mais de uma ocasião) para ser usado em dashboards internos corporativos e também em sites de página única para eventos com visitantes de diferentes fusos horários. Ele cumpriu bem o seu papel, então nunca pareceu urgente revisitá-lo. Mas o jQuery há muito ficou para trás nos projetos modernos, o TypeScript se tornou o padrão para desenvolvimento de bibliotecas, e o bug de suporte a múltiplas instâncias sempre me incomodou. Quando finalmente sentei para corrigi-lo de forma adequada, fez sentido fazer direito — com tipos, testes, um sistema de módulos moderno e funcionalidades suficientes para ser genuinamente útil em 2026. Aliás, pretendo usá-la no meu próximo projeto comercial.
Antes tarde do que nunca.
A Jesus Cristo seja toda a glória!