{"version":3,"sources":["webpack:///./node_modules/@aws-amplify/auth/lib-esm/types/Auth.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/Auth.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/OAuth/urlOpener.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/OAuth/oauthStorage.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/OAuth/OAuth.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/urlListener.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/Errors.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/index.js"],"names":["CognitoHostedUIIdentityProvider","AuthErrorTypes","isFederatedSignInOptions","obj","keys","find","k","hasOwnProperty","isFederatedSignInOptionsCustom","isCognitoHostedOpts","oauth","undefined","redirectSignIn","isUsernamePasswordOpts","username","SELF","launchUri","url","windowProxy","window","open","Promise","resolve","reject","setState","state","sessionStorage","setItem","getState","oauth_state","getItem","removeItem","setPKCE","private_key","getPKCE","ouath_pkce_key","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","call","apply","this","__awaiter","thisArg","_arguments","P","generator","adopt","value","fulfilled","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","push","SHA256","Base64","AMPLIFY_SYMBOL","for","dispatchAuthEvent","event","data","message","dispatch","logger","OAuth","_a","config","cognitoClientId","_b","scopes","_urlOpener","urlOpener","_config","_cognitoClientId","_scopes","oauthSignIn","responseType","domain","clientId","provider","customState","Cognito","generatedState","_generateState","encodeURIComponent","pkce_key","_generateRandom","code_challenge","_generateChallenge","code_challenge_method","queryString","entries","redirect_uri","response_type","client_id","identity_provider","map","join","URL","debug","_handleCodeFlow","currentUrl","code","oAuthTokenEndpoint","code_verifier","oAuthTokenBody","access_token","refresh_token","id_token","error","query","split","pairings","reduce","accum","clientID","redirectUri","grant_type","fetch","method","headers","json","Error","accessToken","refreshToken","idToken","_handleImplicitFlow","hash","substr","handleAuthResponse","urlParams","error_description","e_1","_c","entry","acc","_validateState","concat","savedState","returnedState","signOut","oAuthLogoutEndpoint","signout_uri","redirectSignOut","returnTo","logout_uri","oAuth","chars","Math","round","random","_base64URL","string","toString","replace","size","CHARSET","buffer","Uint8Array","crypto","getRandomValues","_bufferToString","byteLength","index","browserOrNode","isBrowser","location","href","callback","isNode","__extends","extendStatics","d","b","setPrototypeOf","__proto__","Array","__","constructor","create","DEFAULT_MSG","AuthError","_super","type","_this","authErrorMessages","log","name","NoUserPoolError","noConfig","missingAuthConfig","emptyUsername","invalidUsername","emptyPassword","emptyCode","signUpError","noMFA","invalidMFA","emptyChallengeResponse","noUserSession","default","USER_ADMIN_SCOPE","AuthClass","userPool","user","configure","currentUserCredentials","bind","update","customUserAgent","userAgent","warn","listen","payload","_storage","getModuleName","conf","parseMobilehubConfig","Auth","userPoolId","userPoolWebClientId","cookieStorage","region","identityPoolId","mandatorySignIn","refreshHandlers","identityPoolRegion","clientMetadata","storage","_isValidAuthStorage","getStorage","_storageSync","userPoolData","UserPoolId","ClientId","Storage","cognitoHostedUIConfig","awsCognito","cognitoAuthParams","_oAuthHandler","urlListener","_handleAuthResponse","signUp","params","restOfAttrs","_i","rejectNoUserPool","password","attributes","validationData","email","phone_number","Name","Value","rejectAuthError","SignUpError","attrs_1","key","ele","err","EmptyPassword","EmptyUsername","confirmSignUp","options","EmptyCode","createCognitoUser","forceAliasCreation","confirmRegistration","resendSignUp","resendConfirmationCode","signIn","usernameOrSignInOpts","pw","InvalidUsername","authDetails","Username","Password","ValidationData","ClientMetadata","signInWithPassword","signInWithoutPassword","authCallbacks","that","onSuccess","session","cred","currentUser","e_2","clear","set","currentUserPoolUser","getUsername","onFailure","customChallenge","challengeParam","mfaRequired","challengeName","mfaSetup","newPasswordRequired","userAttributes","requiredAttributes","totpRequired","selectMFAType","authenticateUser","setAuthenticationFlowType","initiateAuth","getMFAOptions","res","rej","mfaOptions","getPreferredMFA","bypassCache","getUserData","mfaType","_getMfaTypeFromUserData","ret","preferredMFA","PreferredMfaSetting","mfaList","UserMFASettingList","MFAOptions","_getUserData","setPreferredMFA","mfaMethod","userData","smsMfaSettings","totpMfaSettings","currentMFAType","PreferredMfa","Enabled","InvalidMFA","forEach","NoMFA","setUserMfaPreference","disableSMS","disableMFA","enableSMS","enableMFA","setupTOTP","associateSoftwareToken","associateSecretCode","secretCode","verifyTotpToken","challengeAnswer","verifySoftwareToken","confirmSignIn","sendMFACode","e_3","completeNewPassword","completeNewPasswordChallenge","e_4","sendCustomChallengeAnswer","challengeResponses","EmptyChallengeResponse","updateUserAttributes","attributeList","userSession","indexOf","attr","updateAttributes","getUserAttributes","verifiedContact","attrs","attributesToObject","unverified","verified","getCurrentUser","getSession","getAccessToken","decodePayload","scope","includes","UserAttributes","attribute","userAttribute","catch","currentAuthenticatedUser","federatedUser","e_5","e_6","JSON","parse","currentSession","NoUserSession","e_7","federatedInfo","refreshFederatedToken","currentCredentials","get","verifyUserAttribute","getAttributeVerificationCode","verifyUserAttributeSubmit","verifyAttribute","verifyCurrentUserAttribute","verifyCurrentUserAttributeSubmit","cognitoIdentitySignOut","opts","e_8","isSignedInHostedUI","global","globalSignOut","cleanCachedItems","changePassword","oldPassword","newPassword","forgotPassword","inputVerificationCode","forgotPasswordSubmit","confirmPassword","currentUserInfo","source","userAttrs","credentials","e_10","info","err_1","getCredSource","id","identityId","federatedSignIn","providerOrOptions","response","loggedInUser","token","identity_id","expires_at","customProvider","stringify","hasCodeOrError","hasTokenOrError","isCustomStateIncluded","err_2","IdToken","RefreshToken","AccessToken","test","getIdToken","setSignInUserSession","history","replaceState","essentialCredentials","accessKeyId","sessionToken","secretAccessKey","authenticated","Pool","authenticationFlowType","noUserPoolErrorHandler","NoConfig","MissingAuthConfig","_instance","register"],"mappings":"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","file":"js/chunk-vendors~e60e6788.c419c579.js","sourcesContent":["/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nexport var CognitoHostedUIIdentityProvider;\n(function (CognitoHostedUIIdentityProvider) {\n CognitoHostedUIIdentityProvider[\"Cognito\"] = \"COGNITO\";\n CognitoHostedUIIdentityProvider[\"Google\"] = \"Google\";\n CognitoHostedUIIdentityProvider[\"Facebook\"] = \"Facebook\";\n CognitoHostedUIIdentityProvider[\"Amazon\"] = \"LoginWithAmazon\";\n})(CognitoHostedUIIdentityProvider || (CognitoHostedUIIdentityProvider = {}));\nexport function isFederatedSignInOptions(obj) {\n var keys = ['provider', 'customState'];\n return obj && !!keys.find(function (k) { return obj.hasOwnProperty(k); });\n}\nexport function isFederatedSignInOptionsCustom(obj) {\n var keys = [\n 'customProvider',\n 'customState',\n ];\n return obj && !!keys.find(function (k) { return obj.hasOwnProperty(k); });\n}\nexport function isCognitoHostedOpts(oauth) {\n return oauth.redirectSignIn !== undefined;\n}\nexport var AuthErrorTypes;\n(function (AuthErrorTypes) {\n AuthErrorTypes[\"NoConfig\"] = \"noConfig\";\n AuthErrorTypes[\"MissingAuthConfig\"] = \"missingAuthConfig\";\n AuthErrorTypes[\"EmptyUsername\"] = \"emptyUsername\";\n AuthErrorTypes[\"InvalidUsername\"] = \"invalidUsername\";\n AuthErrorTypes[\"EmptyPassword\"] = \"emptyPassword\";\n AuthErrorTypes[\"EmptyCode\"] = \"emptyCode\";\n AuthErrorTypes[\"SignUpError\"] = \"signUpError\";\n AuthErrorTypes[\"NoMFA\"] = \"noMFA\";\n AuthErrorTypes[\"InvalidMFA\"] = \"invalidMFA\";\n AuthErrorTypes[\"EmptyChallengeResponse\"] = \"emptyChallengeResponse\";\n AuthErrorTypes[\"NoUserSession\"] = \"noUserSession\";\n AuthErrorTypes[\"Default\"] = \"default\";\n})(AuthErrorTypes || (AuthErrorTypes = {}));\nexport function isUsernamePasswordOpts(obj) {\n return !!obj.username;\n}\n//# sourceMappingURL=Auth.js.map","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { isUsernamePasswordOpts, isCognitoHostedOpts, isFederatedSignInOptions, isFederatedSignInOptionsCustom, } from './types';\nimport { AWS, ConsoleLogger as Logger, Constants, Hub, JS, Parser, Credentials, StorageHelper, } from '@aws-amplify/core';\nimport { CookieStorage, CognitoUserPool, AuthenticationDetails, CognitoUser, CognitoUserSession, CognitoUserAttribute, CognitoIdToken, CognitoRefreshToken, CognitoAccessToken, } from 'amazon-cognito-identity-js';\nimport { parse } from 'url';\nimport OAuth from './OAuth/OAuth';\nimport { default as urlListener } from './urlListener';\nimport { AuthError, NoUserPoolError } from './Errors';\nimport { AuthErrorTypes } from './types/Auth';\nvar logger = new Logger('AuthClass');\nvar USER_ADMIN_SCOPE = 'aws.cognito.signin.user.admin';\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\n typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nvar dispatchAuthEvent = function (event, data, message) {\n Hub.dispatch('auth', { event: event, data: data, message: message }, 'Auth', AMPLIFY_SYMBOL);\n};\nexport var CognitoHostedUIIdentityProvider;\n(function (CognitoHostedUIIdentityProvider) {\n CognitoHostedUIIdentityProvider[\"Cognito\"] = \"COGNITO\";\n CognitoHostedUIIdentityProvider[\"Google\"] = \"Google\";\n CognitoHostedUIIdentityProvider[\"Facebook\"] = \"Facebook\";\n CognitoHostedUIIdentityProvider[\"Amazon\"] = \"LoginWithAmazon\";\n})(CognitoHostedUIIdentityProvider || (CognitoHostedUIIdentityProvider = {}));\n/**\n * Provide authentication steps\n */\nvar AuthClass = /** @class */ (function () {\n /**\n * Initialize Auth with AWS configurations\n * @param {Object} config - Configuration of the Auth\n */\n function AuthClass(config) {\n var _this = this;\n this.userPool = null;\n this.user = null;\n this.configure(config);\n this.currentUserCredentials = this.currentUserCredentials.bind(this);\n if (AWS.config) {\n AWS.config.update({ customUserAgent: Constants.userAgent });\n }\n else {\n logger.warn('No AWS.config');\n }\n Hub.listen('auth', function (_a) {\n var payload = _a.payload;\n var event = payload.event;\n switch (event) {\n case 'signIn':\n _this._storage.setItem('amplify-signin-with-hostedUI', 'false');\n break;\n case 'signOut':\n _this._storage.removeItem('amplify-signin-with-hostedUI');\n break;\n case 'cognitoHostedUI':\n _this._storage.setItem('amplify-signin-with-hostedUI', 'true');\n break;\n }\n });\n }\n AuthClass.prototype.getModuleName = function () {\n return 'Auth';\n };\n AuthClass.prototype.configure = function (config) {\n var _this = this;\n if (!config)\n return this._config || {};\n logger.debug('configure Auth');\n var conf = Object.assign({}, this._config, Parser.parseMobilehubConfig(config).Auth, config);\n this._config = conf;\n var _a = this._config, userPoolId = _a.userPoolId, userPoolWebClientId = _a.userPoolWebClientId, cookieStorage = _a.cookieStorage, oauth = _a.oauth, region = _a.region, identityPoolId = _a.identityPoolId, mandatorySignIn = _a.mandatorySignIn, refreshHandlers = _a.refreshHandlers, identityPoolRegion = _a.identityPoolRegion, clientMetadata = _a.clientMetadata;\n if (!this._config.storage) {\n // backward compatbility\n if (cookieStorage)\n this._storage = new CookieStorage(cookieStorage);\n else {\n this._storage = new StorageHelper().getStorage();\n }\n }\n else {\n if (!this._isValidAuthStorage(this._config.storage)) {\n logger.error('The storage in the Auth config is not valid!');\n throw new Error('Empty storage object');\n }\n this._storage = this._config.storage;\n }\n this._storageSync = Promise.resolve();\n if (typeof this._storage['sync'] === 'function') {\n this._storageSync = this._storage['sync']();\n }\n if (userPoolId) {\n var userPoolData = {\n UserPoolId: userPoolId,\n ClientId: userPoolWebClientId,\n };\n userPoolData.Storage = this._storage;\n this.userPool = new CognitoUserPool(userPoolData);\n }\n Credentials.configure({\n mandatorySignIn: mandatorySignIn,\n region: identityPoolRegion || region,\n userPoolId: userPoolId,\n identityPoolId: identityPoolId,\n refreshHandlers: refreshHandlers,\n storage: this._storage,\n });\n // initiailize cognitoauth client if hosted ui options provided\n // to keep backward compatibility:\n var cognitoHostedUIConfig = oauth\n ? isCognitoHostedOpts(this._config.oauth)\n ? oauth\n : oauth.awsCognito\n : undefined;\n if (cognitoHostedUIConfig) {\n var cognitoAuthParams = Object.assign({\n cognitoClientId: userPoolWebClientId,\n UserPoolId: userPoolId,\n domain: cognitoHostedUIConfig['domain'],\n scopes: cognitoHostedUIConfig['scope'],\n redirectSignIn: cognitoHostedUIConfig['redirectSignIn'],\n redirectSignOut: cognitoHostedUIConfig['redirectSignOut'],\n responseType: cognitoHostedUIConfig['responseType'],\n Storage: this._storage,\n urlOpener: cognitoHostedUIConfig['urlOpener'],\n clientMetadata: clientMetadata,\n }, cognitoHostedUIConfig['options']);\n this._oAuthHandler = new OAuth({\n scopes: cognitoAuthParams.scopes,\n config: cognitoAuthParams,\n cognitoClientId: cognitoAuthParams.cognitoClientId,\n });\n // **NOTE** - Remove this in a future major release as it is a breaking change\n urlListener(function (_a) {\n var url = _a.url;\n _this._handleAuthResponse(url);\n });\n }\n dispatchAuthEvent('configured', null, \"The Auth category has been configured successfully\");\n return this._config;\n };\n /**\n * Sign up with username, password and other attrbutes like phone, email\n * @param {String | object} params - The user attirbutes used for signin\n * @param {String[]} restOfAttrs - for the backward compatability\n * @return - A promise resolves callback data if success\n */\n AuthClass.prototype.signUp = function (params) {\n var _this = this;\n var restOfAttrs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n restOfAttrs[_i - 1] = arguments[_i];\n }\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n var username = null;\n var password = null;\n var attributes = [];\n var validationData = null;\n var clientMetadata;\n if (params && typeof params === 'string') {\n username = params;\n password = restOfAttrs ? restOfAttrs[0] : null;\n var email = restOfAttrs ? restOfAttrs[1] : null;\n var phone_number = restOfAttrs ? restOfAttrs[2] : null;\n if (email)\n attributes.push({ Name: 'email', Value: email });\n if (phone_number)\n attributes.push({ Name: 'phone_number', Value: phone_number });\n }\n else if (params && typeof params === 'object') {\n username = params['username'];\n password = params['password'];\n if (params && params.clientMetadata) {\n clientMetadata = params.clientMetadata;\n }\n else if (this._config.clientMetadata) {\n clientMetadata = this._config.clientMetadata;\n }\n var attrs_1 = params['attributes'];\n if (attrs_1) {\n Object.keys(attrs_1).map(function (key) {\n var ele = { Name: key, Value: attrs_1[key] };\n attributes.push(ele);\n });\n }\n validationData = params['validationData'] || null;\n }\n else {\n return this.rejectAuthError(AuthErrorTypes.SignUpError);\n }\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n if (!password) {\n return this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n }\n logger.debug('signUp attrs:', attributes);\n logger.debug('signUp validation data:', validationData);\n return new Promise(function (resolve, reject) {\n _this.userPool.signUp(username, password, attributes, validationData, function (err, data) {\n if (err) {\n dispatchAuthEvent('signUp_failure', err, username + \" failed to signup\");\n reject(err);\n }\n else {\n dispatchAuthEvent('signUp', data, username + \" has signed up successfully\");\n resolve(data);\n }\n }, clientMetadata);\n });\n };\n /**\n * Send the verfication code to confirm sign up\n * @param {String} username - The username to be confirmed\n * @param {String} code - The verification code\n * @param {ConfirmSignUpOptions} options - other options for confirm signup\n * @return - A promise resolves callback data if success\n */\n AuthClass.prototype.confirmSignUp = function (username, code, options) {\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n if (!code) {\n return this.rejectAuthError(AuthErrorTypes.EmptyCode);\n }\n var user = this.createCognitoUser(username);\n var forceAliasCreation = options && typeof options.forceAliasCreation === 'boolean'\n ? options.forceAliasCreation\n : true;\n var clientMetadata;\n if (options && options.clientMetadata) {\n clientMetadata = options.clientMetadata;\n }\n else if (this._config.clientMetadata) {\n clientMetadata = this._config.clientMetadata;\n }\n return new Promise(function (resolve, reject) {\n user.confirmRegistration(code, forceAliasCreation, function (err, data) {\n if (err) {\n reject(err);\n }\n else {\n resolve(data);\n }\n }, clientMetadata);\n });\n };\n /**\n * Resend the verification code\n * @param {String} username - The username to be confirmed\n * @param {ClientMetadata} clientMetadata - Metadata to be passed to Cognito Lambda triggers\n * @return - A promise resolves data if success\n */\n AuthClass.prototype.resendSignUp = function (username, clientMetadata) {\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n var user = this.createCognitoUser(username);\n return new Promise(function (resolve, reject) {\n user.resendConfirmationCode(function (err, data) {\n if (err) {\n reject(err);\n }\n else {\n resolve(data);\n }\n }, clientMetadata);\n });\n };\n /**\n * Sign in\n * @param {String | SignInOpts} usernameOrSignInOpts - The username to be signed in or the sign in options\n * @param {String} password - The password of the username\n * @return - A promise resolves the CognitoUser\n */\n AuthClass.prototype.signIn = function (usernameOrSignInOpts, pw, clientMetadata) {\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n var username = null;\n var password = null;\n var validationData = {};\n // for backward compatibility\n if (typeof usernameOrSignInOpts === 'string') {\n username = usernameOrSignInOpts;\n password = pw;\n }\n else if (isUsernamePasswordOpts(usernameOrSignInOpts)) {\n if (typeof pw !== 'undefined') {\n logger.warn('The password should be defined under the first parameter object!');\n }\n username = usernameOrSignInOpts.username;\n password = usernameOrSignInOpts.password;\n validationData = usernameOrSignInOpts.validationData;\n }\n else {\n return this.rejectAuthError(AuthErrorTypes.InvalidUsername);\n }\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n var authDetails = new AuthenticationDetails({\n Username: username,\n Password: password,\n ValidationData: validationData,\n ClientMetadata: clientMetadata,\n });\n if (password) {\n return this.signInWithPassword(authDetails);\n }\n else {\n return this.signInWithoutPassword(authDetails);\n }\n };\n /**\n * Return an object with the authentication callbacks\n * @param {CognitoUser} user - the cognito user object\n * @param {} resolve - function called when resolving the current step\n * @param {} reject - function called when rejecting the current step\n * @return - an object with the callback methods for user authentication\n */\n AuthClass.prototype.authCallbacks = function (user, resolve, reject) {\n var _this = this;\n var that = this;\n return {\n onSuccess: function (session) { return __awaiter(_this, void 0, void 0, function () {\n var cred, e_1, currentUser, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug(session);\n delete user['challengeName'];\n delete user['challengeParam'];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 4, 5, 9]);\n return [4 /*yield*/, Credentials.clear()];\n case 2:\n _a.sent();\n return [4 /*yield*/, Credentials.set(session, 'session')];\n case 3:\n cred = _a.sent();\n logger.debug('succeed to get cognito credentials', cred);\n return [3 /*break*/, 9];\n case 4:\n e_1 = _a.sent();\n logger.debug('cannot get cognito credentials', e_1);\n return [3 /*break*/, 9];\n case 5:\n _a.trys.push([5, 7, , 8]);\n return [4 /*yield*/, this.currentUserPoolUser()];\n case 6:\n currentUser = _a.sent();\n that.user = currentUser;\n dispatchAuthEvent('signIn', currentUser, \"A user \" + user.getUsername() + \" has been signed in\");\n resolve(currentUser);\n return [3 /*break*/, 8];\n case 7:\n e_2 = _a.sent();\n logger.error('Failed to get the signed in user', e_2);\n reject(e_2);\n return [3 /*break*/, 8];\n case 8: return [7 /*endfinally*/];\n case 9: return [2 /*return*/];\n }\n });\n }); },\n onFailure: function (err) {\n logger.debug('signIn failure', err);\n dispatchAuthEvent('signIn_failure', err, user.getUsername() + \" failed to signin\");\n reject(err);\n },\n customChallenge: function (challengeParam) {\n logger.debug('signIn custom challenge answer required');\n user['challengeName'] = 'CUSTOM_CHALLENGE';\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n mfaRequired: function (challengeName, challengeParam) {\n logger.debug('signIn MFA required');\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n mfaSetup: function (challengeName, challengeParam) {\n logger.debug('signIn mfa setup', challengeName);\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n newPasswordRequired: function (userAttributes, requiredAttributes) {\n logger.debug('signIn new password');\n user['challengeName'] = 'NEW_PASSWORD_REQUIRED';\n user['challengeParam'] = {\n userAttributes: userAttributes,\n requiredAttributes: requiredAttributes,\n };\n resolve(user);\n },\n totpRequired: function (challengeName, challengeParam) {\n logger.debug('signIn totpRequired');\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n selectMFAType: function (challengeName, challengeParam) {\n logger.debug('signIn selectMFAType', challengeName);\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n };\n };\n /**\n * Sign in with a password\n * @private\n * @param {AuthenticationDetails} authDetails - the user sign in data\n * @return - A promise resolves the CognitoUser object if success or mfa required\n */\n AuthClass.prototype.signInWithPassword = function (authDetails) {\n var _this = this;\n var user = this.createCognitoUser(authDetails.getUsername());\n return new Promise(function (resolve, reject) {\n user.authenticateUser(authDetails, _this.authCallbacks(user, resolve, reject));\n });\n };\n /**\n * Sign in without a password\n * @private\n * @param {AuthenticationDetails} authDetails - the user sign in data\n * @return - A promise resolves the CognitoUser object if success or mfa required\n */\n AuthClass.prototype.signInWithoutPassword = function (authDetails) {\n var _this = this;\n var user = this.createCognitoUser(authDetails.getUsername());\n user.setAuthenticationFlowType('CUSTOM_AUTH');\n return new Promise(function (resolve, reject) {\n user.initiateAuth(authDetails, _this.authCallbacks(user, resolve, reject));\n });\n };\n /**\n * get user current preferred mfa option\n * this method doesn't work with totp, we need to deprecate it.\n * @deprecated\n * @param {CognitoUser} user - the current user\n * @return - A promise resolves the current preferred mfa option if success\n */\n AuthClass.prototype.getMFAOptions = function (user) {\n return new Promise(function (res, rej) {\n user.getMFAOptions(function (err, mfaOptions) {\n if (err) {\n logger.debug('get MFA Options failed', err);\n rej(err);\n return;\n }\n logger.debug('get MFA options success', mfaOptions);\n res(mfaOptions);\n return;\n });\n });\n };\n /**\n * get preferred mfa method\n * @param {CognitoUser} user - the current cognito user\n * @param {GetPreferredMFAOpts} params - options for getting the current user preferred MFA\n */\n AuthClass.prototype.getPreferredMFA = function (user, params) {\n var that = this;\n return new Promise(function (res, rej) {\n var bypassCache = params ? params.bypassCache : false;\n user.getUserData(function (err, data) {\n if (err) {\n logger.debug('getting preferred mfa failed', err);\n rej(err);\n return;\n }\n var mfaType = that._getMfaTypeFromUserData(data);\n if (!mfaType) {\n rej('invalid MFA Type');\n return;\n }\n else {\n res(mfaType);\n return;\n }\n }, { bypassCache: bypassCache });\n });\n };\n AuthClass.prototype._getMfaTypeFromUserData = function (data) {\n var ret = null;\n var preferredMFA = data.PreferredMfaSetting;\n // if the user has used Auth.setPreferredMFA() to setup the mfa type\n // then the \"PreferredMfaSetting\" would exist in the response\n if (preferredMFA) {\n ret = preferredMFA;\n }\n else {\n // if mfaList exists but empty, then its noMFA\n var mfaList = data.UserMFASettingList;\n if (!mfaList) {\n // if SMS was enabled by using Auth.enableSMS(),\n // the response would contain MFAOptions\n // as for now Cognito only supports for SMS, so we will say it is 'SMS_MFA'\n // if it does not exist, then it should be NOMFA\n var MFAOptions = data.MFAOptions;\n if (MFAOptions) {\n ret = 'SMS_MFA';\n }\n else {\n ret = 'NOMFA';\n }\n }\n else if (mfaList.length === 0) {\n ret = 'NOMFA';\n }\n else {\n logger.debug('invalid case for getPreferredMFA', data);\n }\n }\n return ret;\n };\n AuthClass.prototype._getUserData = function (user, params) {\n return new Promise(function (res, rej) {\n user.getUserData(function (err, data) {\n if (err) {\n logger.debug('getting user data failed', err);\n rej(err);\n return;\n }\n else {\n res(data);\n return;\n }\n }, params);\n });\n };\n /**\n * set preferred MFA method\n * @param {CognitoUser} user - the current Cognito user\n * @param {string} mfaMethod - preferred mfa method\n * @return - A promise resolve if success\n */\n AuthClass.prototype.setPreferredMFA = function (user, mfaMethod) {\n return __awaiter(this, void 0, void 0, function () {\n var userData, smsMfaSettings, totpMfaSettings, _a, mfaList, currentMFAType, that;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this._getUserData(user, { bypassCache: true })];\n case 1:\n userData = _b.sent();\n smsMfaSettings = null;\n totpMfaSettings = null;\n _a = mfaMethod;\n switch (_a) {\n case 'TOTP' || 'SOFTWARE_TOKEN_MFA': return [3 /*break*/, 2];\n case 'SMS' || 'SMS_MFA': return [3 /*break*/, 3];\n case 'NOMFA': return [3 /*break*/, 4];\n }\n return [3 /*break*/, 6];\n case 2:\n totpMfaSettings = {\n PreferredMfa: true,\n Enabled: true,\n };\n return [3 /*break*/, 7];\n case 3:\n smsMfaSettings = {\n PreferredMfa: true,\n Enabled: true,\n };\n return [3 /*break*/, 7];\n case 4:\n mfaList = userData['UserMFASettingList'];\n return [4 /*yield*/, this._getMfaTypeFromUserData(userData)];\n case 5:\n currentMFAType = _b.sent();\n if (currentMFAType === 'NOMFA') {\n return [2 /*return*/, Promise.resolve('No change for mfa type')];\n }\n else if (currentMFAType === 'SMS_MFA') {\n smsMfaSettings = {\n PreferredMfa: false,\n Enabled: false,\n };\n }\n else if (currentMFAType === 'SOFTWARE_TOKEN_MFA') {\n totpMfaSettings = {\n PreferredMfa: false,\n Enabled: false,\n };\n }\n else {\n return [2 /*return*/, this.rejectAuthError(AuthErrorTypes.InvalidMFA)];\n }\n // if there is a UserMFASettingList in the response\n // we need to disable every mfa type in that list\n if (mfaList && mfaList.length !== 0) {\n // to disable SMS or TOTP if exists in that list\n mfaList.forEach(function (mfaType) {\n if (mfaType === 'SMS_MFA') {\n smsMfaSettings = {\n PreferredMfa: false,\n Enabled: false,\n };\n }\n else if (mfaType === 'SOFTWARE_TOKEN_MFA') {\n totpMfaSettings = {\n PreferredMfa: false,\n Enabled: false,\n };\n }\n });\n }\n return [3 /*break*/, 7];\n case 6:\n logger.debug('no validmfa method provided');\n return [2 /*return*/, this.rejectAuthError(AuthErrorTypes.NoMFA)];\n case 7:\n that = this;\n return [2 /*return*/, new Promise(function (res, rej) {\n user.setUserMfaPreference(smsMfaSettings, totpMfaSettings, function (err, result) {\n if (err) {\n logger.debug('Set user mfa preference error', err);\n return rej(err);\n }\n logger.debug('Set user mfa success', result);\n logger.debug('Caching the latest user data into local');\n // cache the latest result into user data\n user.getUserData(function (err, data) {\n if (err) {\n logger.debug('getting user data failed', err);\n return rej(err);\n }\n else {\n return res(result);\n }\n }, { bypassCache: true });\n });\n })];\n }\n });\n });\n };\n /**\n * diable SMS\n * @deprecated\n * @param {CognitoUser} user - the current user\n * @return - A promise resolves is success\n */\n AuthClass.prototype.disableSMS = function (user) {\n return new Promise(function (res, rej) {\n user.disableMFA(function (err, data) {\n if (err) {\n logger.debug('disable mfa failed', err);\n rej(err);\n return;\n }\n logger.debug('disable mfa succeed', data);\n res(data);\n return;\n });\n });\n };\n /**\n * enable SMS\n * @deprecated\n * @param {CognitoUser} user - the current user\n * @return - A promise resolves is success\n */\n AuthClass.prototype.enableSMS = function (user) {\n return new Promise(function (res, rej) {\n user.enableMFA(function (err, data) {\n if (err) {\n logger.debug('enable mfa failed', err);\n rej(err);\n return;\n }\n logger.debug('enable mfa succeed', data);\n res(data);\n return;\n });\n });\n };\n /**\n * Setup TOTP\n * @param {CognitoUser} user - the current user\n * @return - A promise resolves with the secret code if success\n */\n AuthClass.prototype.setupTOTP = function (user) {\n return new Promise(function (res, rej) {\n user.associateSoftwareToken({\n onFailure: function (err) {\n logger.debug('associateSoftwareToken failed', err);\n rej(err);\n return;\n },\n associateSecretCode: function (secretCode) {\n logger.debug('associateSoftwareToken sucess', secretCode);\n res(secretCode);\n return;\n },\n });\n });\n };\n /**\n * verify TOTP setup\n * @param {CognitoUser} user - the current user\n * @param {string} challengeAnswer - challenge answer\n * @return - A promise resolves is success\n */\n AuthClass.prototype.verifyTotpToken = function (user, challengeAnswer) {\n logger.debug('verfication totp token', user, challengeAnswer);\n return new Promise(function (res, rej) {\n user.verifySoftwareToken(challengeAnswer, 'My TOTP device', {\n onFailure: function (err) {\n logger.debug('verifyTotpToken failed', err);\n rej(err);\n return;\n },\n onSuccess: function (data) {\n logger.debug('verifyTotpToken success', data);\n res(data);\n return;\n },\n });\n });\n };\n /**\n * Send MFA code to confirm sign in\n * @param {Object} user - The CognitoUser object\n * @param {String} code - The confirmation code\n */\n AuthClass.prototype.confirmSignIn = function (user, code, mfaType, clientMetadata) {\n var _this = this;\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!code) {\n return this.rejectAuthError(AuthErrorTypes.EmptyCode);\n }\n var that = this;\n return new Promise(function (resolve, reject) {\n user.sendMFACode(code, {\n onSuccess: function (session) { return __awaiter(_this, void 0, void 0, function () {\n var cred, e_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug(session);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 4, 5, 6]);\n return [4 /*yield*/, Credentials.clear()];\n case 2:\n _a.sent();\n return [4 /*yield*/, Credentials.set(session, 'session')];\n case 3:\n cred = _a.sent();\n logger.debug('succeed to get cognito credentials', cred);\n return [3 /*break*/, 6];\n case 4:\n e_3 = _a.sent();\n logger.debug('cannot get cognito credentials', e_3);\n return [3 /*break*/, 6];\n case 5:\n that.user = user;\n dispatchAuthEvent('signIn', user, user + \" has signed in\");\n resolve(user);\n return [7 /*endfinally*/];\n case 6: return [2 /*return*/];\n }\n });\n }); },\n onFailure: function (err) {\n logger.debug('confirm signIn failure', err);\n reject(err);\n },\n }, mfaType, clientMetadata);\n });\n };\n AuthClass.prototype.completeNewPassword = function (user, password, requiredAttributes, clientMetadata) {\n var _this = this;\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!password) {\n return this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n }\n var that = this;\n return new Promise(function (resolve, reject) {\n user.completeNewPasswordChallenge(password, requiredAttributes, {\n onSuccess: function (session) { return __awaiter(_this, void 0, void 0, function () {\n var cred, e_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug(session);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 4, 5, 6]);\n return [4 /*yield*/, Credentials.clear()];\n case 2:\n _a.sent();\n return [4 /*yield*/, Credentials.set(session, 'session')];\n case 3:\n cred = _a.sent();\n logger.debug('succeed to get cognito credentials', cred);\n return [3 /*break*/, 6];\n case 4:\n e_4 = _a.sent();\n logger.debug('cannot get cognito credentials', e_4);\n return [3 /*break*/, 6];\n case 5:\n that.user = user;\n dispatchAuthEvent('signIn', user, user + \" has signed in\");\n resolve(user);\n return [7 /*endfinally*/];\n case 6: return [2 /*return*/];\n }\n });\n }); },\n onFailure: function (err) {\n logger.debug('completeNewPassword failure', err);\n dispatchAuthEvent('completeNewPassword_failure', err, _this.user + \" failed to complete the new password flow\");\n reject(err);\n },\n mfaRequired: function (challengeName, challengeParam) {\n logger.debug('signIn MFA required');\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n mfaSetup: function (challengeName, challengeParam) {\n logger.debug('signIn mfa setup', challengeName);\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n }, clientMetadata);\n });\n };\n /**\n * Send the answer to a custom challenge\n * @param {CognitoUser} user - The CognitoUser object\n * @param {String} challengeResponses - The confirmation code\n */\n AuthClass.prototype.sendCustomChallengeAnswer = function (user, challengeResponses, clientMetadata) {\n var _this = this;\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n if (!challengeResponses) {\n return this.rejectAuthError(AuthErrorTypes.EmptyChallengeResponse);\n }\n var that = this;\n return new Promise(function (resolve, reject) {\n user.sendCustomChallengeAnswer(challengeResponses, _this.authCallbacks(user, resolve, reject), clientMetadata);\n });\n };\n /**\n * Update an authenticated users' attributes\n * @param {CognitoUser} - The currently logged in user object\n * @return {Promise}\n **/\n AuthClass.prototype.updateUserAttributes = function (user, attributes, clientMetadata) {\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n var attributeList = [];\n var that = this;\n return new Promise(function (resolve, reject) {\n that.userSession(user).then(function (session) {\n for (var key in attributes) {\n if (key !== 'sub' && key.indexOf('_verified') < 0) {\n var attr = {\n Name: key,\n Value: attributes[key],\n };\n attributeList.push(attr);\n }\n }\n user.updateAttributes(attributeList, function (err, result) {\n if (err) {\n return reject(err);\n }\n else {\n return resolve(result);\n }\n }, clientMetadata);\n });\n });\n };\n /**\n * Return user attributes\n * @param {Object} user - The CognitoUser object\n * @return - A promise resolves to user attributes if success\n */\n AuthClass.prototype.userAttributes = function (user) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.userSession(user).then(function (session) {\n user.getUserAttributes(function (err, attributes) {\n if (err) {\n reject(err);\n }\n else {\n resolve(attributes);\n }\n });\n });\n });\n };\n AuthClass.prototype.verifiedContact = function (user) {\n var that = this;\n return this.userAttributes(user).then(function (attributes) {\n var attrs = that.attributesToObject(attributes);\n var unverified = {};\n var verified = {};\n if (attrs['email']) {\n if (attrs['email_verified']) {\n verified['email'] = attrs['email'];\n }\n else {\n unverified['email'] = attrs['email'];\n }\n }\n if (attrs['phone_number']) {\n if (attrs['phone_number_verified']) {\n verified['phone_number'] = attrs['phone_number'];\n }\n else {\n unverified['phone_number'] = attrs['phone_number'];\n }\n }\n return {\n verified: verified,\n unverified: unverified,\n };\n });\n };\n /**\n * Get current authenticated user\n * @return - A promise resolves to current authenticated CognitoUser if success\n */\n AuthClass.prototype.currentUserPoolUser = function (params) {\n var _this = this;\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n var that = this;\n return new Promise(function (res, rej) {\n _this._storageSync\n .then(function () {\n var user = that.userPool.getCurrentUser();\n if (!user) {\n logger.debug('Failed to get user from user pool');\n rej('No current user');\n return;\n }\n // refresh the session if the session expired.\n user.getSession(function (err, session) {\n if (err) {\n logger.debug('Failed to get the user session', err);\n rej(err);\n return;\n }\n // get user data from Cognito\n var bypassCache = params ? params.bypassCache : false;\n // validate the token's scope fisrt before calling this function\n var _a = session.getAccessToken().decodePayload().scope, scope = _a === void 0 ? '' : _a;\n if (scope.split(' ').includes(USER_ADMIN_SCOPE)) {\n user.getUserData(function (err, data) {\n if (err) {\n logger.debug('getting user data failed', err);\n // Make sure the user is still valid\n if (err.message === 'User is disabled' ||\n err.message === 'User does not exist.') {\n rej(err);\n }\n else {\n // the error may also be thrown when lack of permissions to get user info etc\n // in that case we just bypass the error\n res(user);\n }\n return;\n }\n var preferredMFA = data.PreferredMfaSetting || 'NOMFA';\n var attributeList = [];\n for (var i = 0; i < data.UserAttributes.length; i++) {\n var attribute = {\n Name: data.UserAttributes[i].Name,\n Value: data.UserAttributes[i].Value,\n };\n var userAttribute = new CognitoUserAttribute(attribute);\n attributeList.push(userAttribute);\n }\n var attributes = that.attributesToObject(attributeList);\n Object.assign(user, { attributes: attributes, preferredMFA: preferredMFA });\n return res(user);\n }, { bypassCache: bypassCache });\n }\n else {\n logger.debug(\"Unable to get the user data because the \" + USER_ADMIN_SCOPE + \" \" +\n \"is not in the scopes of the access token\");\n return res(user);\n }\n });\n })\n .catch(function (e) {\n logger.debug('Failed to sync cache info into memory', e);\n return rej(e);\n });\n });\n };\n /**\n * Get current authenticated user\n * @param {CurrentUserOpts} - options for getting the current user\n * @return - A promise resolves to current authenticated CognitoUser if success\n */\n AuthClass.prototype.currentAuthenticatedUser = function (params) {\n return __awaiter(this, void 0, void 0, function () {\n var federatedUser, e_5, user, e_6;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug('getting current authenticated user');\n federatedUser = null;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._storageSync];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n e_5 = _a.sent();\n logger.debug('Failed to sync cache info into memory', e_5);\n throw e_5;\n case 4:\n try {\n federatedUser = JSON.parse(this._storage.getItem('aws-amplify-federatedInfo')).user;\n }\n catch (e) {\n logger.debug('cannot load federated user from auth storage');\n }\n if (!federatedUser) return [3 /*break*/, 5];\n this.user = federatedUser;\n logger.debug('get current authenticated federated user', this.user);\n return [2 /*return*/, this.user];\n case 5:\n logger.debug('get current authenticated userpool user');\n user = null;\n _a.label = 6;\n case 6:\n _a.trys.push([6, 8, , 9]);\n return [4 /*yield*/, this.currentUserPoolUser(params)];\n case 7:\n user = _a.sent();\n return [3 /*break*/, 9];\n case 8:\n e_6 = _a.sent();\n if (e_6 === 'No userPool') {\n logger.error('Cannot get the current user because the user pool is missing. ' +\n 'Please make sure the Auth module is configured with a valid Cognito User Pool ID');\n }\n logger.debug('The user is not authenticated by the error', e_6);\n throw 'not authenticated';\n case 9:\n this.user = user;\n return [2 /*return*/, this.user];\n }\n });\n });\n };\n /**\n * Get current user's session\n * @return - A promise resolves to session object if success\n */\n AuthClass.prototype.currentSession = function () {\n var that = this;\n logger.debug('Getting current session');\n // Purposely not calling the reject method here because we don't need a console error\n if (!this.userPool) {\n return Promise.reject();\n }\n return new Promise(function (res, rej) {\n that\n .currentUserPoolUser()\n .then(function (user) {\n that\n .userSession(user)\n .then(function (session) {\n res(session);\n return;\n })\n .catch(function (e) {\n logger.debug('Failed to get the current session', e);\n rej(e);\n return;\n });\n })\n .catch(function (e) {\n logger.debug('Failed to get the current user', e);\n rej(e);\n return;\n });\n });\n };\n /**\n * Get the corresponding user session\n * @param {Object} user - The CognitoUser object\n * @return - A promise resolves to the session\n */\n AuthClass.prototype.userSession = function (user) {\n if (!user) {\n logger.debug('the user is null');\n return this.rejectAuthError(AuthErrorTypes.NoUserSession);\n }\n return new Promise(function (resolve, reject) {\n logger.debug('Getting the session from this user:', user);\n user.getSession(function (err, session) {\n if (err) {\n logger.debug('Failed to get the session from user', user);\n reject(err);\n return;\n }\n else {\n logger.debug('Succeed to get the user session', session);\n resolve(session);\n return;\n }\n });\n });\n };\n /**\n * Get authenticated credentials of current user.\n * @return - A promise resolves to be current user's credentials\n */\n AuthClass.prototype.currentUserCredentials = function () {\n return __awaiter(this, void 0, void 0, function () {\n var that, e_7, federatedInfo;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n that = this;\n logger.debug('Getting current user credentials');\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._storageSync];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n e_7 = _a.sent();\n logger.debug('Failed to sync cache info into memory', e_7);\n throw e_7;\n case 4:\n federatedInfo = null;\n try {\n federatedInfo = JSON.parse(this._storage.getItem('aws-amplify-federatedInfo'));\n }\n catch (e) {\n logger.debug('failed to get or parse item aws-amplify-federatedInfo', e);\n }\n if (federatedInfo) {\n // refresh the jwt token here if necessary\n return [2 /*return*/, Credentials.refreshFederatedToken(federatedInfo)];\n }\n else {\n return [2 /*return*/, this.currentSession()\n .then(function (session) {\n logger.debug('getting session success', session);\n return Credentials.set(session, 'session');\n })\n .catch(function (error) {\n logger.debug('getting session failed', error);\n return Credentials.set(null, 'guest');\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n AuthClass.prototype.currentCredentials = function () {\n logger.debug('getting current credntials');\n return Credentials.get();\n };\n /**\n * Initiate an attribute confirmation request\n * @param {Object} user - The CognitoUser\n * @param {Object} attr - The attributes to be verified\n * @return - A promise resolves to callback data if success\n */\n AuthClass.prototype.verifyUserAttribute = function (user, attr, clientMetadata) {\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n return new Promise(function (resolve, reject) {\n user.getAttributeVerificationCode(attr, {\n onSuccess: function () {\n return resolve();\n },\n onFailure: function (err) {\n return reject(err);\n },\n clientMetadata: clientMetadata,\n });\n });\n };\n /**\n * Confirm an attribute using a confirmation code\n * @param {Object} user - The CognitoUser\n * @param {Object} attr - The attribute to be verified\n * @param {String} code - The confirmation code\n * @return - A promise resolves to callback data if success\n */\n AuthClass.prototype.verifyUserAttributeSubmit = function (user, attr, code) {\n if (!code) {\n return this.rejectAuthError(AuthErrorTypes.EmptyCode);\n }\n return new Promise(function (resolve, reject) {\n user.verifyAttribute(attr, code, {\n onSuccess: function (data) {\n resolve(data);\n return;\n },\n onFailure: function (err) {\n reject(err);\n return;\n },\n });\n });\n };\n AuthClass.prototype.verifyCurrentUserAttribute = function (attr) {\n var that = this;\n return that\n .currentUserPoolUser()\n .then(function (user) { return that.verifyUserAttribute(user, attr); });\n };\n /**\n * Confirm current user's attribute using a confirmation code\n * @param {Object} attr - The attribute to be verified\n * @param {String} code - The confirmation code\n * @return - A promise resolves to callback data if success\n */\n AuthClass.prototype.verifyCurrentUserAttributeSubmit = function (attr, code) {\n var that = this;\n return that\n .currentUserPoolUser()\n .then(function (user) { return that.verifyUserAttributeSubmit(user, attr, code); });\n };\n AuthClass.prototype.cognitoIdentitySignOut = function (opts, user) {\n return __awaiter(this, void 0, void 0, function () {\n var e_8, isSignedInHostedUI;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this._storageSync];\n case 1:\n _a.sent();\n return [3 /*break*/, 3];\n case 2:\n e_8 = _a.sent();\n logger.debug('Failed to sync cache info into memory', e_8);\n throw e_8;\n case 3:\n isSignedInHostedUI = this._oAuthHandler &&\n this._storage.getItem('amplify-signin-with-hostedUI') === 'true';\n return [2 /*return*/, new Promise(function (res, rej) {\n if (opts && opts.global) {\n logger.debug('user global sign out', user);\n // in order to use global signout\n // we must validate the user as an authenticated user by using getSession\n user.getSession(function (err, result) {\n if (err) {\n logger.debug('failed to get the user session', err);\n return rej(err);\n }\n user.globalSignOut({\n onSuccess: function (data) {\n logger.debug('global sign out success');\n if (isSignedInHostedUI) {\n return res(_this._oAuthHandler.signOut());\n }\n else {\n return res();\n }\n },\n onFailure: function (err) {\n logger.debug('global sign out failed', err);\n return rej(err);\n },\n });\n });\n }\n else {\n logger.debug('user sign out', user);\n user.signOut();\n if (isSignedInHostedUI) {\n return res(_this._oAuthHandler.signOut());\n }\n else {\n return res();\n }\n }\n })];\n }\n });\n });\n };\n /**\n * Sign out method\n * @\n * @return - A promise resolved if success\n */\n AuthClass.prototype.signOut = function (opts) {\n return __awaiter(this, void 0, void 0, function () {\n var e_9, user;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.cleanCachedItems()];\n case 1:\n _a.sent();\n return [3 /*break*/, 3];\n case 2:\n e_9 = _a.sent();\n logger.debug('failed to clear cached items');\n return [3 /*break*/, 3];\n case 3:\n if (!this.userPool) return [3 /*break*/, 7];\n user = this.userPool.getCurrentUser();\n if (!user) return [3 /*break*/, 5];\n return [4 /*yield*/, this.cognitoIdentitySignOut(opts, user)];\n case 4:\n _a.sent();\n return [3 /*break*/, 6];\n case 5:\n logger.debug('no current Cognito user');\n _a.label = 6;\n case 6: return [3 /*break*/, 8];\n case 7:\n logger.debug('no Congito User pool');\n _a.label = 8;\n case 8:\n /**\n * Note for future refactor - no reliable way to get username with\n * Cognito User Pools vs Identity when federating with Social Providers\n * This is why we need a well structured session object that can be inspected\n * and information passed back in the message below for Hub dispatch\n */\n dispatchAuthEvent('signOut', this.user, \"A user has been signed out\");\n this.user = null;\n return [2 /*return*/];\n }\n });\n });\n };\n AuthClass.prototype.cleanCachedItems = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: \n // clear cognito cached item\n return [4 /*yield*/, Credentials.clear()];\n case 1:\n // clear cognito cached item\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Change a password for an authenticated user\n * @param {Object} user - The CognitoUser object\n * @param {String} oldPassword - the current password\n * @param {String} newPassword - the requested new password\n * @return - A promise resolves if success\n */\n AuthClass.prototype.changePassword = function (user, oldPassword, newPassword, clientMetadata) {\n var _this = this;\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n return new Promise(function (resolve, reject) {\n _this.userSession(user).then(function (session) {\n user.changePassword(oldPassword, newPassword, function (err, data) {\n if (err) {\n logger.debug('change password failure', err);\n return reject(err);\n }\n else {\n return resolve(data);\n }\n }, clientMetadata);\n });\n });\n };\n /**\n * Initiate a forgot password request\n * @param {String} username - the username to change password\n * @return - A promise resolves if success\n */\n AuthClass.prototype.forgotPassword = function (username, clientMetadata) {\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n var user = this.createCognitoUser(username);\n return new Promise(function (resolve, reject) {\n user.forgotPassword({\n onSuccess: function () {\n resolve();\n return;\n },\n onFailure: function (err) {\n logger.debug('forgot password failure', err);\n dispatchAuthEvent('forgotPassword_failure', err, username + \" forgotPassword failed\");\n reject(err);\n return;\n },\n inputVerificationCode: function (data) {\n dispatchAuthEvent('forgotPassword', user, username + \" has initiated forgot password flow\");\n resolve(data);\n return;\n },\n }, clientMetadata);\n });\n };\n /**\n * Confirm a new password using a confirmation Code\n * @param {String} username - The username\n * @param {String} code - The confirmation code\n * @param {String} password - The new password\n * @return - A promise that resolves if success\n */\n AuthClass.prototype.forgotPasswordSubmit = function (username, code, password, clientMetadata) {\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n if (!code) {\n return this.rejectAuthError(AuthErrorTypes.EmptyCode);\n }\n if (!password) {\n return this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n }\n var user = this.createCognitoUser(username);\n return new Promise(function (resolve, reject) {\n user.confirmPassword(code, password, {\n onSuccess: function () {\n dispatchAuthEvent('forgotPasswordSubmit', user, username + \" forgotPasswordSubmit successful\");\n resolve();\n return;\n },\n onFailure: function (err) {\n dispatchAuthEvent('forgotPasswordSubmit_failure', err, username + \" forgotPasswordSubmit failed\");\n reject(err);\n return;\n },\n }, clientMetadata);\n });\n };\n /**\n * Get user information\n * @async\n * @return {Object }- current User's information\n */\n AuthClass.prototype.currentUserInfo = function () {\n return __awaiter(this, void 0, void 0, function () {\n var source, user, attributes, userAttrs, credentials, e_10, info, err_1, user;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n source = Credentials.getCredSource();\n if (!(!source || source === 'aws' || source === 'userPool')) return [3 /*break*/, 9];\n return [4 /*yield*/, this.currentUserPoolUser().catch(function (err) {\n return logger.debug(err);\n })];\n case 1:\n user = _a.sent();\n if (!user) {\n return [2 /*return*/, null];\n }\n _a.label = 2;\n case 2:\n _a.trys.push([2, 8, , 9]);\n return [4 /*yield*/, this.userAttributes(user)];\n case 3:\n attributes = _a.sent();\n userAttrs = this.attributesToObject(attributes);\n credentials = null;\n _a.label = 4;\n case 4:\n _a.trys.push([4, 6, , 7]);\n return [4 /*yield*/, this.currentCredentials()];\n case 5:\n credentials = _a.sent();\n return [3 /*break*/, 7];\n case 6:\n e_10 = _a.sent();\n logger.debug('Failed to retrieve credentials while getting current user info', e_10);\n return [3 /*break*/, 7];\n case 7:\n info = {\n id: credentials ? credentials.identityId : undefined,\n username: user.getUsername(),\n attributes: userAttrs,\n };\n return [2 /*return*/, info];\n case 8:\n err_1 = _a.sent();\n logger.debug('currentUserInfo error', err_1);\n return [2 /*return*/, {}];\n case 9:\n if (source === 'federated') {\n user = this.user;\n return [2 /*return*/, user ? user : {}];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n AuthClass.prototype.federatedSignIn = function (providerOrOptions, response, user) {\n return __awaiter(this, void 0, void 0, function () {\n var options, provider, customState, client_id, redirect_uri, provider, loggedInUser, token, identity_id, expires_at, credentials, currentUser;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._config.identityPoolId && !this._config.userPoolId) {\n throw new Error(\"Federation requires either a User Pool or Identity Pool in config\");\n }\n // Ensure backwards compatability\n if (typeof providerOrOptions === 'undefined') {\n if (this._config.identityPoolId && !this._config.userPoolId) {\n throw new Error(\"Federation with Identity Pools requires tokens passed as arguments\");\n }\n }\n if (!(isFederatedSignInOptions(providerOrOptions) ||\n isFederatedSignInOptionsCustom(providerOrOptions) ||\n typeof providerOrOptions === 'undefined')) return [3 /*break*/, 1];\n options = providerOrOptions || {\n provider: CognitoHostedUIIdentityProvider.Cognito,\n };\n provider = isFederatedSignInOptions(options)\n ? options.provider\n : options.customProvider;\n customState = isFederatedSignInOptions(options)\n ? options.customState\n : options.customState;\n if (this._config.userPoolId) {\n client_id = isCognitoHostedOpts(this._config.oauth)\n ? this._config.userPoolWebClientId\n : this._config.oauth.clientID;\n redirect_uri = isCognitoHostedOpts(this._config.oauth)\n ? this._config.oauth.redirectSignIn\n : this._config.oauth.redirectUri;\n this._oAuthHandler.oauthSignIn(this._config.oauth.responseType, this._config.oauth.domain, redirect_uri, client_id, provider, customState);\n }\n return [3 /*break*/, 4];\n case 1:\n provider = providerOrOptions;\n // To check if the user is already logged in\n try {\n loggedInUser = JSON.stringify(JSON.parse(this._storage.getItem('aws-amplify-federatedInfo')).user);\n if (loggedInUser) {\n logger.warn(\"There is already a signed in user: \" + loggedInUser + \" in your app.\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tYou should not call Auth.federatedSignIn method again as it may cause unexpected behavior.\");\n }\n }\n catch (e) { }\n token = response.token, identity_id = response.identity_id, expires_at = response.expires_at;\n return [4 /*yield*/, Credentials.set({ provider: provider, token: token, identity_id: identity_id, user: user, expires_at: expires_at }, 'federation')];\n case 2:\n credentials = _a.sent();\n return [4 /*yield*/, this.currentAuthenticatedUser()];\n case 3:\n currentUser = _a.sent();\n dispatchAuthEvent('signIn', currentUser, \"A user \" + currentUser.username + \" has been signed in\");\n logger.debug('federated sign in credentials', credentials);\n return [2 /*return*/, credentials];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Used to complete the OAuth flow with or without the Cognito Hosted UI\n * @param {String} URL - optional parameter for customers to pass in the response URL\n */\n AuthClass.prototype._handleAuthResponse = function (URL) {\n return __awaiter(this, void 0, void 0, function () {\n var currentUrl, hasCodeOrError, hasTokenOrError, _a, accessToken, idToken, refreshToken, state, session, credentials, isCustomStateIncluded, currentUser, _b, customState, err_2;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!this._config.userPoolId) {\n throw new Error(\"OAuth responses require a User Pool defined in config\");\n }\n dispatchAuthEvent('parsingCallbackUrl', { url: URL }, \"The callback url is being parsed\");\n currentUrl = URL || (JS.browserOrNode().isBrowser ? window.location.href : '');\n hasCodeOrError = !!(parse(currentUrl).query || '')\n .split('&')\n .map(function (entry) { return entry.split('='); })\n .find(function (_a) {\n var k = _a[0];\n return k === 'code' || k === 'error';\n });\n hasTokenOrError = !!(parse(currentUrl).hash || '#')\n .substr(1)\n .split('&')\n .map(function (entry) { return entry.split('='); })\n .find(function (_a) {\n var k = _a[0];\n return k === 'access_token' || k === 'error';\n });\n if (!(hasCodeOrError || hasTokenOrError)) return [3 /*break*/, 6];\n _c.label = 1;\n case 1:\n _c.trys.push([1, 5, , 6]);\n return [4 /*yield*/, this._oAuthHandler.handleAuthResponse(currentUrl)];\n case 2:\n _a = _c.sent(), accessToken = _a.accessToken, idToken = _a.idToken, refreshToken = _a.refreshToken, state = _a.state;\n session = new CognitoUserSession({\n IdToken: new CognitoIdToken({ IdToken: idToken }),\n RefreshToken: new CognitoRefreshToken({ RefreshToken: refreshToken }),\n AccessToken: new CognitoAccessToken({ AccessToken: accessToken }),\n });\n credentials = void 0;\n if (!this._config.identityPoolId) return [3 /*break*/, 4];\n return [4 /*yield*/, Credentials.set(session, 'session')];\n case 3:\n credentials = _c.sent();\n logger.debug('AWS credentials', credentials);\n _c.label = 4;\n case 4:\n isCustomStateIncluded = /-/.test(state);\n currentUser = this.createCognitoUser(session.getIdToken().decodePayload()['cognito:username']);\n dispatchAuthEvent('signIn', currentUser, \"A user \" + currentUser.getUsername() + \" has been signed in\");\n dispatchAuthEvent('cognitoHostedUI', currentUser, \"A user \" + currentUser.getUsername() + \" has been signed in via Cognito Hosted UI\");\n if (isCustomStateIncluded) {\n _b = state.split('-'), customState = _b[1];\n dispatchAuthEvent('customOAuthState', customState, \"State for user \" + currentUser.getUsername());\n }\n // This calls cacheTokens() in Cognito SDK\n currentUser.setSignInUserSession(session);\n //#endregion\n if (window && typeof window.history !== 'undefined') {\n window.history.replaceState({}, null, this._config.oauth.redirectSignIn);\n }\n return [2 /*return*/, credentials];\n case 5:\n err_2 = _c.sent();\n logger.debug('Error in cognito hosted auth response', err_2);\n dispatchAuthEvent('signIn_failure', err_2, \"The OAuth response flow failed\");\n dispatchAuthEvent('cognitoHostedUI_failure', err_2, \"A failure occurred when returning to the Cognito Hosted UI\");\n dispatchAuthEvent('customState_failure', err_2, \"A failure occurred when returning state\");\n throw err_2;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Compact version of credentials\n * @param {Object} credentials\n * @return {Object} - Credentials\n */\n AuthClass.prototype.essentialCredentials = function (credentials) {\n return {\n accessKeyId: credentials.accessKeyId,\n sessionToken: credentials.sessionToken,\n secretAccessKey: credentials.secretAccessKey,\n identityId: credentials.identityId,\n authenticated: credentials.authenticated,\n };\n };\n AuthClass.prototype.attributesToObject = function (attributes) {\n var obj = {};\n if (attributes) {\n attributes.map(function (attribute) {\n if (attribute.Value === 'true') {\n obj[attribute.Name] = true;\n }\n else if (attribute.Value === 'false') {\n obj[attribute.Name] = false;\n }\n else {\n obj[attribute.Name] = attribute.Value;\n }\n });\n }\n return obj;\n };\n AuthClass.prototype.createCognitoUser = function (username) {\n var userData = {\n Username: username,\n Pool: this.userPool,\n };\n userData.Storage = this._storage;\n var authenticationFlowType = this._config.authenticationFlowType;\n var user = new CognitoUser(userData);\n if (authenticationFlowType) {\n user.setAuthenticationFlowType(authenticationFlowType);\n }\n return user;\n };\n AuthClass.prototype._isValidAuthStorage = function (obj) {\n // We need to check if the obj has the functions of Storage\n return (!!obj &&\n typeof obj.getItem === 'function' &&\n typeof obj.setItem === 'function' &&\n typeof obj.removeItem === 'function' &&\n typeof obj.clear === 'function');\n };\n AuthClass.prototype.noUserPoolErrorHandler = function (config) {\n if (config) {\n if (!config.userPoolId || !config.identityPoolId) {\n return AuthErrorTypes.MissingAuthConfig;\n }\n }\n return AuthErrorTypes.NoConfig;\n };\n AuthClass.prototype.rejectAuthError = function (type) {\n return Promise.reject(new AuthError(type));\n };\n AuthClass.prototype.rejectNoUserPool = function () {\n var type = this.noUserPoolErrorHandler(this._config);\n return Promise.reject(new NoUserPoolError(type));\n };\n return AuthClass;\n}());\nexport default AuthClass;\n//# sourceMappingURL=Auth.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar SELF = '_self';\nexport var launchUri = function (url) {\n var windowProxy = window.open(url, SELF);\n if (windowProxy) {\n return Promise.resolve(windowProxy);\n }\n else {\n return Promise.reject();\n }\n};\n//# sourceMappingURL=urlOpener.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nexport var setState = function (state) {\n window.sessionStorage.setItem('oauth_state', state);\n};\nexport var getState = function () {\n var oauth_state = window.sessionStorage.getItem('oauth_state');\n window.sessionStorage.removeItem('oauth_state');\n return oauth_state;\n};\nexport var setPKCE = function (private_key) {\n window.sessionStorage.setItem('ouath_pkce_key', private_key);\n};\nexport var getPKCE = function () {\n var ouath_pkce_key = window.sessionStorage.getItem('ouath_pkce_key');\n window.sessionStorage.removeItem('ouath_pkce_key');\n return ouath_pkce_key;\n};\nexport var clearAll = function () {\n window.sessionStorage.removeItem('ouath_pkce_key');\n window.sessionStorage.removeItem('oauth_state');\n};\n//# sourceMappingURL=oauthStorage.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { parse } from 'url'; // Used for OAuth parsing of Cognito Hosted UI\nimport { launchUri } from './urlOpener';\nimport * as oAuthStorage from './oauthStorage';\nimport { isCognitoHostedOpts, CognitoHostedUIIdentityProvider, } from '../types/Auth';\nimport { ConsoleLogger as Logger, Hub } from '@aws-amplify/core';\nvar SHA256 = require('crypto-js/sha256');\nvar Base64 = require('crypto-js/enc-base64');\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\n typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nvar dispatchAuthEvent = function (event, data, message) {\n Hub.dispatch('auth', { event: event, data: data, message: message }, 'Auth', AMPLIFY_SYMBOL);\n};\nvar logger = new Logger('OAuth');\nvar OAuth = /** @class */ (function () {\n function OAuth(_a) {\n var config = _a.config, cognitoClientId = _a.cognitoClientId, _b = _a.scopes, scopes = _b === void 0 ? [] : _b;\n this._urlOpener = config.urlOpener || launchUri;\n this._config = config;\n this._cognitoClientId = cognitoClientId;\n this._scopes = scopes;\n }\n OAuth.prototype.oauthSignIn = function (responseType, domain, redirectSignIn, clientId, provider, customState) {\n if (responseType === void 0) { responseType = 'code'; }\n if (provider === void 0) { provider = CognitoHostedUIIdentityProvider.Cognito; }\n var generatedState = this._generateState(32);\n var state = customState\n ? generatedState + \"-\" + customState\n : generatedState;\n oAuthStorage.setState(encodeURIComponent(state));\n var pkce_key = this._generateRandom(128);\n oAuthStorage.setPKCE(pkce_key);\n var code_challenge = this._generateChallenge(pkce_key);\n var code_challenge_method = 'S256';\n var queryString = Object.entries(__assign(__assign({ redirect_uri: redirectSignIn, response_type: responseType, client_id: clientId, identity_provider: provider, scopes: this._scopes, state: state }, (responseType === 'code' ? { code_challenge: code_challenge } : {})), (responseType === 'code' ? { code_challenge_method: code_challenge_method } : {})))\n .map(function (_a) {\n var k = _a[0], v = _a[1];\n return encodeURIComponent(k) + \"=\" + encodeURIComponent(v);\n })\n .join('&');\n var URL = \"https://\" + domain + \"/oauth2/authorize?\" + queryString;\n logger.debug(\"Redirecting to \" + URL);\n this._urlOpener(URL, redirectSignIn);\n };\n OAuth.prototype._handleCodeFlow = function (currentUrl) {\n return __awaiter(this, void 0, void 0, function () {\n var code, oAuthTokenEndpoint, client_id, redirect_uri, code_verifier, oAuthTokenBody, body, _a, access_token, refresh_token, id_token, error;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n code = (parse(currentUrl).query || '')\n .split('&')\n .map(function (pairings) { return pairings.split('='); })\n .reduce(function (accum, _a) {\n var _b;\n var k = _a[0], v = _a[1];\n return (__assign(__assign({}, accum), (_b = {}, _b[k] = v, _b)));\n }, { code: undefined }).code;\n if (!code) {\n return [2 /*return*/];\n }\n oAuthTokenEndpoint = 'https://' + this._config.domain + '/oauth2/token';\n dispatchAuthEvent('codeFlow', {}, \"Retrieving tokens from \" + oAuthTokenEndpoint);\n client_id = isCognitoHostedOpts(this._config)\n ? this._cognitoClientId\n : this._config.clientID;\n redirect_uri = isCognitoHostedOpts(this._config)\n ? this._config.redirectSignIn\n : this._config.redirectUri;\n code_verifier = oAuthStorage.getPKCE();\n oAuthTokenBody = __assign({ grant_type: 'authorization_code', code: code,\n client_id: client_id,\n redirect_uri: redirect_uri }, (code_verifier ? { code_verifier: code_verifier } : {}));\n logger.debug(\"Calling token endpoint: \" + oAuthTokenEndpoint + \" with\", oAuthTokenBody);\n body = Object.entries(oAuthTokenBody)\n .map(function (_a) {\n var k = _a[0], v = _a[1];\n return encodeURIComponent(k) + \"=\" + encodeURIComponent(v);\n })\n .join('&');\n return [4 /*yield*/, fetch(oAuthTokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: body,\n })];\n case 1: return [4 /*yield*/, (_b.sent()).json()];\n case 2:\n _a = _b.sent(), access_token = _a.access_token, refresh_token = _a.refresh_token, id_token = _a.id_token, error = _a.error;\n if (error) {\n throw new Error(error);\n }\n return [2 /*return*/, {\n accessToken: access_token,\n refreshToken: refresh_token,\n idToken: id_token,\n }];\n }\n });\n });\n };\n OAuth.prototype._handleImplicitFlow = function (currentUrl) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, id_token, access_token;\n return __generator(this, function (_b) {\n _a = parse(currentUrl)\n .hash.substr(1) // Remove # from returned code\n .split('&')\n .map(function (pairings) { return pairings.split('='); })\n .reduce(function (accum, _a) {\n var _b;\n var k = _a[0], v = _a[1];\n return (__assign(__assign({}, accum), (_b = {}, _b[k] = v, _b)));\n }, {\n id_token: undefined,\n access_token: undefined,\n }), id_token = _a.id_token, access_token = _a.access_token;\n dispatchAuthEvent('implicitFlow', {}, \"Got tokens from \" + currentUrl);\n logger.debug(\"Retrieving implicit tokens from \" + currentUrl + \" with\");\n return [2 /*return*/, {\n accessToken: access_token,\n idToken: id_token,\n refreshToken: null,\n }];\n });\n });\n };\n OAuth.prototype.handleAuthResponse = function (currentUrl) {\n return __awaiter(this, void 0, void 0, function () {\n var urlParams, error, error_description, state, _a, _b, e_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 5, , 6]);\n urlParams = currentUrl\n ? __assign(__assign({}, (parse(currentUrl).hash || '#')\n .substr(1)\n .split('&')\n .map(function (entry) { return entry.split('='); })\n .reduce(function (acc, _a) {\n var k = _a[0], v = _a[1];\n return ((acc[k] = v), acc);\n }, {})), (parse(currentUrl).query || '')\n .split('&')\n .map(function (entry) { return entry.split('='); })\n .reduce(function (acc, _a) {\n var k = _a[0], v = _a[1];\n return ((acc[k] = v), acc);\n }, {}))\n : {};\n error = urlParams.error, error_description = urlParams.error_description;\n if (error) {\n throw new Error(error_description);\n }\n state = this._validateState(urlParams);\n logger.debug(\"Starting \" + this._config.responseType + \" flow with \" + currentUrl);\n if (!(this._config.responseType === 'code')) return [3 /*break*/, 2];\n _a = [{}];\n return [4 /*yield*/, this._handleCodeFlow(currentUrl)];\n case 1: return [2 /*return*/, __assign.apply(void 0, [__assign.apply(void 0, _a.concat([(_c.sent())])), { state: state }])];\n case 2:\n _b = [{}];\n return [4 /*yield*/, this._handleImplicitFlow(currentUrl)];\n case 3: return [2 /*return*/, __assign.apply(void 0, [__assign.apply(void 0, _b.concat([(_c.sent())])), { state: state }])];\n case 4: return [3 /*break*/, 6];\n case 5:\n e_1 = _c.sent();\n logger.error(\"Error handling auth response.\", e_1);\n return [3 /*break*/, 6];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n OAuth.prototype._validateState = function (urlParams) {\n if (!urlParams) {\n return;\n }\n var savedState = oAuthStorage.getState();\n var returnedState = urlParams.state;\n // This is because savedState only exists if the flow was initiated by Amplify\n if (savedState && savedState !== returnedState) {\n throw new Error('Invalid state in OAuth flow');\n }\n return returnedState;\n };\n OAuth.prototype.signOut = function () {\n return __awaiter(this, void 0, void 0, function () {\n var oAuthLogoutEndpoint, client_id, signout_uri;\n return __generator(this, function (_a) {\n oAuthLogoutEndpoint = 'https://' + this._config.domain + '/logout?';\n client_id = isCognitoHostedOpts(this._config)\n ? this._cognitoClientId\n : this._config.oauth.clientID;\n signout_uri = isCognitoHostedOpts(this._config)\n ? this._config.redirectSignOut\n : this._config.returnTo;\n oAuthLogoutEndpoint += Object.entries({\n client_id: client_id,\n logout_uri: encodeURIComponent(signout_uri),\n })\n .map(function (_a) {\n var k = _a[0], v = _a[1];\n return k + \"=\" + v;\n })\n .join('&');\n dispatchAuthEvent('oAuthSignOut', { oAuth: 'signOut' }, \"Signing out from \" + oAuthLogoutEndpoint);\n logger.debug(\"Signing out from \" + oAuthLogoutEndpoint);\n return [2 /*return*/, this._urlOpener(oAuthLogoutEndpoint)];\n });\n });\n };\n OAuth.prototype._generateState = function (length) {\n var result = '';\n var i = length;\n var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n for (; i > 0; --i)\n result += chars[Math.round(Math.random() * (chars.length - 1))];\n return result;\n };\n OAuth.prototype._generateChallenge = function (code) {\n return this._base64URL(SHA256(code));\n };\n OAuth.prototype._base64URL = function (string) {\n return string\n .toString(Base64)\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n };\n OAuth.prototype._generateRandom = function (size) {\n var CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';\n var buffer = new Uint8Array(size);\n if (typeof window !== 'undefined' && !!window.crypto) {\n window.crypto.getRandomValues(buffer);\n }\n else {\n for (var i = 0; i < size; i += 1) {\n buffer[i] = (Math.random() * CHARSET.length) | 0;\n }\n }\n return this._bufferToString(buffer);\n };\n OAuth.prototype._bufferToString = function (buffer) {\n var CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n var state = [];\n for (var i = 0; i < buffer.byteLength; i += 1) {\n var index = buffer[i] % CHARSET.length;\n state.push(CHARSET[index]);\n }\n return state.join('');\n };\n return OAuth;\n}());\nexport default OAuth;\n//# sourceMappingURL=OAuth.js.map","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { JS } from '@aws-amplify/core';\nexport default (function (callback) {\n if (JS.browserOrNode().isBrowser && window.location) {\n var url = window.location.href;\n callback({ url: url });\n }\n else if (JS.browserOrNode().isNode) {\n // continue building on ssr\n (function () { }); // noop\n }\n else {\n throw new Error('Not supported');\n }\n});\n//# sourceMappingURL=urlListener.js.map","/*\n * Copyright 2019-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('AuthError');\nvar DEFAULT_MSG = 'Authentication Error';\nvar AuthError = /** @class */ (function (_super) {\n __extends(AuthError, _super);\n function AuthError(type) {\n var _this = this;\n var _a = authErrorMessages[type], message = _a.message, log = _a.log;\n _this = _super.call(this, message) || this;\n // Hack for making the custom error class work when transpiled to es5\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n _this.constructor = AuthError;\n Object.setPrototypeOf(_this, AuthError.prototype);\n _this.name = 'AuthError';\n _this.log = log || message;\n logger.error(_this.log);\n return _this;\n }\n return AuthError;\n}(Error));\nexport { AuthError };\nvar NoUserPoolError = /** @class */ (function (_super) {\n __extends(NoUserPoolError, _super);\n function NoUserPoolError(type) {\n var _this = _super.call(this, type) || this;\n // Hack for making the custom error class work when transpiled to es5\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n _this.constructor = NoUserPoolError;\n Object.setPrototypeOf(_this, NoUserPoolError.prototype);\n _this.name = 'NoUserPoolError';\n return _this;\n }\n return NoUserPoolError;\n}(AuthError));\nexport { NoUserPoolError };\nexport var authErrorMessages = {\n noConfig: {\n message: DEFAULT_MSG,\n log: \"\\n Error: Amplify has not been configured correctly.\\n This error is typically caused by one of the following scenarios:\\n\\n 1. Make sure you're passing the awsconfig object to Amplify.configure() in your app's entry point\\n See https://aws-amplify.github.io/docs/js/authentication#configure-your-app for more information\\n \\n 2. There might be multiple conflicting versions of aws-amplify or amplify packages in your node_modules.\\n Try deleting your node_modules folder and reinstalling the dependencies with `yarn install`\\n \",\n },\n missingAuthConfig: {\n message: DEFAULT_MSG,\n log: \"\\n Error: Amplify has not been configured correctly. \\n The configuration object is missing required auth properties. \\n Did you run `amplify push` after adding auth via `amplify add auth`?\\n See https://aws-amplify.github.io/docs/js/authentication#amplify-project-setup for more information\\n \",\n },\n emptyUsername: {\n message: 'Username cannot be empty',\n },\n // TODO: should include a list of valid sign-in types\n invalidUsername: {\n message: 'The username should either be a string or one of the sign in types',\n },\n emptyPassword: {\n message: 'Password cannot be empty',\n },\n emptyCode: {\n message: 'Confirmation code cannot be empty',\n },\n signUpError: {\n message: 'Error creating account',\n log: 'The first parameter should either be non-null string or object',\n },\n noMFA: {\n message: 'No valid MFA method provided',\n },\n invalidMFA: {\n message: 'Invalid MFA type',\n },\n emptyChallengeResponse: {\n message: 'Challenge response cannot be empty',\n },\n noUserSession: {\n message: 'Failed to get the session because the user is empty',\n },\n default: {\n message: DEFAULT_MSG,\n },\n};\n//# sourceMappingURL=Errors.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport AuthClass, { CognitoHostedUIIdentityProvider } from './Auth';\nimport { CognitoUser, CookieStorage } from 'amazon-cognito-identity-js';\nimport Amplify, { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('Auth');\nvar _instance = null;\nif (!_instance) {\n logger.debug('Create Auth Instance');\n _instance = new AuthClass(null);\n}\nvar Auth = _instance;\nAmplify.register(Auth);\nexport default Auth;\nexport { AuthClass, CognitoUser, CookieStorage, CognitoHostedUIIdentityProvider, };\n//# sourceMappingURL=index.js.map"],"sourceRoot":""}