https://github.com/nfroidure/jwt-service
A simple wrapper around `jsonwebtoken`
https://github.com/nfroidure/jwt-service
hacktoberfest jwt knifecycle
Last synced: about 1 year ago
JSON representation
A simple wrapper around `jsonwebtoken`
- Host: GitHub
- URL: https://github.com/nfroidure/jwt-service
- Owner: nfroidure
- License: mit
- Created: 2018-09-23T09:13:58.000Z (almost 8 years ago)
- Default Branch: main
- Last Pushed: 2025-02-06T14:44:55.000Z (over 1 year ago)
- Last Synced: 2025-04-15T04:51:24.327Z (about 1 year ago)
- Topics: hacktoberfest, jwt, knifecycle
- Language: TypeScript
- Homepage: https://insertafter.com/en/blog/unobstrusive_dependency_injection_with_knifecycle.html
- Size: 2.44 MB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
[//]: # ( )
[//]: # (This file is automatically generated by a `metapak`)
[//]: # (module. Do not change it except between the)
[//]: # (`content:start/end` flags, your changes would)
[//]: # (be overridden.)
[//]: # ( )
# jwt-service
> A simple wrapper for a simpler JWT surface API
[](https://github.com/nfroidure/jwt-service/blob/main/LICENSE)
[//]: # (::contents:start)
This wrapper is directly usable with
[Knifecycle](https://github.com/nfroidure/knifecycle).
## Overriding
Let's say you wanna create a sub-service of this one with custom inputs, for
say, refresh tokens in a [Whook](https://github.com/nfroidure/whook) project,
here is how you would do:
```ts
import initJWT, { JWTServiceConfig } from 'jwt_service';
import { inject } from 'knifecycle';
export type RefreshJWTServiceConfig = {
ENV: JWTServiceConfig['ENV'];
REFRESH_JWT_SECRET_ENV_NAME: JWTServiceConfig['JWT_SECRET_ENV_NAME'];
REFRESH_JWT: JWTServiceConfig['JWT'];
};
export default inject(
[
'?JWT_SECRET_ENV_NAME>REFRESH_JWT_SECRET_ENV_NAME',
'JWT>REFRESH_JWT',
'?ENV',
'?log',
'?time',
],
initJWT,
);
```
[//]: # (::contents:end)
# API
## Functions
-
initJWT(services) ⇒Promise.<JWTService> -
Instantiate the JWT service
## Typedefs
## initJWT(services) ⇒ [Promise.<JWTService>](#JWTService)
Instantiate the JWT service
**Kind**: global function
**Returns**: [Promise.<JWTService>](#JWTService) - A promise of the jwt service
| Param | Type | Description |
| --- | --- | --- |
| services | Object | The services to inject |
| [services.JWT_SECRET_ENV_NAME] | function | The environment variable name in which to pick-up the JWT secret |
| [services.ENV] | Object | An environment object |
| services.JWT | function | The JWT service configuration object |
| [services.log] | function | A logging function |
| [services.time] | function | A function returning the current timestamp |
**Example**
```js
import initJWTService from 'jwt-service';
const jwt = await initJWTService({
JWT: {
secret: 'secret',
duration: '2d',
tolerance: '2h',
algorithms: ['HS256'],
},
log: console.log.bind(console),
time: Date.now.bind(Date),
});
const token = await jwt.sign({ my: 'payload' });
```
## JWTService
**Kind**: global typedef
* [JWTService](#JWTService)
* [.sign(payload, [algorithm])](#JWTService.sign) ⇒ Promise.<JWTSignResult>
* [.verify([token])](#JWTService.verify) ⇒ Promise.<Object>
### JWTService.sign(payload, [algorithm]) ⇒ Promise.<JWTSignResult>
Sign the given payload
**Kind**: static method of [JWTService](#JWTService)
**Returns**: Promise.<JWTSignResult> - A promise to be resolved with the signed token.
| Param | Type | Description |
| --- | --- | --- |
| payload | Object | The payload to sign |
| [algorithm] | String | The signing algorithm |
**Example**
```js
const token = await jwt.sign({ my: 'payload' });
```
### JWTService.verify([token]) ⇒ Promise.<Object>
Verify and decode the given token
**Kind**: static method of [JWTService](#JWTService)
**Returns**: Promise.<Object> - A promise to be resolved with the token payload.
| Param | Type | Description |
| --- | --- | --- |
| [token] | String | The token to decode |
**Example**
```js
const payload = await jwt.verify('my.jwt.token');
```
# Authors
- [Nicolas Froidure](https://insertafter.com/en/index.html)
# License
[MIT](https://github.com/nfroidure/jwt-service/blob/main/LICENSE)