UNPKG

teko-oauth2

Version:

Teko Identity OAuth 2 Javascript Library for Web App Client

98 lines (71 loc) 2.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.delay = exports.removeTrailingSlash = exports.currentLocation = exports.createS256CodeChallenge = exports.decodeToken = exports.isExpired = exports.currentTimestamp = exports.randomString = void 0; var _encBase = _interopRequireDefault(require("crypto-js/enc-base64")); var _sha = _interopRequireDefault(require("crypto-js/sha256")); var _jwtDecode = _interopRequireDefault(require("jwt-decode")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } // eslint-disable-next-line sort-imports var randomString = function randomString() { var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 48; var text = ''; var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._'; for (var i = 0; i < length; i++) { text += possible.charAt(Math.floor(Math.random() * possible.length)); } return text; }; exports.randomString = randomString; var currentTimestamp = function currentTimestamp() { return parseInt(Date.now() / 1000); }; exports.currentTimestamp = currentTimestamp; var isExpired = function isExpired(timestamp) { var leeway = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var now = currentTimestamp(); return now > timestamp - leeway; }; exports.isExpired = isExpired; var decodeToken = function decodeToken(token) { return (0, _jwtDecode["default"])(token); }; exports.decodeToken = decodeToken; var createS256CodeChallenge = function createS256CodeChallenge(codeVerifier) { return _encBase["default"].stringify((0, _sha["default"])(codeVerifier)).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); }; exports.createS256CodeChallenge = createS256CodeChallenge; var currentLocation = function currentLocation() { var _window$location = window.location, href = _window$location.href, search = _window$location.search; var url = new URL(href); if (search.includes('error')) { url.searchParams["delete"]('error'); } var location = removeTrailingSlash(url.href); return location; }; exports.currentLocation = currentLocation; var removeTrailingSlash = function removeTrailingSlash(string) { try { var url = new URL(string); var origin = url.origin, pathname = url.pathname, search = url.search; if (pathname.endsWith('/')) { return "".concat(origin).concat(pathname.substring(0, pathname.length - 1)).concat(search); } return url.href; } catch (err) { return string; } }; exports.removeTrailingSlash = removeTrailingSlash; var delay = function delay(ms) { return new Promise(function (resolve) { return setTimeout(resolve, ms); }); }; exports.delay = delay;