JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2865
  • Score
    100M100P100Q123162F
  • License Apache-2.0

Decode, sign/resign or verify JSON Web Tokens (JWT). Works in majority of modern browsers, Node.js and other JavaScript runtimes.

Package Exports

  • jwt-js-decode
  • jwt-js-decode/dist/jwt-js-decode.esm.js
  • jwt-js-decode/dist/jwt-js-decode.min.js
  • jwt-js-decode/dist/jwt-js-decode.umd.js

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 (jwt-js-decode) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

jwt-js-decode

JavaScript library that decodes JSON Web Tokens (JWT) jwt-js-decode the easy way

Use cases

Works in:

  • all modern browsers that support WebCrypto API
  • Node.js using 'crypto' (default node-js lib)
  • any other js env using 'crypto-browserify' (with require replacement to 'crypto'')

Getting Started

Install Jest using yarn:

yarn add jwt-js-decode

Or via npm:

npm i -S jwt-js-decode

Require lib

import * as jwtJsDecode from 'jwt-js-decode';

or

const jwtJsDecode = require('jwt-js-decode');

or

<script src="//unpkg.com/jwt-js-decode@1.9.0/dist/jwt-js-decode.pkg.min.js"></script>

Other links you can find on yarn

P.S. For Webpack 5 browser bundling, there is need to add crypto fallback config (example stackblitz):

resolve: {
  fallback: {
    crypto: false,
  },
},

Usage

Decode JWT token into {header: Object, payload: Object, signature: String}

    import { decode } from 'jwt-js-decode';

    let jwt = decode('token');
    console.log(jwt.payload);

Verify JWT token with provided secret and decode it after

    import { decode, verify } from 'jwt-js-decode';
    
    verify('token', 'secret').then(res => {
        if (res === true) {
            const jwt = decode('token');
            console.log(jwt.payload);
        }
    });

Resign JWT token with newSecret secret should be same type as jwt.header.alg

    import { resign } from 'jwt-js-decode';

    resign('token', 'newSecret').then(newToken =>  {
        console.log(newToken);
    });

Sandboxes

Runkit (node.js sandbox 1.9.0) https://npm.runkit.com/jwt-js-decode

Plunkr (browser sandbox 1.9.0 + CodeMirror) https://plnkr.co/edit/WaawWXswkexfXaFfRDjQ

Plunkr (browser sandbox 1.9.0) https://plnkr.co/edit/zCNpiTXBbPKNxNVnHhkU

Development

First you'll need to clone this repository to folder you will test it in.

Then insall all dependencies.

npm i

For testing functionality jest testing is used, npm test script will rebuild dist and docs folder.

After changes in jwt-js-decode source and just for the first run use:

npm test

For sequential runs and just new test you can run:

npm run jest

TOC: