jwtrust
v1.0.2
Published
A tiny library to sign and verify JWT tokens using **Rust** bindings for pure performance.
Downloads
8
Maintainers
Readme
JWTRust
A tiny library to sign and verify JWT tokens using Rust bindings for pure performance.
JWTRust Benchmark commencing, runs set at 100000 and 16 payload length.
✔ Benchmarking complete!
┌──────────────┬──────────────┬───────────────────┬───────────┐
│ (index) │ Average (ms) │ Operations (op/s) │ Total (s) │
├──────────────┼──────────────┼───────────────────┼───────────┤
│ JWTRust │ '0.010' │ '104,020' │ '0.96' │
│ fast-jwt │ '0.018' │ '55,056' │ '1.82' │
│ jsonwebtoken │ '0.022' │ '45,488' │ '2.20' │
└──────────────┴──────────────┴───────────────────┴───────────┘
Benchmark run on Ryzen 3600X (6 cores, 12 threads) with 32GB RAM
Table of contents
Getting Started
Installation
To install and set up the library, run:
$ yarn add jwtrust
Or if you still for some reason prefer npm:
$ npm i jwtrust
API
construct
const { JWTR } = require('jwtrust');
const jwtrust = new JWTR('secret');
sign
const jwtrust = new JWTR('secret');
const token = jwtrust.sign({ hello: 'world' });
Supported options and result fields for the sign
method are listed below.
Parameters
payload
| Type | Default value | | ------- | ------------- | | unknown | required |
The payload to sign. This is JSON serialized before signing.
options
| Option | Default value | Description | | ------ | ------------------- | ------------------------------------------------------------------------ | | exp | 7 days | Expiry date in UTC timestamp for example: Date.now() / 1000 + (60 * 60) | | iat | (Date.now() / 1000) | Issued at time in UTC format |
To aid expiry date, a helper is exported named convertTime
:
const { convertTime } = require('jwtrust');
const exp = convertTime('1y');
const exp = convertTime('6h');
const exp = convertTime('2s');
Example:
const token = jwtrust.sign({ hello: 'world' }, { exp: convertTime('1y'), iat: Date.now() });
verify
const jwtrust = new JWTR('secret');
const payload = jwtrust.verify(token);
Supported options and result fields for the verify
method are listed below.
Parameters
token
| Type | Default value | | ------ | ------------- | | string | required |
The token to verify and decode.
Typescript
This library is written in Typescript and includes type definitions. Here is an example that will be typed correctly:
import { JWTR, convertTime } from 'jwtrust';
type Payload = { hello: string }
const jwtrust = new JWTR<Payload>('secret');
const token = jwtrust.sign({ hello: 'world' });
const decoded: Payload = jwtrust.verify(token);
Development
Prerequisites
This project requires NodeJS (version 16 or later) and yarn. Node and NPM are really easy to install. To make sure you have them available on your machine, try running the following command.
$ yarn -v && node -v && rustc --version
3.3.0
v16.18.0
rustc 1.65.0
Building the entire package
Requirement: Rust is installed on your machine.
$ yarn build
This task will create a distribution version of the project
inside your local dist/
folder and output a binary in native/
Running benchmarks
$ yarn benchmark
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Add your changes:
git add .
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :sunglasses:
Built With
- Neon
- VSCode
- TypeScript
- Rust
Versioning
We use SemVer for versioning. For the versions available, see the tags on this repository.
Authors
- DanCodes - @dan-online - [email protected]
License
MIT License © DanCodes