@uportal/open-id-connect
Advanced tools
Comparing version 0.0.9 to 0.1.0
@@ -1,1 +0,172 @@ | ||
'use strict';var _slicedToArray=function(){function a(a,b){var c=[],d=!0,e=!1,f=void 0;try{for(var g,h=a[Symbol.iterator]();!(d=(g=h.next()).done)&&(c.push(g.value),!(b&&c.length===b));d=!0);}catch(a){e=!0,f=a}finally{try{!d&&h['return']&&h['return']()}finally{if(e)throw f}}return c}return function(b,c){if(Array.isArray(b))return b;if(Symbol.iterator in Object(b))return a(b,c);throw new TypeError('Invalid attempt to destructure non-iterable instance')}}();Object.defineProperty(exports,'__esModule',{value:!0});exports.tokenize=tokenize;var _axios=require('axios'),_jsonwebtoken=require('jsonwebtoken');require('core-js/modules/es6.typed.array-buffer'),require('core-js/modules/es6.typed.data-view'),require('core-js/modules/es6.typed.int8-array'),require('core-js/modules/es6.typed.uint8-array'),require('core-js/modules/es6.typed.uint8-clamped-array'),require('core-js/modules/es6.typed.int16-array'),require('core-js/modules/es6.typed.uint16-array'),require('core-js/modules/es6.typed.int32-array'),require('core-js/modules/es6.typed.uint32-array'),require('core-js/modules/es6.typed.float32-array'),require('core-js/modules/es6.typed.float64-array'),require('core-js/modules/es6.map'),require('core-js/modules/es6.set'),require('core-js/modules/es6.weak-map'),require('core-js/modules/es6.weak-set'),require('core-js/modules/es6.reflect.apply'),require('core-js/modules/es6.reflect.construct'),require('core-js/modules/es6.reflect.define-property'),require('core-js/modules/es6.reflect.delete-property'),require('core-js/modules/es6.reflect.get'),require('core-js/modules/es6.reflect.get-own-property-descriptor'),require('core-js/modules/es6.reflect.get-prototype-of'),require('core-js/modules/es6.reflect.has'),require('core-js/modules/es6.reflect.is-extensible'),require('core-js/modules/es6.reflect.own-keys'),require('core-js/modules/es6.reflect.prevent-extensions'),require('core-js/modules/es6.reflect.set'),require('core-js/modules/es6.reflect.set-prototype-of'),require('core-js/modules/es6.promise'),require('core-js/modules/es6.symbol'),require('core-js/modules/es6.object.freeze'),require('core-js/modules/es6.object.seal'),require('core-js/modules/es6.object.prevent-extensions'),require('core-js/modules/es6.object.is-frozen'),require('core-js/modules/es6.object.is-sealed'),require('core-js/modules/es6.object.is-extensible'),require('core-js/modules/es6.object.get-own-property-descriptor'),require('core-js/modules/es6.object.get-prototype-of'),require('core-js/modules/es6.object.keys'),require('core-js/modules/es6.object.get-own-property-names'),require('core-js/modules/es6.object.assign'),require('core-js/modules/es6.object.is'),require('core-js/modules/es6.object.set-prototype-of'),require('core-js/modules/es6.function.name'),require('core-js/modules/es6.string.raw'),require('core-js/modules/es6.string.from-code-point'),require('core-js/modules/es6.string.code-point-at'),require('core-js/modules/es6.string.repeat'),require('core-js/modules/es6.string.starts-with'),require('core-js/modules/es6.string.ends-with'),require('core-js/modules/es6.string.includes'),require('core-js/modules/es6.regexp.flags'),require('core-js/modules/es6.regexp.match'),require('core-js/modules/es6.regexp.replace'),require('core-js/modules/es6.regexp.split'),require('core-js/modules/es6.regexp.search'),require('core-js/modules/es6.array.from'),require('core-js/modules/es6.array.of'),require('core-js/modules/es6.array.copy-within'),require('core-js/modules/es6.array.find'),require('core-js/modules/es6.array.find-index'),require('core-js/modules/es6.array.fill'),require('core-js/modules/es6.array.iterator'),require('core-js/modules/es6.number.is-finite'),require('core-js/modules/es6.number.is-integer'),require('core-js/modules/es6.number.is-safe-integer'),require('core-js/modules/es6.number.is-nan'),require('core-js/modules/es6.number.epsilon'),require('core-js/modules/es6.number.min-safe-integer'),require('core-js/modules/es6.number.max-safe-integer'),require('core-js/modules/es6.math.acosh'),require('core-js/modules/es6.math.asinh'),require('core-js/modules/es6.math.atanh'),require('core-js/modules/es6.math.cbrt'),require('core-js/modules/es6.math.clz32'),require('core-js/modules/es6.math.cosh'),require('core-js/modules/es6.math.expm1'),require('core-js/modules/es6.math.fround'),require('core-js/modules/es6.math.hypot'),require('core-js/modules/es6.math.imul'),require('core-js/modules/es6.math.log1p'),require('core-js/modules/es6.math.log10'),require('core-js/modules/es6.math.log2'),require('core-js/modules/es6.math.sign'),require('core-js/modules/es6.math.sinh'),require('core-js/modules/es6.math.tanh'),require('core-js/modules/es6.math.trunc'),require('core-js/modules/es7.array.includes'),require('core-js/modules/es7.object.values'),require('core-js/modules/es7.object.entries'),require('core-js/modules/es7.object.get-own-property-descriptors'),require('core-js/modules/es7.string.pad-start'),require('core-js/modules/es7.string.pad-end'),require('core-js/modules/web.timers'),require('core-js/modules/web.immediate'),require('core-js/modules/web.dom.iterable'),require('regenerator-runtime/runtime');function _asyncToGenerator(a){return function(){var b=a.apply(this,arguments);return new Promise(function(a,c){function d(e,f){try{var g=b[e](f),h=g.value}catch(a){return void c(a)}return g.done?void a(h):Promise.resolve(h).then(function(a){d('next',a)},function(a){d('throw',a)})}return d('next')})}}var token=null;exports.default=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(){var b,c,d=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},e=d.userInfoApiUrl,f=e===void 0?'/uPortal/api/v5-1/userinfo':e,g=d.timeout,h=g===void 0?5e4:g,i=d.propertyTransforms,j=i===void 0?{}:i,k=arguments[1];return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(null===token){a.next=2;break}return a.abrupt('return',token);case 2:return a.prev=2,a.next=5,(0,_axios.get)(f,{responseType:'text'});case 5:if(b=a.sent,c=b.data,token=tokenize(c),Object.entries(j).forEach(function(a){var b=_slicedToArray(a,2),c=b[0],d=b[1];token.decoded[c]=d(token.decoded[c])}),setTimeout(function(){token=null},h),!k){a.next=12;break}return a.abrupt('return',k(null,token));case 12:return a.abrupt('return',token);case 15:if(a.prev=15,a.t0=a['catch'](2),!k){a.next=19;break}return a.abrupt('return',k(a.t0));case 19:throw a.t0;case 20:case'end':return a.stop();}},a,this,[[2,15]])}));return function(){return a.apply(this,arguments)}}();function tokenize(a){return{encoded:a,decoded:(0,_jsonwebtoken.decode)(a)}} | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = openIdConnect; | ||
exports.tokenize = tokenize; | ||
require("core-js/modules/es7.symbol.async-iterator"); | ||
require("core-js/modules/es6.symbol"); | ||
require("core-js/modules/es6.array.iterator"); | ||
require("core-js/modules/es7.object.entries"); | ||
require("core-js/modules/web.dom.iterable"); | ||
require("regenerator-runtime/runtime"); | ||
require("core-js/modules/es6.promise"); | ||
var _axios = require("axios"); | ||
var _jsonwebtoken = require("jsonwebtoken"); | ||
require("babel-polyfill"); | ||
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } | ||
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } | ||
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } | ||
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | ||
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _next(value) { step("next", value); } function _throw(err) { step("throw", err); } _next(); }); }; } | ||
// needed to apply async/await polyfills | ||
var token = null; | ||
/** | ||
* Options for getting tokens | ||
* @typedef {Object} Options | ||
* @property {string} [userInfoApiUrl] - url to Open ID Connect endpoint | ||
* @property {number} [timeout] - time in milliseconds until token will be | ||
* invalid | ||
* @property {Object} [propertyTransforms] - apply additional transforms to | ||
* specific properties | ||
*/ | ||
/** | ||
* Callback to resolve Open ID Connect token | ||
* @callback tokenCallback | ||
* @param {?Error} err - | ||
* @param {?Object} token - with encoded and decoded values | ||
*/ | ||
/** | ||
* Get token from uPortal Open ID Connect service | ||
* @param {Options} [options] - allow setting a custom user info API url and a | ||
* custom clock smear | ||
* @param {tokenCallback} [callback] - optional callback, alternative to Promise | ||
* API | ||
* @return {Promise<Object>} Promise that resolves with the encoded and decoded | ||
* token in an Object | ||
*/ | ||
function openIdConnect() { | ||
return _openIdConnect.apply(this, arguments); | ||
} | ||
/** | ||
* Extract JWT contents | ||
* @param {string} jwt - JSON Web Token to decode | ||
* @return {Object} with encoded and decoded values | ||
*/ | ||
function _openIdConnect() { | ||
_openIdConnect = _asyncToGenerator( | ||
/*#__PURE__*/ | ||
regeneratorRuntime.mark(function _callee() { | ||
var _ref, | ||
_ref$userInfoApiUrl, | ||
userInfoApiUrl, | ||
_ref$timeout, | ||
timeout, | ||
_ref$propertyTransfor, | ||
propertyTransforms, | ||
callback, | ||
_ref2, | ||
data, | ||
_args = arguments; | ||
return regeneratorRuntime.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
_ref = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, _ref$userInfoApiUrl = _ref.userInfoApiUrl, userInfoApiUrl = _ref$userInfoApiUrl === void 0 ? '/uPortal/api/v5-1/userinfo' : _ref$userInfoApiUrl, _ref$timeout = _ref.timeout, timeout = _ref$timeout === void 0 ? 50000 : _ref$timeout, _ref$propertyTransfor = _ref.propertyTransforms, propertyTransforms = _ref$propertyTransfor === void 0 ? {} : _ref$propertyTransfor; | ||
callback = _args.length > 1 ? _args[1] : undefined; | ||
if (!(token !== null)) { | ||
_context.next = 4; | ||
break; | ||
} | ||
return _context.abrupt("return", token); | ||
case 4: | ||
_context.prev = 4; | ||
_context.next = 7; | ||
return (0, _axios.get)(userInfoApiUrl, { | ||
responseType: 'text' | ||
}); | ||
case 7: | ||
_ref2 = _context.sent; | ||
data = _ref2.data; | ||
// store the encoded and decoded versions | ||
token = tokenize(data); // Allow for additional transforms to be applied to decoded properties | ||
Object.entries(propertyTransforms).forEach(function (_ref3) { | ||
var _ref4 = _slicedToArray(_ref3, 2), | ||
property = _ref4[0], | ||
transform = _ref4[1]; | ||
token.decoded[property] = transform(token.decoded[property]); | ||
}); // automatically clear token after expiration | ||
setTimeout(function () { | ||
token = null; | ||
}, timeout); // pass value to optional call back | ||
if (!callback) { | ||
_context.next = 14; | ||
break; | ||
} | ||
return _context.abrupt("return", callback(null, token)); | ||
case 14: | ||
return _context.abrupt("return", token); | ||
case 17: | ||
_context.prev = 17; | ||
_context.t0 = _context["catch"](4); | ||
if (!callback) { | ||
_context.next = 21; | ||
break; | ||
} | ||
return _context.abrupt("return", callback(_context.t0)); | ||
case 21: | ||
throw _context.t0; | ||
case 22: | ||
case "end": | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, this, [[4, 17]]); | ||
})); | ||
return _openIdConnect.apply(this, arguments); | ||
} | ||
function tokenize(jwt) { | ||
return { | ||
encoded: jwt, | ||
decoded: (0, _jsonwebtoken.decode)(jwt) | ||
}; | ||
} |
{ | ||
"name": "@uportal/open-id-connect", | ||
"description": "A shared Open ID Connect authorization helper for uPortal", | ||
"version": "0.0.9", | ||
"version": "0.1.0", | ||
"repository": { | ||
@@ -43,7 +43,9 @@ "type": "git", | ||
"devDependencies": { | ||
"babel-cli": "^6.26.0", | ||
"babel-preset-env": "^1.6.1", | ||
"babel-preset-minify": "^0.4.1", | ||
"@babel/cli": "^7.0.0-0", | ||
"@babel/core": "^7.0.0-0", | ||
"@babel/preset-env": "^7.0.0-0", | ||
"babel-core": "^7.0.0-0", | ||
"babel-jest": "^22.4.4", | ||
"eslint-plugin-jest": "^21.15.1", | ||
"jest": "^22.4.3" | ||
"jest": "^22.4.4" | ||
}, | ||
@@ -67,8 +69,7 @@ "eslintConfig": { | ||
[ | ||
"env", | ||
"@babel/preset-env", | ||
{ | ||
"useBuiltIns": true | ||
"useBuiltIns": "usage" | ||
} | ||
], | ||
"minify" | ||
] | ||
] | ||
@@ -75,0 +76,0 @@ }, |
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
214
2
12963
7