react-jwt
Version:
Small library for decoding json web tokens (JWT)
3 lines (2 loc) • 1.57 kB
JavaScript
for(var e=require("react"),r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=new Map,n=0;n<r.length;n++){var o=n.toString(2);o="0".repeat(6-o.length)+o,t.set(r.charCodeAt(n),o)}function a(e){try{if("string"!=typeof e||3!==e.split(".").length)return null;var r=function(e){for(var r,t="",n=e.length,o=0;o<n;o++)r=e[o],t+=String.fromCodePoint(r>251&&r<254&&o+5<n?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<n?(r-248<<24)+(e[++o]-128<<18)+(e[++o]-128<<12)+(e[++o]-128<<6)+e[++o]-128:r>239&&r<248&&o+3<n?(r-240<<18)+(e[++o]-128<<12)+(e[++o]-128<<6)+e[++o]-128:r>223&&r<240&&o+2<n?(r-224<<12)+(e[++o]-128<<6)+e[++o]-128:r>191&&r<224&&o+1<n?(r-192<<6)+e[++o]-128:r);return t}(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 l(e){var r=a(e),t=!0;if(r&&r.exp){var n=new Date(0);n.setUTCSeconds(r.exp),t=n.valueOf()<(new Date).valueOf()}return t}exports.decodeToken=a,exports.isExpired=l,exports.useJwt=function(r){var t=e.useState(!1),n=t[0],o=t[1],u=e.useState(null),c=u[0],i=u[1];e.useEffect(function(){s(r)},[r]);var s=function(e){i(a(e)),o(l(e))};return{isExpired:n,decodedToken:c,reEvaluateToken:s}};
//# sourceMappingURL=index.js.map