# jwt-simple-error-identify

> Easy use of jwt, based on the jwt-simple module, but you can identify the type of error ocurred, if is the case.

Latest version **1.1.0** (published 2019-09-26) · MIT license · 0 weekly downloads

## Install

```sh
npm install jwt-simple-error-identify
pnpm add jwt-simple-error-identify
yarn add jwt-simple-error-identify
bun add jwt-simple-error-identify
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.0 |
| Published | 2019-09-26 |
| First published | 2018-07-10 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 11.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Miguel Ángel Cabrera Miñagorri |
| Maintainers | miguelaeh |
| Keywords | jwt, error, encode, decode, identify |

## Links

- npm: https://www.npmjs.com/package/jwt-simple-error-identify
- Repository: https://github.com/miguelaeh/jwt-simple-error-identify
- Homepage: https://github.com/miguelaeh/jwt-simple-error-identify#readme
- Issues: https://github.com/miguelaeh/jwt-simple-error-identify/issues
- npm.io page: https://npm.io/package/jwt-simple-error-identify

## Dependencies (1)

- [extend-error](https://npm.io/package/extend-error.md) 0.0.2

## Alternatives

- [@sentry/react-native](https://npm.io/package/@sentry/react-native.md) — 2.6M weekly downloads
- [@ardatan/aggregate-error](https://npm.io/package/@ardatan/aggregate-error.md) — 708.1K weekly downloads
- [custom-error-generator](https://npm.io/package/custom-error-generator.md) — 2.0K weekly downloads
- [@technik-sde/prosemirror-recreate-transform](https://npm.io/package/@technik-sde/prosemirror-recreate-transform.md) — 1.5K weekly downloads
- [@suchipi/error-utils](https://npm.io/package/@suchipi/error-utils.md) — 78 weekly downloads

## Recent versions

- 1.1.0 (latest) — 2019-09-26
- 1.0.5 — 2018-07-10
- 1.0.4 — 2018-07-10
- 1.0.3 — 2018-07-10
- 1.0.2 — 2018-07-10
- 1.0.1 — 2018-07-10
- 1.0.0 — 2018-07-10

## README

# jwt-simple-error-identify
Easy use of jwt, based on the jwt-simple module, but you can identify the type of error ocurred, if is the case.
Important, this module gives you the same functionality that the jwt-simple module, but extended. With jwt-simple-error-identify you can know the error type, so in your code, you can check it with the 'instance of' operator. If you do not need that, use jwt-simple instead.


## Install
```bash
$ npm install --save jwt-simple-error-identify
```

## Usage

```javascript
const jwt = require('jwt-simple-error-identify').jwt;
const ExpiredToken = require('jwt-simple-error-identify').ExpiredToken; //the error
const InvalidAlgorithm = require('jwt-simple-error-identify').InvalidAlgorithm; //the error

//Or you can do that
/*
*	const JWT = require(jwt-require-error-identify);
*	const jwt = JWT.jwt;
*	const ExpiredToken = JWT.ExpiredToken
*	//and so on with all type of errors.
*
*/

var payload = {
	foo: 'bar',
	exp: moment().unix() //The module recognize the exp params and use it as the expiration time, 
						//so do not use it for another purpose.
						// I use moment for the example you can use whatever you want.
					   //Using moment().unix(), the token is expired after creation so we will catch the ExpiredToken error.
}
const secret = 'xxx';

//encode
const token = jwt.encode(payload, secret);

// decode
try{
	const decoded = jwt.decode(token, secret);
	console.log(decoded); //=> { foo: 'bar' }
	//In this case that won't shown because the decode will throw an ExpiredToken error.
}catch(err){
	if(err instanceof ExpiredToken){
		//do something, for example if you are using oauth you can use the refresh token to obtain a new access token.
		console.log('Token Expired');
	}
	if(err instanceof InvalidAlgorithm){
		//do something, for example you can try with other algorithm.
		console.log('Invalid Algorithm');
	}
}
```

## Error types

`InvalidToken`, `InvalidAlgorithm`, `ExpiredToken`, `SignatureError`.

The most general errors are `InvalidToken` and `InvalidAlgorithm`.
Exist also `ExpiredToken` and `SignatureError`, that inherit from `InvalidToken`.

Note that if you use `ExpiredToken` or `SignatureError` in the catch,
you also need to check the `InvalidToken` because it could be thrown
in cases that `ExpiredToken` and `SignatureError` not.


## encode params
```javascript
/*
*	jwt.encode(payload, secret, algorithm)
*/
```
NOTE: algorithm is optional.

## decode params

```javascript
/*
 * jwt.decode(token, key, noVerify, algorithm)
 */

// decode, by default the signature of the token is verified
var decoded = jwt.decode(token, secret);
console.log(decoded); //=> { foo: 'bar' }

// decode without verify the signature of the token,
// be sure to KNOW WHAT ARE YOU DOING because not verify the signature
// means you can't be sure that someone hasn't modified the token payload
var decoded = jwt.decode(token, secret, true);
console.log(decoded); //=> { foo: 'bar' }

// decode with a specific algorithm (not using the algorithm described in the token payload)
var decoded = jwt.decode(token, secret, false, 'HS256');
console.log(decoded); //=> { foo: 'bar' }
```

## Algorithms

By default the algorithm to encode is `HS256`.

The supported algorithms for encoding and decoding are `HS256`, `HS384`, `HS512` and `RS256`.

```javascript
// encode using HS512
jwt.encode(payload, secret, 'HS512')


```

---
_Source: https://npm.io/package/jwt-simple-error-identify · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
