react-jwt
Version:
Small library for decoding json web tokens (JWT)
3 lines (2 loc) • 1.58 kB
JavaScript
import{useState as e,useEffect as r}from"react";for(var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=new Map,o=0;o<n.length;o++){var a=o.toString(2);a="0".repeat(6-a.length)+a,t.set(n.charCodeAt(o),a)}function l(e){try{if("string"!=typeof e||3!==e.split(".").length)return null;var r=function(e){for(var r,n="",t=e.length,o=0;o<t;o++)r=e[o],n+=String.fromCodePoint(r>251&&r<254&&o+5<t?1073741824*(r-252)+(e[++o]-128<<24)+(e[++o]-128<<18)+(e[++o]-128<<12)+(e[++o]-128<<6)+e[++o]-128:r>247&&r<252&&o+4<t?(r-248<<24)+(e[++o]-128<<18)+(e[++o]-128<<12)+(e[++o]-128<<6)+e[++o]-128:r>239&&r<248&&o+3<t?(r-240<<18)+(e[++o]-128<<12)+(e[++o]-128<<6)+e[++o]-128:r>223&&r<240&&o+2<t?(r-224<<12)+(e[++o]-128<<6)+e[++o]-128:r>191&&r<224&&o+1<t?(r-192<<6)+e[++o]-128:r);return n}(function(e){for(var r="",n=0;n<e.length;n++)r+=t.get(e.charCodeAt(n));r=r.slice(0,r.length-r.length%8);for(var o=[],a=0;a<r.length/8;a++)o.push(r.slice(8*a,8*a+8));return o}(e.split(".")[1].replaceAll("=","").replaceAll("-","+").replaceAll("_","/")).map(function(e){return parseInt(e,2)}));return JSON.parse(r)}catch(e){return console.error("There was an error decoding token: ",e),null}}function i(e){var r=l(e),n=!0;if(r&&r.exp){var t=new Date(0);t.setUTCSeconds(r.exp),n=t.valueOf()<(new Date).valueOf()}return n}function u(n){var t=e(!1),o=t[0],a=t[1],u=e(null),c=u[0],f=u[1];r(function(){p(n)},[n]);var p=function(e){f(l(e)),a(i(e))};return{isExpired:o,decodedToken:c,reEvaluateToken:p}}export{l as decodeToken,i as isExpired,u as useJwt};
//# sourceMappingURL=index.modern.js.map