JSPM

@around25/jwt-utils

1.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 544
  • Score
    100M100P100Q92375F
  • License MIT

Perform jwt token operations like store, get, decode, get expiration date, check if expired, validate, remove from storage

Package Exports

  • @around25/jwt-utils

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@around25/jwt-utils) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

A small package to perform JWT token operations (store, get, decode, get expiration date, check if expired, validate, remove from storage).

Works in React and React Native.

Installation

npm install --save jwt-utils

Usage

Initialize the package and then import in wherever you need it. The constructor takes a single config object as parameter. The storageSystem property is required.

import TokenService from 'jwt-utils'

const TokenUtils = new TokenService({
  storageSystem: window.localStorage
});

export default TokenUtils

In the React environment, it can be either window.localStorage or window.sessionStorage. And it's totally synchronous.

Store

Stores token using the specified storage system. Token must be a string.

// Take a properly formatted JWT token
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEiLCJuYW1lIjoiSm9obiBEb2UiLCJleHAiOjE1MjU3MDAxNjE1NjJ9.qGB98H-4th9E0yTVHH235A4kCgFyKt5jIVgekk4fcp4'

TokenUtils.store(token);

Get

Retrieves the stored token if set, undefined otherwise.

const token = TokenUtils.get();

// eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEiLCJuY...

Decode

Decodes a token. A falsy token will return {}.

const decodedToken = TokenUtils.decode(token);

// {
//   id: 1,
//   name: "John Doe",
//   exp: 1525700161562
// }

Get expiration date

Returns expiration date as unix timestamp (ms) or null if the exp property is not defined in the decoded token.

const expirationDate = TokenUtils.getExpirationDate(token);

// 1525700161562

Check if expired

Returns a boolean value specifying if token is expired or not.

const isExpired = TokenUtils.isExpired(token);

Check if valid

Checks if token is valid, simply by checking its existence. You can optionally use a validation function as a secondary param. In that case, the validation function should return a boolean value.

const isValid = TokenUtils.isValid(token, validationFunc);

Remove from storage

Removes token from storage

TokenUtils.remove(token);

Usage with React Native

In the React Native environment, store, get and remove methods return promises (due to the async nature of the storage system).

import { AsyncStorage } from 'react-native'
import TokenService from 'jwt-utils'

export default new TokenService({
  storageSystem: AsyncStorage
});
const result = await TokenUtils.store(token);
// true

const token = await TokenUtils.get();
// eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEiLCJuY...

External dependencies

This package depends on jwt-decode for token decoding.