rusty-duration v0.1.0
rusty-duration
A rust-inspired library for working with durations in javascript/typescript.
Installation
You can use your favorite package manager to install rusty-duration via npmjs.org packages. For example:
$ npm install rusty-durationUsage
The library exports a single class, Duration, which can be used to represent a duration of time and a number of constants that can be used to convert between different units of time.
Since the methods are the same as in the rust standard library, you can refer to the rust documentation for information on how to use the class. Some methods might not be implemented (see Usage notes).
Usage notes
- In opposition to the rust standard library, the
Durationclass methods are incamelCase, following the javascript convention. - Due to the lack of error handling in typescript, methods like
Duration::checked_*andDuration::saturating_*are not implemented. Instead, you do can usetryandcatchblocks and constants likeDuration.MAX,Duration.MINorDuratION.ZEROto achieve the same effect. - Most methods assume that both
secondsandnanosare valid numbers for that field. This means that manually changing them can lead to unexpected behaviour. If you want to change the fields, use methods likeDuration.addorDuration.subinstead to create a newDuration.
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. If using bun, you can run tests with bun test. Most of the work is automated by husky (with the pre-comit hook) that you can install with bun run prepare or npm run prepare. Please make sure to update tests as appropriate.
This project uses prettier for code formatting and biomejs for linting. Both have their respective scripts in package.json. For versioning, follow the Semantic Versioning guidelines.
Although optional, it is recommended to use gitmoji (https://gitmoji.carloscuesta.me/) or cm (https://github.com/Brian3647/cm) for commit messages.
License
This project is licensed under the MIT License - see the LICENSE file for details
2 years ago