hand-waveIntroduction

@nestjstools/clock

Time abstraction for NestJS

In most applications, time is everywhere:

  • timestamps

  • expiration logic

  • domain rules

  • logging

  • validations

  • comparisons

But calling new Date() directly inside your business logic makes your system:

  • Hard to test

  • Non-deterministic

  • Infrastructure-coupled

  • Difficult to reason about

@nestjstools/clock solves this by introducing a clean abstraction over time.

Why use Clock?

Instead of:

You write:

And now:

  • You can inject time

  • You can freeze time in tests

  • You remove infrastructure concerns from your domain layer

The Problem with new Date()

Direct system time usage:

Creates:

  • Hidden side effects

  • Hard-to-test services

  • Unpredictable unit tests

  • Tight coupling to system clock

Time is infrastructure — it should be abstracted.


The Solution: IClock

Clock introduces a simple interface:

This allows you to:

  • Inject system time

  • Replace time in tests

Last updated

Was this helpful?