2.2.0 • Published 9 months ago
@plandek-utils/time-utils v2.2.0
@plandek-utils/time-utils
TypeDoc generated docs in here
Small utils for managing Time in tests, using timekeeper for time manipulation.
Installation
npm install @plandek-utils/time-utilsDependencies
This package has a peer dependency on timekeeper, which you'll need to install:
npm install timekeeperUsage
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)Development
Setup
- Clone the repository
- Install dependencies:
npm install
Development Workflow
- Make your changes
- Run tests:
npm test - Run linter:
npm run check - 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 commitThis 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 versionCreating a Release
- Run
npm run prepare-releasewhich 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