Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

chronokinesis

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

chronokinesis

Module for testing time-dependent code

  • 5.0.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
10K
increased by56.06%
Maintainers
1
Weekly downloads
 
Created
Source

chronokinesis

Build Coverage Status

Mock time and date for traveling and freezing. Inspired and borrowed from timekeeper.

Introduction

Mock Date and Date.now in order to help you test time-dependent code. Provides travel, freeze, and timezone functionality for your Node.js tests.

import * as ck from 'chronokinesis';

ck.freeze();

setTimeout(() => {
  // Frozen
  console.log(new Date());

  ck.reset();
}, 2000);

or use with moment:

import moment from 'moment';
import * as ck from 'chronokinesis';

ck.travel(moment().add(1, 'year'));

setTimeout(() => {
  // Date traveled one year and some
  console.log(new Date());

  ck.reset();
}, 2000);

API Reference

freeze([...args])

Freeze point in time. Calls can be made with the same arguments as the Date constructor.

  • ...args: Optional date constructor arguments, if empty stops time at now
import * as ck from 'chronokinesis';

ck.freeze('1942-01-08');

setTimeout(() => {
  // Frozen
  console.log(new Date());

  ck.reset();
}, 2000);

travel([...args])

Time travel to another era. Calls can be made with the same arguments as the Date constructor

  • ...args: Optional date constructor arguments, pretty useless if empty but won´t crash
import * as ck from 'chronokinesis';
let date = new Date(2018, 0, 31);

ck.travel(date);

setTimeout(function() {
  console.log(new Date());
  ck.reset();
}, 1500);

When used in combination with freeze the time is still frozen but at the travelled time().

import * as ck from 'chronokinesis';
import moment from 'moment';

let date = new Date(2018, 0, 31);

ck.freeze(date);

ck.travel(moment().add(1, 'year'));

setTimeout(function() {
  console.log(`Still frozen but one year ahead ${new Date()}`);

  ck.reset();
}, 1500);

defrost()

Defrost a frozen point in time. Used in combination with travelling will start ticking the clock.

import * as ck from 'chronokinesis';

ck.freeze(1980, 0, 1);

// Travel one year
ck.travel(1981, 1, 1);

// Start ticking
ck.defrost();

setTimeout(() => {
  // Tick tack
  console.log(new Date());

  ck.reset();
}, 2000);

reset()

Resets Date to current glory.

import * as ck from 'chronokinesis';

ck.freeze(2060, 0, 1);
console.log(`end of time is reached at ${new Date()} according to Newton`)

ck.reset();

// Today
console.log(new Date())

isKeepingTime()

Utility function to see if we still travel or freeze time.

import * as ck from 'chronokinesis';

console.log(ck.isKeepingTime() ? 'Is' : 'Not', 'keeping time');
ck.travel(1893448800000);
console.log(ck.isKeepingTime() ? 'Is' : 'Not', 'keeping time');

timezone(timeZone)

Freeze and travel in different time zones.

import * as ck from 'chronokinesis';

const tz = ck.timezone('Asia/Shanghai');

tz.freeze();

timezone freeze([...args])

Freeze at the specific timezone.

timezone travel([...args])

Start traveling in the specific timezone.

timezone reset()

Same as #reset

timezone defrost()

Same as #defrost

Distributions

The module is prepared for browser and nodejs.

Nodejs require

const ck = require('chronokinesis');

Browser (UMD)

Use dist/chronokinesis.cjs. Sets global property chronokinesis.

Acknowledgements

chronokinesis initial code is inspired and borrowed from timekeeper

Keywords

FAQs

Package last updated on 10 Apr 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc