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

  • 4.0.1
  • Source
  • npm
  • Socket score

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

chronokinesis

Build Status 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.

const ck = require('chronokinesis');

ck.freeze();

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

  ck.reset();
}, 2000);

or use with moment:

const moment = require('moment');
const ck = require('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
const ck = require('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
const ck = require('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().

const ck = require('chronokinesis');
const moment = require('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.

const ck = require('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.

const ck = require('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.

const ck = require('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.

const ck = require('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 rollup.

Browser

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

Rollup

jsnext:main: dist/index.es.js

Acknowledgements

chronokinesis initial code is inspired and borrowed from timekeeper

Keywords

FAQs

Package last updated on 09 Dec 2022

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