TypeDoc generated docs in here
Small utils for managing Time in tests, using timekeeper for time manipulation.
npm install @plandek-utils/time-utils
This package has a peer dependency on timekeeper
, which you'll need to install:
npm install timekeeper
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 asfreezeTime()
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)
- Clone the repository
- Install dependencies:
npm install
- Make your changes
- Run tests:
npm test
- Run linter:
npm run check
- Commit using conventional commits:
npm run commit
See The Typescript-Starter docs.
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
- 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
- Push to git:
git push --follow-tags origin master
- The CI will automatically publish to npm when pushed to master