Node's Perpetuum Mobile

    time-fast-forward
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.3 • Public • Published

    time-fast-forward

    npm GitHub GitHub Workflow Status Codecov

    Control the system time (Date, hrtime) in your tests, without freezing it (unlike in many other libraries).

    Mock date and time both in NodeJS and web applications. Supports typescript.

    Installation

    npm install --save-dev time-fast-forward

    Examples

    import { jumpToTime, shiftTimeBy, resetTime } from 'time-fast-forward';
     
    console.log(new Date());                      // -> Sat Sep 12 2020 01:18:21
     
    // Add one hour to the current clock
    shiftTimeBy(60 * 60 * 1000);
    console.log(new Date());                      // -> Sat Sep 12 2020 02:18:21
     
    // Shift -2 hours from now (-1 hour from the original time in this example)
    shiftTimeBy(-2 * 60 * 60 * 1000);
    console.log(new Date());                      // -> Sat Sep 12 2020 00:18:21
     
    // Jump to a given date and time. Mind when providing anything relative here
    jumpToTime("Fri, 11 Sep 2022 22:26:43 GMT");  // jumpToTime(2020, 1, 3), etc
    console.log(new Date());                      // -> Fri Sep 11 2022 22:26:43
     
    resetTime();                                  // Get back to the normal time
    console.log(new Date());                      // -> Sat Sep 12 2020 01:18:21

    This library can also potentially support time freezing, PRs for this are welcome:

    console.log(new Date());                      // -> Sat Sep 12 2020 01:18:21
                                                  //         note seconds here ^
    setTimeout(() => {
      console.log(new Date());                    // -> Sat Sep 12 2020 01:18:22
                                                  //     time is still ticking ^
      
      // Not implemented yet: PRs are welcome!
      freezeTime();
     
      setTimeout(() => {
        console.log(new Date());                  // -> Sat Sep 12 2020 01:18:22
                                                  //        now time is frozen ^
     
        // Not implemented yet: PRs are welcome!
        unfreezeTime();
        console.log(new Date());                  // -> Sat Sep 12 2020 01:18:22
                                                  // now at +1s from real time ^
     
        resetTime();
        console.log(new Date());                  // -> Sat Sep 12 2020 01:18:21
                                                  // back to the normal time!  ^
      }, 1000);
    }, 1000);

    License

    MIT © Nikita Savchenko

    Install

    npm i time-fast-forward

    DownloadsWeekly Downloads

    144

    Version

    1.0.3

    License

    MIT

    Unpacked Size

    9.07 kB

    Total Files

    7

    Last publish

    Collaborators

    • zitro