{"version":3,"sources":["webpack:///./node_modules/aurelia-authentication/dist/native-modules/authenticatedValueConverter.js","webpack:///./node_modules/aurelia-authentication/dist/native-modules/authenticatedFilterValueConverter.js","webpack:///./node_modules/aurelia-authentication/dist/native-modules/aurelia-authentication.js","webpack:///./node_modules/aurelia-authentication/dist/native-modules/index.js","webpack:///./node_modules/aurelia-authentication/dist/native-modules/authFilterValueConverter.js"],"names":["_class","exports","__esModule","AuthenticatedValueConverter","undefined","_aureliaDependencyInjection","_aureliaAuthentication","inject","AuthService","_dec","authService","this","prototype","toView","authenticated","AuthenticatedFilterValueConverter","routes","isAuthenticated","arguments","length","filter","route","config","auth","_class2","_class3","_class4","_class5","_dec5","_dec6","_dec7","_dec8","_dec9","_dec10","_dec11","_class6","_class7","_dec12","_dec13","_class8","_class9","_class11","_class12","_class13","FetchConfig","AuthorizeStep","AuthenticateStep","Authentication","OAuth2","OAuth1","AuthLock","Storage","BaseConfig","logger","Popup","_typeof","Symbol","iterator","obj","constructor","_createClass","defineProperties","target","props","i","descriptor","enumerable","configurable","writable","Object","defineProperty","key","Constructor","protoProps","staticProps","configure","frameworkConfig","_aureliaPal","PLATFORM","location","origin","protocol","hostname","port","baseConfig","container","get","_iterator","globalValueConverters","_isArray","Array","isArray","_i","_ref","next","done","value","converter","globalResources","moduleName","info","fetchConfig","clientConfig","_aureliaApi","Config","configureEndpoints","forEach","endpointToPatch","client","endpoint","getEndpoint","Error","_aureliaFetchClient","HttpClient","Rest","_extend2","_interopRequireDefault","_jwtDecode2","_aureliaPath","_aureliaLogging","_aureliaMetadata","_aureliaEventAggregator","_aureliaTemplatingResources","_aureliaRouter","default","_applyDecoratedDescriptor","property","decorators","context","desc","initializer","slice","reverse","reduce","decorator","call","popupWindow","polling","url","open","windowName","options","optionsString","buildPopupWindowOptions","global","focus","eventListener","redirectUri","_this","Promise","resolve","reject","addEventListener","event","indexOf","parser","DOM","createElement","href","search","hash","qs","parseUrl","error","close","data","pollPopup","_this2","setInterval","errorData","host","document","clearInterval","closed","width","height","extended","left","screenX","outerWidth","top","screenY","outerHeight","parts","keys","map","push","join","charAt","substr","parseQueryString","getLogger","loginRedirect","logoutRedirect","loginRoute","loginOnSignup","signupRedirect","expiredRedirect","storageChangedRedirect","baseUrl","loginUrl","logoutUrl","logoutMethod","signupUrl","profileUrl","profileMethod","unlinkUrl","unlinkMethod","refreshTokenUrl","authHeader","authTokenType","logoutOnInvalidToken","accessTokenProp","accessTokenName","accessTokenRoot","useRefreshToken","autoUpdateToken","clientId","clientSecret","refreshTokenProp","refreshTokenSubmitProp","keepOldResponseProperties","refreshTokenName","refreshTokenRoot","idTokenProp","idTokenName","idTokenRoot","httpInterceptor","withCredentials","platform","storage","storageKey","storageChangedReload","getExpirationDateFromResponse","getAccessTokenFromResponse","getRefreshTokenFromResponse","defaultHeadersForTokenRequests","providers","facebook","name","authorizationEndpoint","requiredUrlParams","scope","scopeDelimiter","display","oauthType","popupOptions","google","optionalUrlParams","scopePrefix","state","randomState","github","instagram","linkedin","twitter","twitch","live","yahoo","bitbucket","azure_ad","window","logoutEndpoint","postLogoutRedirectUri","auth0","clientDomain","lockOptions","responseType","_authToken","_responseTokenProp","_tokenName","_tokenRoot","_tokenPrefix","_logoutOnInvalidtoken","joinBase","incoming","hasOwnProperty","getOptionsForTokenRequests","headers","set","authToken","warn","_authTokenType","responseTokenProp","tokenRoot","tokenName","tokenPrefix","_","logoutOnInvalidtoken","rand","Math","random","toString","encodeURIComponent","getItem","setItem","remove","removeItem","_dec2","defaults","userData","_this3","Auth0Lock","provider","stateName","opts","params","redirect","redirectUrl","lock","on","authResponse","hide","access_token","accessToken","id_token","idToken","err","show","then","lockResponse","_dec3","popup","_this4","serverUrl","post","response","buildQueryString","result","exchangeForToken","oauthData","credentials","_dec4","responseParams","defaultUrlParams","_this5","buildQuery","_this6","query","paramName","camelizedName","replace","separator","letter","offset","toUpperCase","paramValue","buildLogoutQuery","post_logout_redirect_uri","JSON","parse","id_token_hint","deprecated","message","oAuth1","oAuth2","auth0Lock","updateTokenCallstack","refreshToken","payload","exp","responseAnalyzed","getLoginRoute","getLoginRedirect","getLoginUrl","getSignupUrl","getProfileUrl","getToken","getAccessToken","getResponseObject","setResponseObject","oldResponse","assign","getDataFromResponse","stringify","getRefreshToken","getIdToken","getPayload","getIdPayload","idPayload","getExp","getTtl","Number","isNaN","NaN","round","Date","getTime","isTokenExpired","timeLeft","getTokenFromResponse","e","parseInt","tokenProp","split","o","x","tokenRootData","_token","responseObject","token","_error","toUpdateTokenCallstack","_this7","resolveUpdateTokenCallstack","authenticate","type","logout","rtnValue","defaultRedirectUrl","encodeURI","getOwnPropertyDescriptor","BindingSignaler","EventAggregator","authentication","bindingSignaler","eventAggregator","_this8","timeoutID","storageEventHandler","newValue","oldValue","wasAuthenticated","updateAuthenticated","reload","oldStorageKey","oldToken","fakeOldResponse","setTimeout","ttl","_this9","clearTimeout","expiredTokenHandler","updateToken","catch","signal","publish","getMe","criteriaOrId","id","find","updateMe","body","update","patch","getCurrentToken","callback","_this10","getTokenPayload","getIdTokenPayload","_this11","content","grant_type","client_id","client_secret","signup","displayNameOrCredentials","emailOrOptions","passwordOrRedirectUri","_this12","normalized","login","emailOrCredentials","passwordOrOptions","optionsOrRedirectUri","_this13","_this14","localLogout","onLogout","logoutResponse","stateValue","request","_this15","unlink","_this16","_dec14","run","routingContext","isLoggedIn","getAllInstructions","some","cancel","Redirect","fragment","_dec15","_dec16","httpClient","_this17","configuredClients","toConfigure","interceptors","interceptor","_this18","_request","_x3","apply","_response","_x4","_x5","ok","status","fetch","AuthFilterValueConverter"],"mappings":"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","file":"npm.aurelia-authentication.44abbd5e48f6d1a3ef5d.js","sourcesContent":["'use strict';\n\nexports.__esModule = true;\nexports.AuthenticatedValueConverter = undefined;\n\nvar _dec, _class;\n\nvar _aureliaDependencyInjection = require('aurelia-dependency-injection');\n\nvar _aureliaAuthentication = require('./aurelia-authentication');\n\n\n\nvar AuthenticatedValueConverter = exports.AuthenticatedValueConverter = (_dec = (0, _aureliaDependencyInjection.inject)(_aureliaAuthentication.AuthService), _dec(_class = function () {\n function AuthenticatedValueConverter(authService) {\n \n\n this.authService = authService;\n }\n\n AuthenticatedValueConverter.prototype.toView = function toView() {\n return this.authService.authenticated;\n };\n\n return AuthenticatedValueConverter;\n}()) || _class);","'use strict';\n\nexports.__esModule = true;\nexports.AuthenticatedFilterValueConverter = undefined;\n\nvar _dec, _class;\n\nvar _aureliaDependencyInjection = require('aurelia-dependency-injection');\n\nvar _aureliaAuthentication = require('./aurelia-authentication');\n\nvar _aureliaRouter = require('aurelia-router');\n\n\n\nvar AuthenticatedFilterValueConverter = exports.AuthenticatedFilterValueConverter = (_dec = (0, _aureliaDependencyInjection.inject)(_aureliaAuthentication.AuthService), _dec(_class = function () {\n function AuthenticatedFilterValueConverter(authService) {\n \n\n this.authService = authService;\n }\n\n AuthenticatedFilterValueConverter.prototype.toView = function toView(routes) {\n var isAuthenticated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.authService.authenticated;\n\n return routes.filter(function (route) {\n return typeof route.config.auth !== 'boolean' || route.config.auth === isAuthenticated;\n });\n };\n\n return AuthenticatedFilterValueConverter;\n}()) || _class);","'use strict';\n\nexports.__esModule = true;\nexports.FetchConfig = exports.AuthorizeStep = exports.AuthenticateStep = exports.AuthService = exports.Authentication = exports.OAuth2 = exports.OAuth1 = exports.AuthLock = exports.Storage = exports.BaseConfig = exports.logger = exports.Popup = undefined;\n\nvar _dec, _class2, _dec2, _class3, _dec3, _class4, _dec4, _class5, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _class6, _desc, _value, _class7, _dec12, _dec13, _class8, _desc2, _value2, _class9, _dec14, _class11, _dec15, _class12, _dec16, _class13;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports.configure = configure;\n\nvar _extend = require('extend');\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _jwtDecode = require('jwt-decode');\n\nvar _jwtDecode2 = _interopRequireDefault(_jwtDecode);\n\nvar _aureliaPal = require('aurelia-pal');\n\nvar _aureliaPath = require('aurelia-path');\n\nvar _aureliaLogging = require('aurelia-logging');\n\nvar _aureliaDependencyInjection = require('aurelia-dependency-injection');\n\nvar _aureliaMetadata = require('aurelia-metadata');\n\nvar _aureliaEventAggregator = require('aurelia-event-aggregator');\n\nvar _aureliaTemplatingResources = require('aurelia-templating-resources');\n\nvar _aureliaApi = require('aurelia-api');\n\nvar _aureliaRouter = require('aurelia-router');\n\nvar _aureliaFetchClient = require('aurelia-fetch-client');\n\nvar _authFilterValueConverter = require('./authFilterValueConverter');\n\nvar _authenticatedValueConverter = require('./authenticatedValueConverter');\n\nvar _authenticatedFilterValueConverter = require('./authenticatedFilterValueConverter');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n}\n\n\n\nvar Popup = exports.Popup = function () {\n function Popup() {\n \n\n this.popupWindow = null;\n this.polling = null;\n this.url = '';\n }\n\n Popup.prototype.open = function open(url, windowName, options) {\n this.url = url;\n var optionsString = buildPopupWindowOptions(options || {});\n\n this.popupWindow = _aureliaPal.PLATFORM.global.open(url, windowName, optionsString);\n\n if (this.popupWindow && this.popupWindow.focus) {\n this.popupWindow.focus();\n }\n\n return this;\n };\n\n Popup.prototype.eventListener = function eventListener(redirectUri) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n _this.popupWindow.addEventListener('loadstart', function (event) {\n if (event.url.indexOf(redirectUri) !== 0) {\n return;\n }\n\n var parser = _aureliaPal.DOM.createElement('a');\n\n parser.href = event.url;\n\n if (parser.search || parser.hash) {\n var qs = parseUrl(parser);\n\n if (qs.error) {\n reject({ error: qs.error });\n } else {\n resolve(qs);\n }\n\n _this.popupWindow.close();\n }\n });\n\n _this.popupWindow.addEventListener('exit', function () {\n reject({ data: 'Provider Popup was closed' });\n });\n\n _this.popupWindow.addEventListener('loaderror', function () {\n reject({ data: 'Authorization Failed' });\n });\n });\n };\n\n Popup.prototype.pollPopup = function pollPopup() {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2.polling = _aureliaPal.PLATFORM.global.setInterval(function () {\n var errorData = void 0;\n\n try {\n if (_this2.popupWindow.location.host === _aureliaPal.PLATFORM.global.document.location.host && (_this2.popupWindow.location.search || _this2.popupWindow.location.hash)) {\n var qs = parseUrl(_this2.popupWindow.location);\n\n if (qs.error) {\n reject({ error: qs.error });\n } else {\n resolve(qs);\n }\n\n _this2.popupWindow.close();\n _aureliaPal.PLATFORM.global.clearInterval(_this2.polling);\n }\n } catch (error) {\n errorData = error;\n }\n\n if (!_this2.popupWindow) {\n _aureliaPal.PLATFORM.global.clearInterval(_this2.polling);\n reject({\n error: errorData,\n data: 'Provider Popup Blocked'\n });\n } else if (_this2.popupWindow.closed) {\n _aureliaPal.PLATFORM.global.clearInterval(_this2.polling);\n reject({\n error: errorData,\n data: 'Problem poll popup'\n });\n }\n }, 35);\n });\n };\n\n return Popup;\n}();\n\nvar buildPopupWindowOptions = function buildPopupWindowOptions(options) {\n var width = options.width || 500;\n var height = options.height || 500;\n\n var extended = (0, _extend2.default)({\n width: width,\n height: height,\n left: _aureliaPal.PLATFORM.global.screenX + (_aureliaPal.PLATFORM.global.outerWidth - width) / 2,\n top: _aureliaPal.PLATFORM.global.screenY + (_aureliaPal.PLATFORM.global.outerHeight - height) / 2.5\n }, options);\n\n var parts = [];\n\n Object.keys(extended).map(function (key) {\n return parts.push(key + '=' + extended[key]);\n });\n\n return parts.join(',');\n};\n\nvar parseUrl = function parseUrl(url) {\n var hash = url.hash.charAt(0) === '#' ? url.hash.substr(1) : url.hash;\n\n return (0, _extend2.default)(true, {}, (0, _aureliaPath.parseQueryString)(url.search), (0, _aureliaPath.parseQueryString)(hash));\n};\n\nvar logger = exports.logger = (0, _aureliaLogging.getLogger)('aurelia-authentication');\n\nvar BaseConfig = exports.BaseConfig = function () {\n function BaseConfig() {\n \n\n this.client = null;\n this.endpoint = null;\n this.configureEndpoints = null;\n this.loginRedirect = '#/';\n this.logoutRedirect = '#/';\n this.loginRoute = '/login';\n this.loginOnSignup = true;\n this.signupRedirect = '#/login';\n this.expiredRedirect = '#/';\n this.storageChangedRedirect = '#/';\n this.baseUrl = '';\n this.loginUrl = '/auth/login';\n this.logoutUrl = null;\n this.logoutMethod = 'get';\n this.signupUrl = '/auth/signup';\n this.profileUrl = '/auth/me';\n this.profileMethod = 'put';\n this.unlinkUrl = '/auth/unlink/';\n this.unlinkMethod = 'get';\n this.refreshTokenUrl = null;\n this.authHeader = 'Authorization';\n this.authTokenType = 'Bearer';\n this.logoutOnInvalidToken = false;\n this.accessTokenProp = 'access_token';\n this.accessTokenName = 'token';\n this.accessTokenRoot = false;\n this.useRefreshToken = false;\n this.autoUpdateToken = true;\n this.clientId = false;\n this.clientSecret = null;\n this.refreshTokenProp = 'refresh_token';\n this.refreshTokenSubmitProp = 'refresh_token';\n this.keepOldResponseProperties = false;\n this.refreshTokenName = 'token';\n this.refreshTokenRoot = false;\n this.idTokenProp = 'id_token';\n this.idTokenName = 'token';\n this.idTokenRoot = false;\n this.httpInterceptor = true;\n this.withCredentials = true;\n this.platform = 'browser';\n this.storage = 'localStorage';\n this.storageKey = 'aurelia_authentication';\n this.storageChangedReload = false;\n this.getExpirationDateFromResponse = null;\n this.getAccessTokenFromResponse = null;\n this.getRefreshTokenFromResponse = null;\n this.globalValueConverters = ['authFilterValueConverter'];\n this.defaultHeadersForTokenRequests = {\n 'Content-Type': 'application/json'\n };\n this.providers = {\n facebook: {\n name: 'facebook',\n url: '/auth/facebook',\n authorizationEndpoint: 'https://www.facebook.com/v2.5/dialog/oauth',\n redirectUri: _aureliaPal.PLATFORM.location.origin + '/',\n requiredUrlParams: ['display', 'scope'],\n scope: ['email'],\n scopeDelimiter: ',',\n display: 'popup',\n oauthType: '2.0',\n popupOptions: { width: 580, height: 400 }\n },\n google: {\n name: 'google',\n url: '/auth/google',\n authorizationEndpoint: 'https://accounts.google.com/o/oauth2/auth',\n redirectUri: _aureliaPal.PLATFORM.location.origin,\n requiredUrlParams: ['scope'],\n optionalUrlParams: ['display', 'state'],\n scope: ['profile', 'email'],\n scopePrefix: 'openid',\n scopeDelimiter: ' ',\n display: 'popup',\n oauthType: '2.0',\n popupOptions: { width: 452, height: 633 },\n state: randomState\n },\n github: {\n name: 'github',\n url: '/auth/github',\n authorizationEndpoint: 'https://github.com/login/oauth/authorize',\n redirectUri: _aureliaPal.PLATFORM.location.origin,\n optionalUrlParams: ['scope'],\n scope: ['user:email'],\n scopeDelimiter: ' ',\n oauthType: '2.0',\n popupOptions: { width: 1020, height: 618 }\n },\n instagram: {\n name: 'instagram',\n url: '/auth/instagram',\n authorizationEndpoint: 'https://api.instagram.com/oauth/authorize',\n redirectUri: _aureliaPal.PLATFORM.location.origin,\n requiredUrlParams: ['scope'],\n scope: ['basic'],\n scopeDelimiter: '+',\n oauthType: '2.0'\n },\n linkedin: {\n name: 'linkedin',\n url: '/auth/linkedin',\n authorizationEndpoint: 'https://www.linkedin.com/uas/oauth2/authorization',\n redirectUri: _aureliaPal.PLATFORM.location.origin,\n requiredUrlParams: ['state'],\n scope: ['r_emailaddress'],\n scopeDelimiter: ' ',\n state: 'STATE',\n oauthType: '2.0',\n popupOptions: { width: 527, height: 582 }\n },\n twitter: {\n name: 'twitter',\n url: '/auth/twitter',\n authorizationEndpoint: 'https://api.twitter.com/oauth/authenticate',\n redirectUri: _aureliaPal.PLATFORM.location.origin,\n oauthType: '1.0',\n popupOptions: { width: 495, height: 645 }\n },\n twitch: {\n name: 'twitch',\n url: '/auth/twitch',\n authorizationEndpoint: 'https://api.twitch.tv/kraken/oauth2/authorize',\n redirectUri: _aureliaPal.PLATFORM.location.origin,\n requiredUrlParams: ['scope'],\n scope: ['user_read'],\n scopeDelimiter: ' ',\n display: 'popup',\n oauthType: '2.0',\n popupOptions: { width: 500, height: 560 }\n },\n live: {\n name: 'live',\n url: '/auth/live',\n authorizationEndpoint: 'https://login.live.com/oauth20_authorize.srf',\n redirectUri: _aureliaPal.PLATFORM.location.origin,\n requiredUrlParams: ['display', 'scope'],\n scope: ['wl.emails'],\n scopeDelimiter: ' ',\n display: 'popup',\n oauthType: '2.0',\n popupOptions: { width: 500, height: 560 }\n },\n yahoo: {\n name: 'yahoo',\n url: '/auth/yahoo',\n authorizationEndpoint: 'https://api.login.yahoo.com/oauth2/request_auth',\n redirectUri: _aureliaPal.PLATFORM.location.origin,\n scope: [],\n scopeDelimiter: ',',\n oauthType: '2.0',\n popupOptions: { width: 559, height: 519 }\n },\n bitbucket: {\n name: 'bitbucket',\n url: '/auth/bitbucket',\n authorizationEndpoint: 'https://bitbucket.org/site/oauth2/authorize',\n redirectUri: _aureliaPal.PLATFORM.location.origin + '/',\n requiredUrlParams: ['scope'],\n scope: ['email'],\n scopeDelimiter: ' ',\n oauthType: '2.0',\n popupOptions: { width: 1028, height: 529 }\n },\n azure_ad: {\n name: 'azure_ad',\n url: '/auth/azure_ad',\n authorizationEndpoint: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',\n redirectUri: window.location.origin,\n logoutEndpoint: 'https://login.microsoftonline.com/common/oauth2/v2.0/logout',\n postLogoutRedirectUri: window.location.origin,\n requiredUrlParams: ['scope'],\n scope: ['user.read'],\n scopeDelimiter: ' ',\n oauthType: '2.0'\n },\n auth0: {\n name: 'auth0',\n oauthType: 'auth0-lock',\n clientId: 'your_client_id',\n clientDomain: 'your_domain_url',\n display: 'popup',\n lockOptions: {},\n responseType: 'token',\n state: randomState\n }\n };\n this._authToken = 'Bearer';\n this._responseTokenProp = 'access_token';\n this._tokenName = 'token';\n this._tokenRoot = false;\n this._tokenPrefix = 'aurelia';\n this._logoutOnInvalidtoken = false;\n }\n\n BaseConfig.prototype.joinBase = function joinBase(url) {\n return (0, _aureliaPath.join)(this.baseUrl, url);\n };\n\n BaseConfig.prototype.configure = function configure(incoming) {\n for (var key in incoming) {\n if (incoming.hasOwnProperty(key)) {\n var value = incoming[key];\n\n if (value !== undefined) {\n if (Array.isArray(value) || (typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object' || value === null) {\n this[key] = value;\n } else {\n (0, _extend2.default)(true, this[key], value);\n }\n }\n }\n }\n };\n\n BaseConfig.prototype.getOptionsForTokenRequests = function getOptionsForTokenRequests() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return (0, _extend2.default)(true, {}, { headers: this.defaultHeadersForTokenRequests }, options);\n };\n\n _createClass(BaseConfig, [{\n key: 'authToken',\n set: function set(authToken) {\n logger.warn('BaseConfig.authToken is deprecated. Use BaseConfig.authTokenType instead.');\n this._authTokenType = authToken;\n this.authTokenType = authToken;\n\n return authToken;\n },\n get: function get() {\n return this._authTokenType;\n }\n }, {\n key: 'responseTokenProp',\n set: function set(responseTokenProp) {\n logger.warn('BaseConfig.responseTokenProp is deprecated. Use BaseConfig.accessTokenProp instead.');\n this._responseTokenProp = responseTokenProp;\n this.accessTokenProp = responseTokenProp;\n\n return responseTokenProp;\n },\n get: function get() {\n return this._responseTokenProp;\n }\n }, {\n key: 'tokenRoot',\n set: function set(tokenRoot) {\n logger.warn('BaseConfig.tokenRoot is deprecated. Use BaseConfig.accessTokenRoot instead.');\n this._tokenRoot = tokenRoot;\n this.accessTokenRoot = tokenRoot;\n\n return tokenRoot;\n },\n get: function get() {\n return this._tokenRoot;\n }\n }, {\n key: 'tokenName',\n set: function set(tokenName) {\n logger.warn('BaseConfig.tokenName is deprecated. Use BaseConfig.accessTokenName instead.');\n this._tokenName = tokenName;\n this.accessTokenName = tokenName;\n\n return tokenName;\n },\n get: function get() {\n return this._tokenName;\n }\n }, {\n key: 'tokenPrefix',\n set: function set(tokenPrefix) {\n logger.warn('BaseConfig.tokenPrefix is obsolete. Use BaseConfig.storageKey instead.');\n this._tokenPrefix = tokenPrefix;\n\n return tokenPrefix;\n },\n get: function get() {\n return this._tokenPrefix || 'aurelia';\n }\n }, {\n key: 'current',\n get: function get() {\n logger.warn('Getter BaseConfig.current is deprecated. Use BaseConfig directly instead.');\n\n return this;\n },\n set: function set(_) {\n throw new Error('Setter BaseConfig.current has been removed. Use BaseConfig directly instead.');\n }\n }, {\n key: '_current',\n get: function get() {\n logger.warn('Getter BaseConfig._current is deprecated. Use BaseConfig directly instead.');\n\n return this;\n },\n set: function set(_) {\n throw new Error('Setter BaseConfig._current has been removed. Use BaseConfig directly instead.');\n }\n }, {\n key: 'logoutOnInvalidtoken',\n set: function set(logoutOnInvalidtoken) {\n logger.warn('BaseConfig.logoutOnInvalidtoken is obsolete. Use BaseConfig.logoutOnInvalidToken instead.');\n this._logoutOnInvalidtoken = logoutOnInvalidtoken;\n this.logoutOnInvalidToken = logoutOnInvalidtoken;\n\n return logoutOnInvalidtoken;\n },\n get: function get() {\n return this._logoutOnInvalidtoken;\n }\n }]);\n\n return BaseConfig;\n}();\n\nfunction randomState() {\n var rand = Math.random().toString(36).substr(2);\n\n return encodeURIComponent(rand);\n}\n\nvar Storage = exports.Storage = (_dec = (0, _aureliaDependencyInjection.inject)(BaseConfig), _dec(_class2 = function () {\n function Storage(config) {\n \n\n this.config = config;\n }\n\n Storage.prototype.get = function get(key) {\n return _aureliaPal.PLATFORM.global[this.config.storage].getItem(key);\n };\n\n Storage.prototype.set = function set(key, value) {\n _aureliaPal.PLATFORM.global[this.config.storage].setItem(key, value);\n };\n\n Storage.prototype.remove = function remove(key) {\n _aureliaPal.PLATFORM.global[this.config.storage].removeItem(key);\n };\n\n return Storage;\n}()) || _class2);\nvar AuthLock = exports.AuthLock = (_dec2 = (0, _aureliaDependencyInjection.inject)(Storage, BaseConfig), _dec2(_class3 = function () {\n function AuthLock(storage, config) {\n \n\n this.storage = storage;\n this.config = config;\n this.defaults = {\n name: null,\n state: null,\n scope: null,\n scopeDelimiter: ' ',\n redirectUri: null,\n clientId: null,\n clientDomain: null,\n display: 'popup',\n lockOptions: {},\n popupOptions: null,\n responseType: 'token'\n };\n }\n\n AuthLock.prototype.open = function open(options, userData) {\n var _this3 = this;\n\n if (typeof _aureliaPal.PLATFORM.global.Auth0Lock !== 'function') {\n throw new Error('Auth0Lock was not found in global scope. Please load it before using this provider.');\n }\n var provider = (0, _extend2.default)(true, {}, this.defaults, options);\n var stateName = provider.name + '_state';\n\n if (typeof provider.state === 'function') {\n this.storage.set(stateName, provider.state());\n } else if (typeof provider.state === 'string') {\n this.storage.set(stateName, provider.state);\n }\n\n var opts = {\n auth: {\n params: {}\n }\n };\n\n if (Array.isArray(provider.scope) && provider.scope.length) {\n opts.auth.params.scope = provider.scope.join(provider.scopeDelimiter);\n }\n if (provider.state) {\n opts.auth.params.state = this.storage.get(provider.name + '_state');\n }\n if (provider.display === 'popup') {\n opts.auth.redirect = false;\n } else if (typeof provider.redirectUri === 'string') {\n opts.auth.redirect = true;\n opts.auth.redirectUrl = provider.redirectUri;\n }\n if (_typeof(provider.popupOptions) === 'object') {\n opts.popupOptions = provider.popupOptions;\n }\n if (typeof provider.responseType === 'string') {\n opts.auth.responseType = provider.responseType;\n }\n var lockOptions = (0, _extend2.default)(true, {}, provider.lockOptions, opts);\n\n this.lock = this.lock || new _aureliaPal.PLATFORM.global.Auth0Lock(provider.clientId, provider.clientDomain, lockOptions);\n\n var openPopup = new Promise(function (resolve, reject) {\n _this3.lock.on('authenticated', function (authResponse) {\n if (!lockOptions.auth.redirect) {\n _this3.lock.hide();\n }\n resolve({\n access_token: authResponse.accessToken,\n id_token: authResponse.idToken\n });\n });\n _this3.lock.on('unrecoverable_error', function (err) {\n if (!lockOptions.auth.redirect) {\n _this3.lock.hide();\n }\n reject(err);\n });\n _this3.lock.show();\n });\n\n return openPopup.then(function (lockResponse) {\n if (provider.responseType === 'token' || provider.responseType === 'id_token%20token' || provider.responseType === 'token%20id_token' || provider.responseType === 'token id_token') {\n return lockResponse;\n }\n\n throw new Error('Only `token` responseType is supported');\n });\n };\n\n return AuthLock;\n}()) || _class3);\nvar OAuth1 = exports.OAuth1 = (_dec3 = (0, _aureliaDependencyInjection.inject)(Storage, Popup, BaseConfig), _dec3(_class4 = function () {\n function OAuth1(storage, popup, config) {\n \n\n this.storage = storage;\n this.config = config;\n this.popup = popup;\n this.defaults = {\n url: null,\n name: null,\n popupOptions: null,\n redirectUri: null,\n authorizationEndpoint: null\n };\n }\n\n OAuth1.prototype.open = function open(options, userData) {\n var _this4 = this;\n\n var provider = (0, _extend2.default)(true, {}, this.defaults, options);\n var serverUrl = this.config.joinBase(provider.url);\n\n if (this.config.platform !== 'mobile') {\n this.popup = this.popup.open('', provider.name, provider.popupOptions);\n }\n\n return this.config.client.post(serverUrl).then(function (response) {\n var url = provider.authorizationEndpoint + '?' + (0, _aureliaPath.buildQueryString)(response);\n\n if (_this4.config.platform === 'mobile') {\n _this4.popup = _this4.popup.open(url, provider.name, provider.popupOptions);\n } else {\n _this4.popup.popupWindow.location = url;\n }\n\n var popupListener = _this4.config.platform === 'mobile' ? _this4.popup.eventListener(provider.redirectUri) : _this4.popup.pollPopup();\n\n return popupListener.then(function (result) {\n return _this4.exchangeForToken(result, userData, provider);\n });\n });\n };\n\n OAuth1.prototype.exchangeForToken = function exchangeForToken(oauthData, userData, provider) {\n var data = (0, _extend2.default)(true, {}, userData, oauthData);\n var serverUrl = this.config.joinBase(provider.url);\n var credentials = this.config.withCredentials ? 'include' : 'same-origin';\n\n return this.config.client.post(serverUrl, data, { credentials: credentials });\n };\n\n return OAuth1;\n}()) || _class4);\nvar OAuth2 = exports.OAuth2 = (_dec4 = (0, _aureliaDependencyInjection.inject)(Storage, Popup, BaseConfig), _dec4(_class5 = function () {\n function OAuth2(storage, popup, config) {\n \n\n this.storage = storage;\n this.config = config;\n this.popup = popup;\n this.defaults = {\n url: null,\n name: null,\n state: null,\n scope: null,\n scopeDelimiter: null,\n redirectUri: null,\n popupOptions: null,\n authorizationEndpoint: null,\n responseParams: null,\n requiredUrlParams: null,\n optionalUrlParams: null,\n defaultUrlParams: ['response_type', 'client_id', 'redirect_uri'],\n responseType: 'code'\n };\n }\n\n OAuth2.prototype.open = function open(options, userData) {\n var _this5 = this;\n\n var provider = (0, _extend2.default)(true, {}, this.defaults, options);\n var stateName = provider.name + '_state';\n\n if (typeof provider.state === 'function') {\n this.storage.set(stateName, provider.state());\n } else if (typeof provider.state === 'string') {\n this.storage.set(stateName, provider.state);\n }\n\n var url = provider.authorizationEndpoint + '?' + (0, _aureliaPath.buildQueryString)(this.buildQuery(provider));\n var popup = this.popup.open(url, provider.name, provider.popupOptions);\n var openPopup = this.config.platform === 'mobile' ? popup.eventListener(provider.redirectUri) : popup.pollPopup();\n\n return openPopup.then(function (oauthData) {\n if (provider.responseType === 'token' || provider.responseType === 'id_token token' || provider.responseType === 'token id_token') {\n return oauthData;\n }\n if (oauthData.state && oauthData.state !== _this5.storage.get(stateName)) {\n return Promise.reject('OAuth 2.0 state parameter mismatch.');\n }\n\n return _this5.exchangeForToken(oauthData, userData, provider);\n });\n };\n\n OAuth2.prototype.exchangeForToken = function exchangeForToken(oauthData, userData, provider) {\n var data = (0, _extend2.default)(true, {}, userData, {\n clientId: provider.clientId,\n redirectUri: provider.redirectUri\n }, oauthData);\n\n var serverUrl = this.config.joinBase(provider.url);\n var credentials = this.config.withCredentials ? 'include' : 'same-origin';\n\n return this.config.client.post(serverUrl, data, { credentials: credentials });\n };\n\n OAuth2.prototype.buildQuery = function buildQuery(provider) {\n var _this6 = this;\n\n var query = {};\n var urlParams = ['defaultUrlParams', 'requiredUrlParams', 'optionalUrlParams'];\n\n urlParams.forEach(function (params) {\n (provider[params] || []).forEach(function (paramName) {\n var camelizedName = camelCase(paramName);\n var paramValue = typeof provider[paramName] === 'function' ? provider[paramName]() : provider[camelizedName];\n\n if (paramName === 'state') {\n paramValue = encodeURIComponent(_this6.storage.get(provider.name + '_state'));\n }\n\n if (paramName === 'scope' && Array.isArray(paramValue)) {\n paramValue = paramValue.join(provider.scopeDelimiter);\n\n if (provider.scopePrefix) {\n paramValue = provider.scopePrefix + provider.scopeDelimiter + paramValue;\n }\n }\n\n query[paramName] = paramValue;\n });\n });\n\n return query;\n };\n\n OAuth2.prototype.close = function close(options) {\n var provider = (0, _extend2.default)(true, {}, this.defaults, options);\n var url = provider.logoutEndpoint + '?' + (0, _aureliaPath.buildQueryString)(this.buildLogoutQuery(provider));\n var popup = this.popup.open(url, provider.name, provider.popupOptions);\n var openPopup = this.config.platform === 'mobile' ? popup.eventListener(provider.postLogoutRedirectUri) : popup.pollPopup();\n\n return openPopup;\n };\n\n OAuth2.prototype.buildLogoutQuery = function buildLogoutQuery(provider) {\n var query = {};\n var authResponse = this.storage.get(this.config.storageKey);\n\n if (provider.postLogoutRedirectUri) {\n query.post_logout_redirect_uri = provider.postLogoutRedirectUri;\n }\n if (this.storage.get(provider.name + '_state')) {\n query.state = this.storage.get(provider.name + '_state');\n }\n if (JSON.parse(authResponse).id_token) {\n query.id_token_hint = JSON.parse(authResponse).id_token;\n }\n\n return query;\n };\n\n return OAuth2;\n}()) || _class5);\n\nfunction camelCase(name) {\n return name.replace(/([:\\-_]+(.))/g, function (_, separator, letter, offset) {\n return offset ? letter.toUpperCase() : letter;\n });\n}\n\nvar Authentication = exports.Authentication = (_dec5 = (0, _aureliaDependencyInjection.inject)(Storage, BaseConfig, OAuth1, OAuth2, AuthLock), _dec6 = (0, _aureliaMetadata.deprecated)({ message: 'Use baseConfig.loginRoute instead.' }), _dec7 = (0, _aureliaMetadata.deprecated)({ message: 'Use baseConfig.loginRedirect instead.' }), _dec8 = (0, _aureliaMetadata.deprecated)({ message: 'Use baseConfig.joinBase(baseConfig.loginUrl) instead.' }), _dec9 = (0, _aureliaMetadata.deprecated)({ message: 'Use baseConfig.joinBase(baseConfig.signupUrl) instead.' }), _dec10 = (0, _aureliaMetadata.deprecated)({ message: 'Use baseConfig.joinBase(baseConfig.profileUrl) instead.' }), _dec11 = (0, _aureliaMetadata.deprecated)({ message: 'Use .getAccessToken() instead.' }), _dec5(_class6 = (_class7 = function () {\n function Authentication(storage, config, oAuth1, oAuth2, auth0Lock) {\n \n\n this.storage = storage;\n this.config = config;\n this.oAuth1 = oAuth1;\n this.oAuth2 = oAuth2;\n this.auth0Lock = auth0Lock;\n this.updateTokenCallstack = [];\n this.accessToken = null;\n this.refreshToken = null;\n this.idToken = null;\n this.payload = null;\n this.exp = null;\n this.responseAnalyzed = false;\n }\n\n Authentication.prototype.getLoginRoute = function getLoginRoute() {\n return this.config.loginRoute;\n };\n\n Authentication.prototype.getLoginRedirect = function getLoginRedirect() {\n return this.config.loginRedirect;\n };\n\n Authentication.prototype.getLoginUrl = function getLoginUrl() {\n return this.Config.joinBase(this.config.loginUrl);\n };\n\n Authentication.prototype.getSignupUrl = function getSignupUrl() {\n return this.Config.joinBase(this.config.signupUrl);\n };\n\n Authentication.prototype.getProfileUrl = function getProfileUrl() {\n return this.Config.joinBase(this.config.profileUrl);\n };\n\n Authentication.prototype.getToken = function getToken() {\n return this.getAccessToken();\n };\n\n Authentication.prototype.getResponseObject = function getResponseObject() {\n return JSON.parse(this.storage.get(this.config.storageKey));\n };\n\n Authentication.prototype.setResponseObject = function setResponseObject(response) {\n if (response) {\n if (this.config.keepOldResponseProperties) {\n var oldResponse = this.getResponseObject();\n\n response = Object.assign({}, oldResponse, response);\n }\n this.getDataFromResponse(response);\n this.storage.set(this.config.storageKey, JSON.stringify(response));\n\n return;\n }\n this.accessToken = null;\n this.refreshToken = null;\n this.idToken = null;\n this.payload = null;\n this.exp = null;\n this.responseAnalyzed = false;\n\n this.storage.remove(this.config.storageKey);\n };\n\n Authentication.prototype.getAccessToken = function getAccessToken() {\n if (!this.responseAnalyzed) this.getDataFromResponse(this.getResponseObject());\n\n return this.accessToken;\n };\n\n Authentication.prototype.getRefreshToken = function getRefreshToken() {\n if (!this.responseAnalyzed) this.getDataFromResponse(this.getResponseObject());\n\n return this.refreshToken;\n };\n\n Authentication.prototype.getIdToken = function getIdToken() {\n if (!this.responseAnalyzed) this.getDataFromResponse(this.getResponseObject());\n\n return this.idToken;\n };\n\n Authentication.prototype.getPayload = function getPayload() {\n if (!this.responseAnalyzed) this.getDataFromResponse(this.getResponseObject());\n\n return this.payload;\n };\n\n Authentication.prototype.getIdPayload = function getIdPayload() {\n if (!this.responseAnalyzed) this.getDataFromResponse(this.getResponseObject());\n\n return this.idPayload;\n };\n\n Authentication.prototype.getExp = function getExp() {\n if (!this.responseAnalyzed) this.getDataFromResponse(this.getResponseObject());\n\n return this.exp;\n };\n\n Authentication.prototype.getTtl = function getTtl() {\n var exp = this.getExp();\n\n return Number.isNaN(exp) ? NaN : exp - Math.round(new Date().getTime() / 1000);\n };\n\n Authentication.prototype.isTokenExpired = function isTokenExpired() {\n var timeLeft = this.getTtl();\n\n return Number.isNaN(timeLeft) ? undefined : timeLeft < 0;\n };\n\n Authentication.prototype.isAuthenticated = function isAuthenticated() {\n return !!this.getAccessToken() && !this.isTokenExpired();\n };\n\n Authentication.prototype.getDataFromResponse = function getDataFromResponse(response) {\n var config = this.config;\n\n this.accessToken = typeof this.config.getAccessTokenFromResponse === 'function' ? this.config.getAccessTokenFromResponse(response) : this.getTokenFromResponse(response, config.accessTokenProp, config.accessTokenName, config.accessTokenRoot);\n\n this.refreshToken = null;\n if (config.useRefreshToken) {\n try {\n this.refreshToken = typeof this.config.getRefreshTokenFromResponse === 'function' ? this.config.getRefreshTokenFromResponse(response) : this.getTokenFromResponse(response, config.refreshTokenProp, config.refreshTokenName, config.refreshTokenRoot);\n } catch (e) {\n this.refreshToken = null;\n\n logger.warn('useRefreshToken is set, but could not extract a refresh token');\n }\n }\n\n this.idToken = null;\n try {\n this.idToken = this.getTokenFromResponse(response, config.idTokenProp, config.idTokenName, config.idTokenRoot);\n } catch (e) {\n this.idToken = null;\n }\n\n this.payload = getPayload(this.accessToken);\n this.idPayload = getPayload(this.idToken);\n\n this.exp = parseInt(typeof this.config.getExpirationDateFromResponse === 'function' ? this.config.getExpirationDateFromResponse(response) : this.payload && this.payload.exp, 10) || NaN;\n\n this.responseAnalyzed = true;\n\n return {\n accessToken: this.accessToken,\n refreshToken: this.refreshToken,\n idToken: this.idToken,\n payload: this.payload,\n exp: this.exp\n };\n };\n\n Authentication.prototype.getTokenFromResponse = function getTokenFromResponse(response, tokenProp, tokenName, tokenRoot) {\n if (!response) return undefined;\n\n var responseTokenProp = tokenProp.split('.').reduce(function (o, x) {\n return o[x];\n }, response);\n\n if (typeof responseTokenProp === 'string') {\n return responseTokenProp;\n }\n\n if ((typeof responseTokenProp === 'undefined' ? 'undefined' : _typeof(responseTokenProp)) === 'object') {\n var tokenRootData = tokenRoot && tokenRoot.split('.').reduce(function (o, x) {\n return o[x];\n }, responseTokenProp);\n var _token = tokenRootData ? tokenRootData[tokenName] : responseTokenProp[tokenName];\n\n if (!_token) {\n var error = new Error('Token not found in response');\n\n error.responseObject = response;\n throw error;\n }\n\n return _token;\n }\n\n var token = response[tokenName] === undefined ? null : response[tokenName];\n\n if (!token) {\n var _error = new Error('Token not found in response');\n\n _error.responseObject = response;\n throw _error;\n }\n\n return token;\n };\n\n Authentication.prototype.toUpdateTokenCallstack = function toUpdateTokenCallstack() {\n var _this7 = this;\n\n return new Promise(function (resolve) {\n return _this7.updateTokenCallstack.push(resolve);\n });\n };\n\n Authentication.prototype.resolveUpdateTokenCallstack = function resolveUpdateTokenCallstack(response) {\n this.updateTokenCallstack.map(function (resolve) {\n return resolve(response);\n });\n this.updateTokenCallstack = [];\n };\n\n Authentication.prototype.authenticate = function authenticate(name) {\n var userData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var oauthType = this.config.providers[name].type;\n\n if (oauthType) {\n logger.warn('DEPRECATED: Setting provider.type is deprecated and replaced by provider.oauthType');\n } else {\n oauthType = this.config.providers[name].oauthType;\n }\n\n var providerLogin = void 0;\n\n if (oauthType === 'auth0-lock') {\n providerLogin = this.auth0Lock;\n } else {\n providerLogin = oauthType === '1.0' ? this.oAuth1 : this.oAuth2;\n }\n\n return providerLogin.open(this.config.providers[name], userData);\n };\n\n Authentication.prototype.logout = function logout(name) {\n var rtnValue = Promise.resolve('Not Applicable');\n\n if (this.config.providers[name].oauthType !== '2.0' || !this.config.providers[name].logoutEndpoint) {\n return rtnValue;\n }\n\n return this.oAuth2.close(this.config.providers[name]);\n };\n\n Authentication.prototype.redirect = function redirect(redirectUrl, defaultRedirectUrl, query) {\n if (redirectUrl === true) {\n logger.warn('DEPRECATED: Setting redirectUrl === true to actually *not redirect* is deprecated. Set redirectUrl === \\'\\' instead.');\n\n return;\n }\n\n if (redirectUrl === false) {\n logger.warn('BREAKING CHANGE: Setting redirectUrl === false to actually *do redirect* is deprecated. Set redirectUrl to undefined or null to use the defaultRedirectUrl if so desired.');\n }\n\n if (redirectUrl === 0) {\n logger.warn('BREAKING CHANGE: Setting redirectUrl === 0 is deprecated. Set redirectUrl to \\'\\' instead.');\n\n return;\n }\n\n if (redirectUrl === '') {\n return;\n }\n\n if (typeof redirectUrl === 'string') {\n _aureliaPal.PLATFORM.location.href = encodeURI(redirectUrl + (query ? '?' + (0, _aureliaPath.buildQueryString)(query) : ''));\n } else if (defaultRedirectUrl) {\n _aureliaPal.PLATFORM.location.href = defaultRedirectUrl + (query ? '?' + (0, _aureliaPath.buildQueryString)(query) : '');\n }\n };\n\n _createClass(Authentication, [{\n key: 'responseObject',\n get: function get() {\n logger.warn('Getter Authentication.responseObject is deprecated. Use Authentication.getResponseObject() instead.');\n\n return this.getResponseObject();\n },\n set: function set(response) {\n logger.warn('Setter Authentication.responseObject is deprecated. Use AuthServive.setResponseObject(response) instead.');\n this.setResponseObject(response);\n }\n }, {\n key: 'hasDataStored',\n get: function get() {\n logger.warn('Authentication.hasDataStored is deprecated. Use Authentication.responseAnalyzed instead.');\n\n return this.responseAnalyzed;\n }\n }]);\n\n return Authentication;\n}(), (_applyDecoratedDescriptor(_class7.prototype, 'getLoginRoute', [_dec6], Object.getOwnPropertyDescriptor(_class7.prototype, 'getLoginRoute'), _class7.prototype), _applyDecoratedDescriptor(_class7.prototype, 'getLoginRedirect', [_dec7], Object.getOwnPropertyDescriptor(_class7.prototype, 'getLoginRedirect'), _class7.prototype), _applyDecoratedDescriptor(_class7.prototype, 'getLoginUrl', [_dec8], Object.getOwnPropertyDescriptor(_class7.prototype, 'getLoginUrl'), _class7.prototype), _applyDecoratedDescriptor(_class7.prototype, 'getSignupUrl', [_dec9], Object.getOwnPropertyDescriptor(_class7.prototype, 'getSignupUrl'), _class7.prototype), _applyDecoratedDescriptor(_class7.prototype, 'getProfileUrl', [_dec10], Object.getOwnPropertyDescriptor(_class7.prototype, 'getProfileUrl'), _class7.prototype), _applyDecoratedDescriptor(_class7.prototype, 'getToken', [_dec11], Object.getOwnPropertyDescriptor(_class7.prototype, 'getToken'), _class7.prototype)), _class7)) || _class6);\n\nfunction getPayload(token) {\n var payload = null;\n\n try {\n payload = token ? (0, _jwtDecode2.default)(token) : null;\n } catch (_) {}\n\n return payload;\n}\n\nvar AuthService = exports.AuthService = (_dec12 = (0, _aureliaDependencyInjection.inject)(Authentication, BaseConfig, _aureliaTemplatingResources.BindingSignaler, _aureliaEventAggregator.EventAggregator), _dec13 = (0, _aureliaMetadata.deprecated)({ message: 'Use .getAccessToken() instead.' }), _dec12(_class8 = (_class9 = function () {\n function AuthService(authentication, config, bindingSignaler, eventAggregator) {\n var _this8 = this;\n\n \n\n this.authenticated = false;\n this.timeoutID = 0;\n\n this.storageEventHandler = function (event) {\n if (event.key !== _this8.config.storageKey || event.newValue === event.oldValue) {\n return;\n }\n\n if (event.newValue) {\n _this8.authentication.storage.set(_this8.config.storageKey, event.newValue);\n } else {\n _this8.authentication.storage.remove(_this8.config.storageKey);\n }\n\n if (event.newValue && _this8.config.autoUpdateToken && _this8.authentication.getAccessToken() && _this8.authentication.getRefreshToken()) {\n _this8.setResponseObject(_this8.authentication.getResponseObject());\n\n return;\n }\n\n logger.info('Stored token changed event');\n\n var wasAuthenticated = _this8.authenticated;\n\n _this8.authentication.responseAnalyzed = false;\n _this8.updateAuthenticated();\n\n if (wasAuthenticated === _this8.authenticated) {\n return;\n }\n\n if (_this8.config.storageChangedRedirect) {\n _aureliaPal.PLATFORM.location.href = _this8.config.storageChangedRedirect;\n }\n\n if (_this8.config.storageChangedReload) {\n _aureliaPal.PLATFORM.location.reload();\n }\n };\n\n this.authentication = authentication;\n this.config = config;\n this.bindingSignaler = bindingSignaler;\n this.eventAggregator = eventAggregator;\n\n var oldStorageKey = config.tokenPrefix ? config.tokenPrefix + '_' + config.tokenName : config.tokenName;\n var oldToken = authentication.storage.get(oldStorageKey);\n\n if (oldToken) {\n logger.info('Found token with deprecated format in storage. Converting it to new format. No further action required.');\n var fakeOldResponse = {};\n\n fakeOldResponse[config.accessTokenProp] = oldToken;\n this.setResponseObject(fakeOldResponse);\n authentication.storage.remove(oldStorageKey);\n }\n\n this.setResponseObject(this.authentication.getResponseObject());\n\n _aureliaPal.PLATFORM.addEventListener('storage', this.storageEventHandler);\n }\n\n AuthService.prototype.setTimeout = function setTimeout(ttl) {\n var _this9 = this;\n\n var maxTimeout = 2147483647;\n if (ttl > maxTimeout) {\n ttl = maxTimeout;\n logger.warn('Token timeout limited to ', maxTimeout, ' ms (ca 24.85d).');\n }\n\n this.clearTimeout();\n\n var expiredTokenHandler = function expiredTokenHandler() {\n if (_this9.config.autoUpdateToken && _this9.authentication.getAccessToken() && _this9.authentication.getRefreshToken()) {\n _this9.updateToken().catch(function (error) {\n return logger.warn(error.message);\n });\n\n return;\n }\n\n _this9.setResponseObject(null);\n\n if (_this9.config.expiredRedirect) {\n _aureliaPal.PLATFORM.location.assign(_this9.config.expiredRedirect);\n }\n };\n\n this.timeoutID = _aureliaPal.PLATFORM.global.setTimeout(expiredTokenHandler, ttl);\n _aureliaPal.PLATFORM.addEventListener('focus', function () {\n if (_this9.isTokenExpired()) {\n expiredTokenHandler();\n }\n });\n };\n\n AuthService.prototype.clearTimeout = function clearTimeout() {\n if (this.timeoutID) {\n _aureliaPal.PLATFORM.global.clearTimeout(this.timeoutID);\n }\n this.timeoutID = 0;\n };\n\n AuthService.prototype.setResponseObject = function setResponseObject(response) {\n this.authentication.setResponseObject(response);\n\n this.updateAuthenticated();\n };\n\n AuthService.prototype.updateAuthenticated = function updateAuthenticated() {\n this.clearTimeout();\n\n var wasAuthenticated = this.authenticated;\n\n this.authenticated = this.authentication.isAuthenticated();\n\n if (this.authenticated && !Number.isNaN(this.authentication.exp)) {\n this.setTimeout(this.getTtl() * 1000);\n }\n\n if (wasAuthenticated !== this.authenticated) {\n this.bindingSignaler.signal('authentication-change');\n this.eventAggregator.publish('authentication-change', this.authenticated);\n\n logger.info('Authorization changed to: ' + this.authenticated);\n }\n };\n\n AuthService.prototype.getMe = function getMe(criteriaOrId) {\n if (typeof criteriaOrId === 'string' || typeof criteriaOrId === 'number') {\n criteriaOrId = { id: criteriaOrId };\n }\n\n return this.client.find(this.config.joinBase(this.config.profileUrl), criteriaOrId);\n };\n\n AuthService.prototype.updateMe = function updateMe(body, criteriaOrId) {\n if (typeof criteriaOrId === 'string' || typeof criteriaOrId === 'number') {\n criteriaOrId = { id: criteriaOrId };\n }\n if (this.config.profileMethod === 'put') {\n return this.client.update(this.config.joinBase(this.config.profileUrl), criteriaOrId, body);\n }\n\n return this.client.patch(this.config.joinBase(this.config.profileUrl), criteriaOrId, body);\n };\n\n AuthService.prototype.getAccessToken = function getAccessToken() {\n return this.authentication.getAccessToken();\n };\n\n AuthService.prototype.getCurrentToken = function getCurrentToken() {\n return this.getAccessToken();\n };\n\n AuthService.prototype.getRefreshToken = function getRefreshToken() {\n return this.authentication.getRefreshToken();\n };\n\n AuthService.prototype.getIdToken = function getIdToken() {\n return this.authentication.getIdToken();\n };\n\n AuthService.prototype.isAuthenticated = function isAuthenticated(callback) {\n var _this10 = this;\n\n this.authentication.responseAnalyzed = false;\n\n var authenticated = this.authentication.isAuthenticated();\n\n if (!authenticated && this.config.autoUpdateToken && this.authentication.getAccessToken() && this.authentication.getRefreshToken()) {\n this.updateToken().then(function () {\n if (typeof callback === 'function') {\n callback(_this10.authenticated);\n }\n }).catch(function (error) {\n return logger.warn(error.message);\n });\n\n authenticated = true;\n } else if (typeof callback === 'function') {\n _aureliaPal.PLATFORM.global.setTimeout(function () {\n try {\n callback(authenticated);\n } catch (error) {\n logger.warn(error.message);\n }\n }, 1);\n }\n\n return authenticated;\n };\n\n AuthService.prototype.getExp = function getExp() {\n return this.authentication.getExp();\n };\n\n AuthService.prototype.getTtl = function getTtl() {\n return this.authentication.getTtl();\n };\n\n AuthService.prototype.isTokenExpired = function isTokenExpired() {\n return this.authentication.isTokenExpired();\n };\n\n AuthService.prototype.getTokenPayload = function getTokenPayload() {\n return this.authentication.getPayload();\n };\n\n AuthService.prototype.getIdTokenPayload = function getIdTokenPayload() {\n return this.authentication.getIdPayload();\n };\n\n AuthService.prototype.updateToken = function updateToken() {\n var _this11 = this;\n\n if (!this.authentication.getRefreshToken()) {\n return Promise.reject(new Error('refreshToken not set'));\n }\n\n if (this.authentication.updateTokenCallstack.length === 0) {\n var content = {\n grant_type: 'refresh_token'\n };\n\n if (this.config.clientId) {\n content.client_id = this.config.clientId;\n }\n if (this.config.clientSecret) {\n content.client_secret = this.config.clientSecret;\n }\n\n content[this.config.refreshTokenSubmitProp] = this.authentication.getRefreshToken();\n\n this.client.post(this.config.joinBase(this.config.refreshTokenUrl ? this.config.refreshTokenUrl : this.config.loginUrl), content, this.config.getOptionsForTokenRequests()).then(function (response) {\n _this11.setResponseObject(response);\n if (_this11.getAccessToken()) {\n _this11.authentication.resolveUpdateTokenCallstack(_this11.isAuthenticated());\n } else {\n _this11.setResponseObject(null);\n\n if (_this11.config.expiredRedirect) {\n _aureliaPal.PLATFORM.location.assign(_this11.config.expiredRedirect);\n }\n _this11.authentication.resolveUpdateTokenCallstack(Promise.reject(new Error('accessToken not found in refreshToken response')));\n }\n }).catch(function (error) {\n _this11.setResponseObject(null);\n\n if (_this11.config.expiredRedirect) {\n _aureliaPal.PLATFORM.location.assign(_this11.config.expiredRedirect);\n }\n _this11.authentication.resolveUpdateTokenCallstack(Promise.reject(error));\n });\n }\n\n return this.authentication.toUpdateTokenCallstack();\n };\n\n AuthService.prototype.signup = function signup(displayNameOrCredentials, emailOrOptions, passwordOrRedirectUri, options, redirectUri) {\n var _this12 = this;\n\n var normalized = {};\n\n if ((typeof displayNameOrCredentials === 'undefined' ? 'undefined' : _typeof(displayNameOrCredentials)) === 'object') {\n normalized.credentials = displayNameOrCredentials;\n normalized.options = emailOrOptions;\n normalized.redirectUri = passwordOrRedirectUri;\n } else {\n normalized.credentials = {\n 'displayName': displayNameOrCredentials,\n 'email': emailOrOptions,\n 'password': passwordOrRedirectUri\n };\n normalized.options = options;\n normalized.redirectUri = redirectUri;\n }\n\n return this.client.post(this.config.joinBase(this.config.signupUrl), normalized.credentials, normalized.options).then(function (response) {\n if (_this12.config.loginOnSignup) {\n _this12.setResponseObject(response);\n }\n _this12.authentication.redirect(normalized.redirectUri, _this12.config.signupRedirect);\n\n return response;\n });\n };\n\n AuthService.prototype.login = function login(emailOrCredentials, passwordOrOptions, optionsOrRedirectUri, redirectUri) {\n var _this13 = this;\n\n var normalized = {};\n\n if ((typeof emailOrCredentials === 'undefined' ? 'undefined' : _typeof(emailOrCredentials)) === 'object') {\n normalized.credentials = emailOrCredentials;\n normalized.options = this.config.getOptionsForTokenRequests(passwordOrOptions);\n normalized.redirectUri = optionsOrRedirectUri;\n } else if (typeof emailOrCredentials === 'string') {\n normalized.credentials = {\n 'email': emailOrCredentials,\n 'password': passwordOrOptions\n };\n normalized.options = this.config.getOptionsForTokenRequests(optionsOrRedirectUri);\n normalized.redirectUri = redirectUri;\n }\n\n if (this.config.clientId) {\n normalized.credentials.client_id = this.config.clientId;\n }\n\n if (this.config.clientSecret) {\n normalized.credentials.client_secret = this.config.clientSecret;\n }\n\n return this.client.post(this.config.joinBase(this.config.loginUrl), normalized.credentials, normalized.options).then(function (response) {\n _this13.setResponseObject(response);\n\n _this13.authentication.redirect(normalized.redirectUri, _this13.config.loginRedirect);\n\n return response;\n });\n };\n\n AuthService.prototype.logout = function logout(redirectUri, query, name) {\n var _this14 = this;\n\n var localLogout = function localLogout(response) {\n return new Promise(function (resolve) {\n _this14.setResponseObject(null);\n\n _this14.authentication.redirect(redirectUri, _this14.config.logoutRedirect, query);\n\n if (typeof _this14.onLogout === 'function') {\n _this14.onLogout(response);\n }\n resolve(response);\n });\n };\n\n if (name) {\n if (this.config.providers[name].logoutEndpoint) {\n return this.authentication.logout(name).then(function (logoutResponse) {\n var stateValue = _this14.authentication.storage.get(name + '_state');\n\n if (logoutResponse.state !== stateValue) {\n return Promise.reject('OAuth2 response state value differs');\n }\n\n return localLogout(logoutResponse);\n });\n }\n } else {\n return this.config.logoutUrl ? this.client.request(this.config.logoutMethod, this.config.joinBase(this.config.logoutUrl)).then(localLogout).catch(localLogout) : localLogout();\n }\n };\n\n AuthService.prototype.authenticate = function authenticate(name, redirectUri, userData) {\n var _this15 = this;\n\n return this.authentication.authenticate(name, userData).then(function (response) {\n _this15.setResponseObject(response);\n\n _this15.authentication.redirect(redirectUri, _this15.config.loginRedirect);\n\n return response;\n });\n };\n\n AuthService.prototype.unlink = function unlink(name, redirectUri) {\n var _this16 = this;\n\n var unlinkUrl = this.config.joinBase(this.config.unlinkUrl) + name;\n\n return this.client.request(this.config.unlinkMethod, unlinkUrl).then(function (response) {\n _this16.authentication.redirect(redirectUri);\n\n return response;\n });\n };\n\n _createClass(AuthService, [{\n key: 'client',\n get: function get() {\n return this.config.client;\n }\n }, {\n key: 'auth',\n get: function get() {\n logger.warn('AuthService.auth is deprecated. Use .authentication instead.');\n\n return this.authentication;\n }\n }]);\n\n return AuthService;\n}(), (_applyDecoratedDescriptor(_class9.prototype, 'getCurrentToken', [_dec13], Object.getOwnPropertyDescriptor(_class9.prototype, 'getCurrentToken'), _class9.prototype)), _class9)) || _class8);\nvar AuthenticateStep = exports.AuthenticateStep = (_dec14 = (0, _aureliaDependencyInjection.inject)(AuthService), _dec14(_class11 = function () {\n function AuthenticateStep(authService) {\n \n\n this.authService = authService;\n }\n\n AuthenticateStep.prototype.run = function run(routingContext, next) {\n var isLoggedIn = this.authService.authenticated;\n var loginRoute = this.authService.config.loginRoute;\n\n if (routingContext.getAllInstructions().some(function (route) {\n return route.config.auth === true;\n })) {\n if (!isLoggedIn) {\n return next.cancel(new _aureliaRouter.Redirect(loginRoute));\n }\n } else if (isLoggedIn && routingContext.getAllInstructions().some(function (route) {\n return route.fragment === loginRoute;\n })) {\n return next.cancel(new _aureliaRouter.Redirect(this.authService.config.loginRedirect));\n }\n\n return next();\n };\n\n return AuthenticateStep;\n}()) || _class11);\nvar AuthorizeStep = exports.AuthorizeStep = (_dec15 = (0, _aureliaDependencyInjection.inject)(AuthService), _dec15(_class12 = function () {\n function AuthorizeStep(authService) {\n \n\n logger.warn('AuthorizeStep is deprecated. Use AuthenticateStep instead.');\n\n this.authService = authService;\n }\n\n AuthorizeStep.prototype.run = function run(routingContext, next) {\n var isLoggedIn = this.authService.isAuthenticated();\n var loginRoute = this.authService.config.loginRoute;\n\n if (routingContext.getAllInstructions().some(function (route) {\n return route.config.auth;\n })) {\n if (!isLoggedIn) {\n return next.cancel(new _aureliaRouter.Redirect(loginRoute));\n }\n } else if (isLoggedIn && routingContext.getAllInstructions().some(function (route) {\n return route.fragment === loginRoute;\n })) {\n return next.cancel(new _aureliaRouter.Redirect(this.authService.config.loginRedirect));\n }\n\n return next();\n };\n\n return AuthorizeStep;\n}()) || _class12);\nvar FetchConfig = exports.FetchConfig = (_dec16 = (0, _aureliaDependencyInjection.inject)(_aureliaFetchClient.HttpClient, _aureliaApi.Config, AuthService, BaseConfig), _dec16(_class13 = function () {\n function FetchConfig(httpClient, clientConfig, authService, config) {\n \n\n this.httpClient = httpClient;\n this.clientConfig = clientConfig;\n this.authService = authService;\n this.config = config;\n }\n\n FetchConfig.prototype.configure = function configure(client) {\n var _this17 = this;\n\n if (Array.isArray(client)) {\n var configuredClients = [];\n\n client.forEach(function (toConfigure) {\n configuredClients.push(_this17.configure(toConfigure));\n });\n\n return configuredClients;\n }\n\n if (typeof client === 'string') {\n var endpoint = this.clientConfig.getEndpoint(client);\n\n if (!endpoint) {\n throw new Error('There is no \\'' + (client || 'default') + '\\' endpoint registered.');\n }\n client = endpoint.client;\n } else if (client instanceof _aureliaApi.Rest) {\n client = client.client;\n } else if (!(client instanceof _aureliaFetchClient.HttpClient)) {\n client = this.httpClient;\n }\n\n client.interceptors.push(this.interceptor);\n\n return client;\n };\n\n _createClass(FetchConfig, [{\n key: 'interceptor',\n get: function get() {\n var _this18 = this;\n\n return {\n request: function (_request) {\n function request(_x3) {\n return _request.apply(this, arguments);\n }\n\n request.toString = function () {\n return _request.toString();\n };\n\n return request;\n }(function (request) {\n if (!_this18.config.httpInterceptor || !_this18.authService.isAuthenticated()) {\n return request;\n }\n var token = _this18.authService.getAccessToken();\n\n if (_this18.config.authTokenType) {\n token = _this18.config.authTokenType + ' ' + token;\n }\n\n request.headers.set(_this18.config.authHeader, token);\n\n return request;\n }),\n response: function (_response) {\n function response(_x4, _x5) {\n return _response.apply(this, arguments);\n }\n\n response.toString = function () {\n return _response.toString();\n };\n\n return response;\n }(function (response, request) {\n return new Promise(function (resolve, reject) {\n if (response.ok) {\n return resolve(response);\n }\n\n if (response.status !== 401) {\n return resolve(response);\n }\n\n if (!_this18.authService.authenticated) {\n return reject(response);\n }\n\n if (_this18.config.httpInterceptor && _this18.config.logoutOnInvalidToken && !_this18.authService.isTokenExpired()) {\n return reject(_this18.authService.logout());\n }\n\n if (!_this18.config.httpInterceptor || !_this18.authService.isTokenExpired()) {\n return resolve(response);\n }\n\n if (!_this18.config.useRefreshToken || !_this18.authService.getRefreshToken()) {\n return resolve(response);\n }\n\n resolve(_this18.authService.updateToken().then(function () {\n var token = _this18.authService.getAccessToken();\n\n if (_this18.config.authTokenType) {\n token = _this18.config.authTokenType + ' ' + token;\n }\n\n request.headers.set(_this18.config.authHeader, token);\n\n return _this18.httpClient.fetch(request).then(resolve);\n }));\n });\n })\n };\n }\n }]);\n\n return FetchConfig;\n}()) || _class13);\nfunction configure(frameworkConfig, config) {\n if (!_aureliaPal.PLATFORM.location.origin) {\n _aureliaPal.PLATFORM.location.origin = _aureliaPal.PLATFORM.location.protocol + '//' + _aureliaPal.PLATFORM.location.hostname + (_aureliaPal.PLATFORM.location.port ? ':' + _aureliaPal.PLATFORM.location.port : '');\n }\n\n var baseConfig = frameworkConfig.container.get(BaseConfig);\n\n if (typeof config === 'function') {\n config(baseConfig);\n } else if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') {\n baseConfig.configure(config);\n }\n\n for (var _iterator = baseConfig.globalValueConverters, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var converter = _ref;\n\n frameworkConfig.globalResources(_aureliaPal.PLATFORM.moduleName('./' + converter));\n logger.info('Add globalResources value-converter: ' + converter);\n }\n var fetchConfig = frameworkConfig.container.get(FetchConfig);\n var clientConfig = frameworkConfig.container.get(_aureliaApi.Config);\n\n if (Array.isArray(baseConfig.configureEndpoints)) {\n baseConfig.configureEndpoints.forEach(function (endpointToPatch) {\n fetchConfig.configure(endpointToPatch);\n });\n }\n\n var client = void 0;\n\n if (baseConfig.endpoint !== null) {\n if (typeof baseConfig.endpoint === 'string') {\n var endpoint = clientConfig.getEndpoint(baseConfig.endpoint);\n\n if (!endpoint) {\n throw new Error('There is no \\'' + (baseConfig.endpoint || 'default') + '\\' endpoint registered.');\n }\n client = endpoint;\n } else if (baseConfig.endpoint instanceof _aureliaFetchClient.HttpClient) {\n client = new _aureliaApi.Rest(baseConfig.endpoint);\n }\n }\n\n if (!(client instanceof _aureliaApi.Rest)) {\n client = new _aureliaApi.Rest(frameworkConfig.container.get(_aureliaFetchClient.HttpClient));\n }\n\n baseConfig.client = client;\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _aureliaAuthentication = require('./aurelia-authentication');\n\nObject.keys(_aureliaAuthentication).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _aureliaAuthentication[key];\n }\n });\n});","'use strict';\n\nexports.__esModule = true;\nexports.AuthFilterValueConverter = undefined;\n\nvar _aureliaRouter = require('aurelia-router');\n\n\n\nvar AuthFilterValueConverter = exports.AuthFilterValueConverter = function () {\n function AuthFilterValueConverter() {\n \n }\n\n AuthFilterValueConverter.prototype.toView = function toView(routes, isAuthenticated) {\n return routes.filter(function (route) {\n return typeof route.config.auth !== 'boolean' || route.config.auth === isAuthenticated;\n });\n };\n\n return AuthFilterValueConverter;\n}();"],"sourceRoot":""}