| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- (function (factory) {
- typeof define === 'function' && define.amd ? define(factory) :
- factory();
- }((function () { 'use strict';
- /**
- * The code was extracted from:
- * https://github.com/davidchambers/Base64.js
- */
- var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
- function InvalidCharacterError(message) {
- this.message = message;
- }
- InvalidCharacterError.prototype = new Error();
- InvalidCharacterError.prototype.name = "InvalidCharacterError";
- function polyfill(input) {
- var str = String(input).replace(/=+$/, "");
- if (str.length % 4 == 1) {
- throw new InvalidCharacterError(
- "'atob' failed: The string to be decoded is not correctly encoded."
- );
- }
- for (
- // initialize result and counters
- var bc = 0, bs, buffer, idx = 0, output = "";
- // get next character
- (buffer = str.charAt(idx++));
- // character found in table? initialize bit storage and add its ascii value;
- ~buffer &&
- ((bs = bc % 4 ? bs * 64 + buffer : buffer),
- // and if not first of each 4 characters,
- // convert the first 8 bits to one ascii character
- bc++ % 4) ?
- (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) :
- 0
- ) {
- // try to find character in table (0-63, not found => -1)
- buffer = chars.indexOf(buffer);
- }
- return output;
- }
- var atob = (typeof window !== "undefined" &&
- window.atob &&
- window.atob.bind(window)) ||
- polyfill;
- function b64DecodeUnicode(str) {
- return decodeURIComponent(
- atob(str).replace(/(.)/g, function(m, p) {
- var code = p.charCodeAt(0).toString(16).toUpperCase();
- if (code.length < 2) {
- code = "0" + code;
- }
- return "%" + code;
- })
- );
- }
- function base64_url_decode(str) {
- var output = str.replace(/-/g, "+").replace(/_/g, "/");
- switch (output.length % 4) {
- case 0:
- break;
- case 2:
- output += "==";
- break;
- case 3:
- output += "=";
- break;
- default:
- throw "Illegal base64url string!";
- }
- try {
- return b64DecodeUnicode(output);
- } catch (err) {
- return atob(output);
- }
- }
- function InvalidTokenError(message) {
- this.message = message;
- }
- InvalidTokenError.prototype = new Error();
- InvalidTokenError.prototype.name = "InvalidTokenError";
- function jwtDecode(token, options) {
- if (typeof token !== "string") {
- throw new InvalidTokenError("Invalid token specified");
- }
- options = options || {};
- var pos = options.header === true ? 0 : 1;
- try {
- return JSON.parse(base64_url_decode(token.split(".")[pos]));
- } catch (e) {
- throw new InvalidTokenError("Invalid token specified: " + e.message);
- }
- }
- /*
- * Expose the function on the window object
- */
- //use amd or just through the window object.
- if (window) {
- if (typeof window.define == "function" && window.define.amd) {
- window.define("jwt_decode", function() {
- return jwtDecode;
- });
- } else if (window) {
- window.jwt_decode = jwtDecode;
- }
- }
- })));
- //# sourceMappingURL=jwt-decode.js.map
|