@plandek-utils/time-utils
TypeScript icon, indicating that this package has built-in type declarations

2.2.0 • Public • Published

@plandek-utils/time-utils

npm version Build Status Maintainability Test Coverage

TypeDoc generated docs in here

Github repo here

Small utils for managing Time in tests, using timekeeper for time manipulation.

Installation

npm install @plandek-utils/time-utils

Dependencies

This package has a peer dependency on timekeeper, which you'll need to install:

npm install timekeeper

Usage

The package provides 2 functions:

  • freezeTime(time, fn): freezes time to the given one, executes the given function, and resets the time before returning the result of that execution.
  • freezeTimeAwait(time, asyncFn): same as freezeTime() but expects an async function, and it waits for its return before resetting the time
// assume now is "2019-03-21T12:21:13.000Z"

function renderTime() {
  const d = new Date()
  console.log(d.toISOString())
}

renderTime() // => logs "2019-03-21T12:21:13.000Z"

const time = new Date("2018-01-02T13:14:15.123Z")
const res = freezeTime(time, () => { renderTime(); return 'blah' }) // => logs "2018-01-02T13:14:15.123Z"
console.log(res) // => logs 'blah' (freezeTime() returns the result of the passed function)

renderTime() // => logs "2019-03-21T12:21:13.010Z" (time is unfrozen, let's say that a 10ms have passed)

Development

Setup

  1. Clone the repository
  2. Install dependencies: npm install

Development Workflow

  1. Make your changes
  2. Run tests: npm test
  3. Run linter: npm run check
  4. Commit using conventional commits: npm run commit

Development, Commits, versioning and publishing

See The Typescript-Starter docs.

Commits and CHANGELOG

For commits, you should use commitizen

npm run commit

This project uses conventional changelog to manage releases. See the standard-version documentation for more information on the workflow.

# bump package.json version, update CHANGELOG.md, git tag the release
npm run version

Creating a Release

  1. Run npm run prepare-release which will:
    • Reset the repo to a clean state
    • Run checks and tests
    • Create a new version using standard-version
    • Build the package
  2. Push to git: git push --follow-tags origin master
  3. The CI will automatically publish to npm when pushed to master

Readme

Keywords

none

Package Sidebar

Install

npm i @plandek-utils/time-utils

Weekly Downloads

1,873

Version

2.2.0

License

MIT

Unpacked Size

19.9 kB

Total Files

11

Last publish

Collaborators

  • eturino
  • plandek-dev