{"version":3,"sources":["webpack:///./node_modules/@aws-amplify/auth/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/api/lib-esm/API.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/Errors.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/OAuth/urlOpener.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/OAuth/OAuth.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/OAuth/oauthStorage.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/Auth.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/urlListener.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/types/Auth.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/common/AuthErrorStrings.js"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","push","logger","API","APIClass","options","Auth","Cache","Credentials","_options","_restApi","_graphqlApi","debug","getModuleName","configure","restAPIConfig","graphQLAPIConfig","get","apiName","path","init","post","put","patch","del","head","isCancel","error","cancel","request","message","hasCancelToken","endpoint","_a","getGraphqlOperationType","operation","graphql","additionalHeaders","register","extendStatics","launchUri","url","windowProxy","window","open","__read","o","m","r","ar","AMPLIFY_SYMBOL","for","dispatchAuthEvent","event","data","Hub","dispatch","OAuth","config","cognitoClientId","_b","scopes","_urlOpener","urlOpener","_config","_cognitoClientId","isValidScopes","Error","_scopes","Array","isArray","every","scope","oauthSignIn","responseType","domain","redirectSignIn","clientId","provider","customState","Cognito","generatedState","_generateState","state","sessionStorage","setItem","private_key","pkce_key","_generateRandom","code_challenge","_generateChallenge","scopesString","join","URL","entries","redirect_uri","response_type","client_id","identity_provider","code_challenge_method","map","k","encodeURIComponent","_handleCodeFlow","currentUrl","code","currentUrlPathname","redirectSignInPathname","oAuthTokenEndpoint","code_verifier","oAuthTokenBody","access_token","refresh_token","id_token","query","split","pairings","reduce","accum","_c","undefined","pathname","clientID","redirectUri","ouath_pkce_key","getItem","removeItem","grant_type","fetch","method","headers","json","accessToken","refreshToken","idToken","_handleImplicitFlow","hash","substr","handleAuthResponse","urlParams","error_description","e_1","entry","acc","_validateState","concat","oauth_state","savedState","returnedState","signOut","oAuthLogoutEndpoint","signout_uri","oauth","redirectSignOut","returnTo","logout_uri","oAuth","chars","Math","round","random","_base64URL","string","toString","replace","size","buffer","Uint8Array","crypto","getRandomValues","_bufferToString","CHARSET","byteLength","index","__extends","d","b","setPrototypeOf","__proto__","__","constructor","create","AuthError","_super","type","_this","authErrorMessages","log","name","NoUserPoolError","noConfig","AuthErrorStrings","DEFAULT_MSG","missingAuthConfig","emptyUsername","EMPTY_USERNAME","invalidUsername","INVALID_USERNAME","emptyPassword","EMPTY_PASSWORD","emptyCode","EMPTY_CODE","signUpError","SIGN_UP_ERROR","noMFA","NO_MFA","invalidMFA","INVALID_MFA","emptyChallengeResponse","EMPTY_CHALLENGE","noUserSession","NO_USER_SESSION","deviceConfig","DEVICE_CONFIG","networkError","NETWORK_ERROR","default","USER_ADMIN_SCOPE","AuthClass","userPool","user","oAuthFlowInProgress","wrapRefreshSessionCallback","callback","currentCredentials","bind","currentUserCredentials","listen","payload","_storage","conf","Parser","parseMobilehubConfig","userPoolId","userPoolWebClientId","cookieStorage","region","identityPoolId","mandatorySignIn","refreshHandlers","identityPoolRegion","clientMetadata","storage","_isValidAuthStorage","ssr","UniversalStorage","StorageHelper","getStorage","_storageSync","userPoolData","UserPoolId","ClientId","Storage","cognitoHostedUIConfig","awsCognito","cognitoAuthParams","_oAuthHandler","usedResponseUrls_1","JS","browserOrNode","isBrowser","location","href","isNode","urlListener","_handleAuthResponse","signUp","params","restOfAttrs","_i","rejectNoUserPool","username","password","attributes","validationData","email","phone_number","Name","Value","rejectAuthError","SignUpError","attrs_1","keys","key","validationDataObject_1","err","EmptyPassword","EmptyUsername","confirmSignUp","EmptyCode","createCognitoUser","forceAliasCreation","confirmRegistration","resendSignUp","resendConfirmationCode","signIn","usernameOrSignInOpts","pw","InvalidUsername","warn","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","pendingSignIn","authenticateUser","setAuthenticationFlowType","initiateAuth","getMFAOptions","res","rej","mfaOptions","getPreferredMFA","bypassCache","getUserData","cleanUpError_1","mfaType","isSessionInvalid","cleanUpInvalidSession","_getMfaTypeFromUserData","ret","preferredMFA","PreferredMfaSetting","mfaList","UserMFASettingList","MFAOptions","_getUserData","cleanUpError_2","setPreferredMFA","mfaMethod","userData","smsMfaSettings","totpMfaSettings","currentMFAType","PreferredMfa","Enabled","InvalidMFA","forEach","NoMFA","setUserMfaPreference","cleanUpError_3","disableSMS","disableMFA","enableSMS","enableMFA","setupTOTP","associateSoftwareToken","associateSecretCode","secretCode","verifyTotpToken","challengeAnswer","verifySoftwareToken","confirmSignIn","sendMFACode","e_3","completeNewPassword","completeNewPasswordChallenge","e_4","sendCustomChallengeAnswer","challengeResponses","EmptyChallengeResponse","deleteUserAttributes","attributeNames","userSession","deleteAttributes","deleteUser","e_5","isSignedInHostedUI","user_1","getCurrentUser","getSession","cleanUpError_4","cleanCachedItems","oAuthSignOutRedirect","updateUserAttributes","attributeList","indexOf","attr","updateAttributes","getUserAttributes","verifiedContact","attrs","attributesToObject","unverified","verified","isErrorWithMessage","isTokenRevokedError","isRefreshTokenRevokedError","isUserDisabledError","isUserDoesNotExistError","isRefreshTokenExpiredError","isOAuthInProgress","timeoutId","setTimeout","remove","hostedUISignCallback","clearTimeout","cleanUpError_5","getAccessToken","decodePayload","includes","cleanUpError_6","attribute","userAttribute","UserAttributes","catch","currentAuthenticatedUser","federatedUser","e_7","federatedInfo","e_8","JSON","parse","token","currentSession","NoUserSession","cleanUpError_7","e_9","refreshFederatedToken","verifyUserAttribute","getAttributeVerificationCode","success","verifyUserAttributeSubmit","verifyAttribute","verifyCurrentUserAttribute","verifyCurrentUserAttributeSubmit","cognitoIdentitySignOut","opts","e_10","global","cleanUpError_8","globalSignOut","oAuthSignOutRedirectOrReject","oAuthSignOutAndResolve","changePassword","oldPassword","newPassword","forgotPassword","inputVerificationCode","forgotPasswordSubmit","confirmPassword","currentUserInfo","source","userAttrs","credentials","e_12","err_1","getCredSource","id","identityId","federatedSignIn","providerOrOptions","response","loggedInUser","identity_id","expires_at","customProvider","stringify","hasCodeOrError","hasTokenOrError","isCustomStateIncluded","err_2","find","IdToken","RefreshToken","AccessToken","test","getIdToken","setSignInUserSession","history","replaceState","splice","essentialCredentials","accessKeyId","sessionToken","secretAccessKey","authenticated","obj","isTruthyString","toLowerCase","Pool","authenticationFlowType","noUserPoolErrorHandler","NoConfig","MissingAuthConfig","rememberDevice","currUser","error_1","getCachedDeviceKeyAndPassword","setDeviceStatusRemembered","DeviceConfig","NetworkError","forgetDevice","error_2","fetchDevices","error_3","cb","deviceList","Devices","device","deviceName","DeviceAttributes","DeviceKey","listDevices","Amplify","CognitoHostedUIIdentityProvider","AuthErrorTypes","GRAPHQL_AUTH_MODE","isFederatedSignInOptions","isFederatedSignInOptionsCustom","hasCustomState","isCognitoHostedOpts","isUsernamePasswordOpts"],"mappings":"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","file":"9dcd759.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 */\nimport { Auth } from './Auth';\nimport { CognitoHostedUIIdentityProvider, GRAPHQL_AUTH_MODE, } from './types/Auth';\nimport { CognitoUser, CookieStorage, appendToCognitoUserAgent, } from 'amazon-cognito-identity-js';\nimport { AuthErrorStrings } from './common/AuthErrorStrings';\n/**\n * @deprecated use named import\n */\nexport default Auth;\nexport { Auth, CognitoUser, CookieStorage, CognitoHostedUIIdentityProvider, appendToCognitoUserAgent, AuthErrorStrings, GRAPHQL_AUTH_MODE, };\n//# sourceMappingURL=index.js.map","var __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};\n/*\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 { Auth } from '@aws-amplify/auth';\nimport Cache from '@aws-amplify/cache';\nimport { RestAPIClass } from '@aws-amplify/api-rest';\nimport { GraphQLAPIClass, } from '@aws-amplify/api-graphql';\nimport { Amplify, ConsoleLogger as Logger, Credentials, } from '@aws-amplify/core';\nvar logger = new Logger('API');\n/**\n * @deprecated\n * Use RestApi or GraphQLAPI to reduce your application bundle size\n * Export Cloud Logic APIs\n */\nvar APIClass = /** @class */ (function () {\n /**\n * Initialize API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function APIClass(options) {\n this.Auth = Auth;\n this.Cache = Cache;\n this.Credentials = Credentials;\n this._options = options;\n this._restApi = new RestAPIClass(options);\n this._graphqlApi = new GraphQLAPIClass(options);\n logger.debug('API Options', this._options);\n }\n APIClass.prototype.getModuleName = function () {\n return 'API';\n };\n /**\n * Configure API part with aws configurations\n * @param {Object} config - Configuration of the API\n * @return {Object} - The current configuration\n */\n APIClass.prototype.configure = function (options) {\n this._options = Object.assign({}, this._options, options);\n // Share Amplify instance with client for SSR\n this._restApi.Credentials = this.Credentials;\n this._graphqlApi.Auth = this.Auth;\n this._graphqlApi.Cache = this.Cache;\n this._graphqlApi.Credentials = this.Credentials;\n var restAPIConfig = this._restApi.configure(this._options);\n var graphQLAPIConfig = this._graphqlApi.configure(this._options);\n return __assign(__assign({}, restAPIConfig), graphQLAPIConfig);\n };\n /**\n * Make a GET request\n * @param apiName - The api name of the request\n * @param path - The path of the request\n * @param [init] - Request extra params\n * @return A promise that resolves to an object with response status and JSON data, if successful.\n */\n APIClass.prototype.get = function (apiName, path, init) {\n return this._restApi.get(apiName, path, init);\n };\n /**\n * Make a POST request\n * @param apiName - The api name of the request\n * @param path - The path of the request\n * @param [init] - Request extra params\n * @return A promise that resolves to an object with response status and JSON data, if successful.\n */\n APIClass.prototype.post = function (apiName, path, init) {\n return this._restApi.post(apiName, path, init);\n };\n /**\n * Make a PUT request\n * @param apiName - The api name of the request\n * @param path - The path of the request\n * @param [init] - Request extra params\n * @return A promise that resolves to an object with response status and JSON data, if successful.\n */\n APIClass.prototype.put = function (apiName, path, init) {\n return this._restApi.put(apiName, path, init);\n };\n /**\n * Make a PATCH request\n * @param apiName - The api name of the request\n * @param path - The path of the request\n * @param [init] - Request extra params\n * @return A promise that resolves to an object with response status and JSON data, if successful.\n */\n APIClass.prototype.patch = function (apiName, path, init) {\n return this._restApi.patch(apiName, path, init);\n };\n /**\n * Make a DEL request\n * @param apiName - The api name of the request\n * @param path - The path of the request\n * @param [init] - Request extra params\n * @return A promise that resolves to an object with response status and JSON data, if successful.\n */\n APIClass.prototype.del = function (apiName, path, init) {\n return this._restApi.del(apiName, path, init);\n };\n /**\n * Make a HEAD request\n * @param apiName - The api name of the request\n * @param path - The path of the request\n * @param [init] - Request extra params\n * @return A promise that resolves to an object with response status and JSON data, if successful.\n */\n APIClass.prototype.head = function (apiName, path, init) {\n return this._restApi.head(apiName, path, init);\n };\n /**\n * Checks to see if an error thrown is from an api request cancellation\n * @param error - Any error\n * @return If the error was from an api request cancellation\n */\n APIClass.prototype.isCancel = function (error) {\n return this._restApi.isCancel(error);\n };\n /**\n * Cancels an inflight request for either a GraphQL request or a Rest API request.\n * @param request - request to cancel\n * @param [message] - custom error message\n * @return If the request was cancelled\n */\n APIClass.prototype.cancel = function (request, message) {\n if (this._restApi.hasCancelToken(request)) {\n return this._restApi.cancel(request, message);\n }\n else if (this._graphqlApi.hasCancelToken(request)) {\n return this._graphqlApi.cancel(request, message);\n }\n return false;\n };\n /**\n * Getting endpoint for API\n * @param apiName - The name of the api\n * @return The endpoint of the api\n */\n APIClass.prototype.endpoint = function (apiName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._restApi.endpoint(apiName)];\n });\n });\n };\n /**\n * to get the operation type\n * @param operation\n */\n APIClass.prototype.getGraphqlOperationType = function (operation) {\n return this._graphqlApi.getGraphqlOperationType(operation);\n };\n APIClass.prototype.graphql = function (options, additionalHeaders) {\n return this._graphqlApi.graphql(options, additionalHeaders);\n };\n return APIClass;\n}());\nexport { APIClass };\nexport var API = new APIClass(null);\nAmplify.register(API);\n//# sourceMappingURL=API.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';\nimport { AuthErrorStrings } from './common/AuthErrorStrings';\nvar logger = new Logger('AuthError');\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: AuthErrorStrings.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 amplify packages in your node_modules.\\n\\t\\t\\t\\tRefer to our docs site for help upgrading Amplify packages (https://docs.amplify.aws/lib/troubleshooting/upgrading/q/platform/js)\\n \",\n },\n missingAuthConfig: {\n message: AuthErrorStrings.DEFAULT_MSG,\n log: \"\\n Error: Amplify has not been configured correctly. \\n The configuration object is missing required auth properties.\\n This error is typically caused by one of the following scenarios:\\n\\n 1. 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 2. This could also be caused by multiple conflicting versions of amplify packages, see (https://docs.amplify.aws/lib/troubleshooting/upgrading/q/platform/js) for help upgrading Amplify packages.\\n \",\n },\n emptyUsername: {\n message: AuthErrorStrings.EMPTY_USERNAME,\n },\n // TODO: should include a list of valid sign-in types\n invalidUsername: {\n message: AuthErrorStrings.INVALID_USERNAME,\n },\n emptyPassword: {\n message: AuthErrorStrings.EMPTY_PASSWORD,\n },\n emptyCode: {\n message: AuthErrorStrings.EMPTY_CODE,\n },\n signUpError: {\n message: AuthErrorStrings.SIGN_UP_ERROR,\n log: 'The first parameter should either be non-null string or object',\n },\n noMFA: {\n message: AuthErrorStrings.NO_MFA,\n },\n invalidMFA: {\n message: AuthErrorStrings.INVALID_MFA,\n },\n emptyChallengeResponse: {\n message: AuthErrorStrings.EMPTY_CHALLENGE,\n },\n noUserSession: {\n message: AuthErrorStrings.NO_USER_SESSION,\n },\n deviceConfig: {\n message: AuthErrorStrings.DEVICE_CONFIG,\n },\n networkError: {\n message: AuthErrorStrings.NETWORK_ERROR,\n },\n default: {\n message: AuthErrorStrings.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 */\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 */\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};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\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, urlSafeEncode } from '@aws-amplify/core';\nimport sha256 from 'crypto-js/sha256';\nimport Base64 from '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 if (!this.isValidScopes(scopes))\n throw Error('scopes must be a String Array');\n this._scopes = scopes;\n }\n OAuth.prototype.isValidScopes = function (scopes) {\n return (Array.isArray(scopes) && scopes.every(function (scope) { return typeof scope === 'string'; }));\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 /* encodeURIComponent is not URL safe, use urlSafeEncode instead. Cognito\n single-encodes/decodes url on first sign in and double-encodes/decodes url\n when user already signed in. Using encodeURIComponent, Base32, Base64 add\n characters % or = which on further encoding becomes unsafe. '=' create issue\n for parsing query params.\n Refer: https://github.com/aws-amplify/amplify-js/issues/5218 */\n var state = customState\n ? generatedState + \"-\" + urlSafeEncode(customState)\n : generatedState;\n oAuthStorage.setState(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 scopesString = this._scopes.join(' ');\n var queryString = Object.entries(__assign(__assign({ redirect_uri: redirectSignIn, response_type: responseType, client_id: clientId, identity_provider: provider, scope: scopesString, state: state }, (responseType === 'code' ? { code_challenge: code_challenge } : {})), (responseType === 'code' ? { code_challenge_method: code_challenge_method } : {})))\n .map(function (_a) {\n var _b = __read(_a, 2), k = _b[0], v = _b[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, currentUrlPathname, redirectSignInPathname, 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 _c = __read(_a, 2), k = _c[0], v = _c[1];\n return (__assign(__assign({}, accum), (_b = {}, _b[k] = v, _b)));\n }, { code: undefined }).code;\n currentUrlPathname = parse(currentUrl).pathname || '/';\n redirectSignInPathname = parse(this._config.redirectSignIn).pathname || '/';\n if (!code || currentUrlPathname !== redirectSignInPathname) {\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 _b = __read(_a, 2), k = _b[0], v = _b[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).hash || '#')\n .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 _c = __read(_a, 2), k = _c[0], v = _c[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 _b = __read(_a, 2), k = _b[0], v = _b[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 _b = __read(_a, 2), k = _b[0], v = _b[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 throw e_1;\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 _b = __read(_a, 2), k = _b[0], v = _b[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, signout_uri)];\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-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-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 *\t 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};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { isUsernamePasswordOpts, isCognitoHostedOpts, isFederatedSignInOptions, isFederatedSignInOptionsCustom, hasCustomState, } from './types';\nimport { Amplify, ConsoleLogger as Logger, Credentials, Hub, StorageHelper, Parser, JS, UniversalStorage, urlSafeDecode, } 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, CognitoHostedUIIdentityProvider, } from './types/Auth';\nvar logger = new Logger('AuthClass');\nvar USER_ADMIN_SCOPE = 'aws.cognito.signin.user.admin';\n// 10 sec, following this guide https://www.nngroup.com/articles/response-times-3-important-limits/\nvar OAUTH_FLOW_MS_TIMEOUT = 10 * 1000;\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' && 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};\n// Cognito Documentation for max device\n// tslint:disable-next-line:max-line-length\n// https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html#API_ListDevices_RequestSyntax\nvar MAX_DEVICES = 60;\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.oAuthFlowInProgress = false;\n this.Credentials = Credentials;\n this.wrapRefreshSessionCallback = function (callback) {\n var wrapped = function (error, data) {\n if (data) {\n dispatchAuthEvent('tokenRefresh', undefined, \"New token retrieved\");\n }\n else {\n dispatchAuthEvent('tokenRefresh_failure', error, \"Failed to retrieve new token\");\n }\n return callback(error, data);\n };\n return wrapped;\n }; // prettier-ignore\n this.configure(config);\n this.currentCredentials = this.currentCredentials.bind(this);\n this.currentUserCredentials = this.currentUserCredentials.bind(this);\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, endpoint = _a.endpoint;\n if (!this._config.storage) {\n // backward compatability\n if (cookieStorage)\n this._storage = new CookieStorage(cookieStorage);\n else {\n this._storage = config.ssr\n ? new UniversalStorage()\n : 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 endpoint: endpoint,\n };\n userPoolData.Storage = this._storage;\n this.userPool = new CognitoUserPool(userPoolData, this.wrapRefreshSessionCallback);\n }\n this.Credentials.configure({\n mandatorySignIn: mandatorySignIn,\n region: identityPoolRegion || region,\n userPoolId: userPoolId,\n identityPoolId: identityPoolId,\n refreshHandlers: refreshHandlers,\n storage: this._storage,\n });\n // initialize 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 // Prevents _handleAuthResponse from being called multiple times in Expo\n // See https://github.com/aws-amplify/amplify-js/issues/4388\n var usedResponseUrls_1 = {};\n urlListener(function (_a) {\n var url = _a.url;\n if (usedResponseUrls_1[url]) {\n return;\n }\n usedResponseUrls_1[url] = true;\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 attributes like phone, email\n * @param {String | object} params - The user attributes 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(new CognitoUserAttribute({ Name: 'email', Value: email }));\n if (phone_number)\n attributes.push(new CognitoUserAttribute({\n Name: 'phone_number',\n Value: phone_number,\n }));\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 attributes.push(new CognitoUserAttribute({ Name: key, Value: attrs_1[key] }));\n });\n }\n var validationDataObject_1 = params['validationData'];\n if (validationDataObject_1) {\n validationData = [];\n Object.keys(validationDataObject_1).map(function (key) {\n validationData.push(new CognitoUserAttribute({\n Name: key,\n Value: validationDataObject_1[key],\n }));\n });\n }\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 verification 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 code delivery details if successful\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*/, this.Credentials.clear()];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.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 if (this.pendingSignIn) {\n throw new Error('Pending sign-in attempt already in progress');\n }\n var user = this.createCognitoUser(authDetails.getUsername());\n this.pendingSignIn = new Promise(function (resolve, reject) {\n user.authenticateUser(authDetails, _this.authCallbacks(user, function (value) {\n _this.pendingSignIn = null;\n resolve(value);\n }, function (error) {\n _this.pendingSignIn = null;\n reject(error);\n }));\n });\n return this.pendingSignIn;\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 * This was previously used by an authenticated user to get MFAOptions,\n * but no longer returns a meaningful response. Refer to the documentation for\n * how to setup and use MFA: https://docs.amplify.aws/lib/auth/mfa/q/platform/js\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 _this = this;\n var that = this;\n return new Promise(function (res, rej) {\n var clientMetadata = _this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n var bypassCache = params ? params.bypassCache : false;\n user.getUserData(function (err, data) { return __awaiter(_this, void 0, void 0, function () {\n var cleanUpError_1, mfaType;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!err) return [3 /*break*/, 5];\n logger.debug('getting preferred mfa failed', err);\n if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.cleanUpInvalidSession(user)];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n cleanUpError_1 = _a.sent();\n rej(new Error(\"Session is invalid due to: \" + err.message + \" and failed to clean up invalid session: \" + cleanUpError_1.message));\n return [2 /*return*/];\n case 4:\n rej(err);\n return [2 /*return*/];\n case 5:\n mfaType = that._getMfaTypeFromUserData(data);\n if (!mfaType) {\n rej('invalid MFA Type');\n return [2 /*return*/];\n }\n else {\n res(mfaType);\n return [2 /*return*/];\n }\n return [2 /*return*/];\n }\n });\n }); }, { bypassCache: bypassCache, clientMetadata: clientMetadata });\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 var _this = this;\n return new Promise(function (res, rej) {\n user.getUserData(function (err, data) { return __awaiter(_this, void 0, void 0, function () {\n var cleanUpError_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!err) return [3 /*break*/, 5];\n logger.debug('getting user data failed', err);\n if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.cleanUpInvalidSession(user)];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n cleanUpError_2 = _a.sent();\n rej(new Error(\"Session is invalid due to: \" + err.message + \" and failed to clean up invalid session: \" + cleanUpError_2.message));\n return [2 /*return*/];\n case 4:\n rej(err);\n return [2 /*return*/];\n case 5:\n res(data);\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\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 clientMetadata, userData, smsMfaSettings, totpMfaSettings, _a, mfaList, currentMFAType, that;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n clientMetadata = this._config.clientMetadata;\n return [4 /*yield*/, this._getUserData(user, {\n bypassCache: true,\n clientMetadata: clientMetadata,\n })];\n case 1:\n userData = _b.sent();\n smsMfaSettings = null;\n totpMfaSettings = null;\n _a = mfaMethod;\n switch (_a) {\n case 'TOTP': return [3 /*break*/, 2];\n case 'SOFTWARE_TOKEN_MFA': return [3 /*break*/, 2];\n case 'SMS': return [3 /*break*/, 3];\n case '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) { return __awaiter(_this, void 0, void 0, function () {\n var cleanUpError_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!err) return [3 /*break*/, 5];\n logger.debug('getting user data failed', err);\n if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.cleanUpInvalidSession(user)];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n cleanUpError_3 = _a.sent();\n rej(new Error(\"Session is invalid due to: \" + err.message + \" and failed to clean up invalid session: \" + cleanUpError_3.message));\n return [2 /*return*/];\n case 4: return [2 /*return*/, rej(err)];\n case 5: return [2 /*return*/, res(result)];\n }\n });\n }); }, {\n bypassCache: true,\n clientMetadata: clientMetadata,\n });\n });\n })];\n }\n });\n });\n };\n /**\n * disable 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('verification 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 dispatchAuthEvent('signIn', user, \"A user \" + user.getUsername() + \" has been signed in\");\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*/, this.Credentials.clear()];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.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, \"A user \" + user.getUsername() + \" has been 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 (requiredAttributes === void 0) { requiredAttributes = {}; }\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*/, this.Credentials.clear()];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.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, \"A user \" + user.getUsername() + \" has been 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 totpRequired: 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 * Delete an authenticated users' attributes\n * @param {CognitoUser} - The currently logged in user object\n * @return {Promise}\n **/\n AuthClass.prototype.deleteUserAttributes = function (user, attributeNames) {\n var that = this;\n return new Promise(function (resolve, reject) {\n that.userSession(user).then(function (session) {\n user.deleteAttributes(attributeNames, function (err, result) {\n if (err) {\n return reject(err);\n }\n else {\n return resolve(result);\n }\n });\n });\n });\n };\n /**\n * Delete the current authenticated user\n * @return {Promise}\n **/\n // TODO: Check return type void\n AuthClass.prototype.deleteUser = function () {\n return __awaiter(this, void 0, void 0, function () {\n var e_5, 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_5 = _a.sent();\n logger.debug('Failed to sync cache info into memory', e_5);\n throw new Error(e_5);\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) { return __awaiter(_this, void 0, void 0, function () {\n var user_1;\n var _this = this;\n return __generator(this, function (_a) {\n if (this.userPool) {\n user_1 = this.userPool.getCurrentUser();\n if (!user_1) {\n logger.debug('Failed to get user from user pool');\n return [2 /*return*/, rej(new Error('No current user.'))];\n }\n else {\n user_1.getSession(function (err, session) { return __awaiter(_this, void 0, void 0, function () {\n var cleanUpError_4;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!err) return [3 /*break*/, 5];\n logger.debug('Failed to get the user session', err);\n if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.cleanUpInvalidSession(user_1)];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n cleanUpError_4 = _a.sent();\n rej(new Error(\"Session is invalid due to: \" + err.message + \" and failed to clean up invalid session: \" + cleanUpError_4.message));\n return [2 /*return*/];\n case 4: return [2 /*return*/, rej(err)];\n case 5:\n user_1.deleteUser(function (err, result) {\n if (err) {\n rej(err);\n }\n else {\n dispatchAuthEvent('userDeleted', result, 'The authenticated user has been deleted.');\n user_1.signOut();\n _this.user = null;\n try {\n _this.cleanCachedItems(); // clean aws credentials\n }\n catch (e) {\n // TODO: change to rejects in refactor\n logger.debug('failed to clear cached items');\n }\n if (isSignedInHostedUI) {\n _this.oAuthSignOutRedirect(res, rej);\n }\n else {\n dispatchAuthEvent('signOut', _this.user, \"A user has been signed out\");\n res(result);\n }\n }\n });\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n }); });\n }\n }\n else {\n logger.debug('no Congito User pool');\n rej(new Error('Cognito User pool does not exist'));\n }\n return [2 /*return*/];\n });\n }); })];\n }\n });\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 AuthClass.prototype.isErrorWithMessage = function (err) {\n return (typeof err === 'object' &&\n Object.prototype.hasOwnProperty.call(err, 'message'));\n };\n // Session revoked by another app\n AuthClass.prototype.isTokenRevokedError = function (err) {\n return (this.isErrorWithMessage(err) &&\n err.message === 'Access Token has been revoked');\n };\n AuthClass.prototype.isRefreshTokenRevokedError = function (err) {\n return (this.isErrorWithMessage(err) &&\n err.message === 'Refresh Token has been revoked');\n };\n AuthClass.prototype.isUserDisabledError = function (err) {\n return this.isErrorWithMessage(err) && err.message === 'User is disabled.';\n };\n AuthClass.prototype.isUserDoesNotExistError = function (err) {\n return (this.isErrorWithMessage(err) && err.message === 'User does not exist.');\n };\n AuthClass.prototype.isRefreshTokenExpiredError = function (err) {\n return (this.isErrorWithMessage(err) &&\n err.message === 'Refresh Token has expired');\n };\n AuthClass.prototype.isSignedInHostedUI = function () {\n return (this._oAuthHandler &&\n this._storage.getItem('amplify-signin-with-hostedUI') === 'true');\n };\n AuthClass.prototype.isSessionInvalid = function (err) {\n return (this.isUserDisabledError(err) ||\n this.isUserDoesNotExistError(err) ||\n this.isTokenRevokedError(err) ||\n this.isRefreshTokenRevokedError(err) ||\n this.isRefreshTokenExpiredError(err));\n };\n AuthClass.prototype.cleanUpInvalidSession = function (user) {\n return __awaiter(this, void 0, void 0, function () {\n var e_6;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n user.signOut();\n this.user = null;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.cleanCachedItems()];\n case 2:\n _a.sent(); // clean aws credentials\n return [3 /*break*/, 4];\n case 3:\n e_6 = _a.sent();\n logger.debug('failed to clear cached items');\n return [3 /*break*/, 4];\n case 4:\n if (this.isSignedInHostedUI()) {\n return [2 /*return*/, new Promise(function (res, rej) {\n _this.oAuthSignOutRedirect(res, rej);\n })];\n }\n else {\n dispatchAuthEvent('signOut', this.user, \"A user has been signed out\");\n }\n return [2 /*return*/];\n }\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 return new Promise(function (res, rej) {\n _this._storageSync\n .then(function () { return __awaiter(_this, void 0, void 0, function () {\n var user, clientMetadata;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isOAuthInProgress()) return [3 /*break*/, 2];\n logger.debug('OAuth signIn in progress, waiting for resolution...');\n return [4 /*yield*/, new Promise(function (res) {\n var timeoutId = setTimeout(function () {\n logger.debug('OAuth signIn in progress timeout');\n Hub.remove('auth', hostedUISignCallback);\n res();\n }, OAUTH_FLOW_MS_TIMEOUT);\n Hub.listen('auth', hostedUISignCallback);\n function hostedUISignCallback(_a) {\n var payload = _a.payload;\n var event = payload.event;\n if (event === 'cognitoHostedUI' ||\n event === 'cognitoHostedUI_failure') {\n logger.debug(\"OAuth signIn resolved: \" + event);\n clearTimeout(timeoutId);\n Hub.remove('auth', hostedUISignCallback);\n res();\n }\n }\n })];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n user = this.userPool.getCurrentUser();\n if (!user) {\n logger.debug('Failed to get user from user pool');\n rej('No current user');\n return [2 /*return*/];\n }\n clientMetadata = this._config.clientMetadata;\n // refresh the session if the session expired.\n user.getSession(function (err, session) { return __awaiter(_this, void 0, void 0, function () {\n var cleanUpError_5, bypassCache, clientMetadata, _a, scope;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!err) return [3 /*break*/, 5];\n logger.debug('Failed to get the user session', err);\n if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.cleanUpInvalidSession(user)];\n case 2:\n _b.sent();\n return [3 /*break*/, 4];\n case 3:\n cleanUpError_5 = _b.sent();\n rej(new Error(\"Session is invalid due to: \" + err.message + \" and failed to clean up invalid session: \" + cleanUpError_5.message));\n return [2 /*return*/];\n case 4:\n rej(err);\n return [2 /*return*/];\n case 5:\n bypassCache = params ? params.bypassCache : false;\n if (!bypassCache) return [3 /*break*/, 7];\n return [4 /*yield*/, this.Credentials.clear()];\n case 6:\n _b.sent();\n _b.label = 7;\n case 7:\n clientMetadata = this._config.clientMetadata;\n _a = session.getAccessToken().decodePayload().scope, scope = _a === void 0 ? '' : _a;\n if (scope.split(' ').includes(USER_ADMIN_SCOPE)) {\n user.getUserData(function (err, data) { return __awaiter(_this, void 0, void 0, function () {\n var cleanUpError_6, preferredMFA, attributeList, i, attribute, userAttribute, attributes;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!err) return [3 /*break*/, 7];\n logger.debug('getting user data failed', err);\n if (!this.isSessionInvalid(err)) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.cleanUpInvalidSession(user)];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n cleanUpError_6 = _a.sent();\n rej(new Error(\"Session is invalid due to: \" + err.message + \" and failed to clean up invalid session: \" + cleanUpError_6.message));\n return [2 /*return*/];\n case 4:\n rej(err);\n return [3 /*break*/, 6];\n case 5:\n res(user);\n _a.label = 6;\n case 6: return [2 /*return*/];\n case 7:\n preferredMFA = data.PreferredMfaSetting || 'NOMFA';\n attributeList = [];\n for (i = 0; i < data.UserAttributes.length; i++) {\n attribute = {\n Name: data.UserAttributes[i].Name,\n Value: data.UserAttributes[i].Value,\n };\n userAttribute = new CognitoUserAttribute(attribute);\n attributeList.push(userAttribute);\n }\n attributes = this.attributesToObject(attributeList);\n Object.assign(user, { attributes: attributes, preferredMFA: preferredMFA });\n return [2 /*return*/, res(user)];\n }\n });\n }); }, { bypassCache: bypassCache, clientMetadata: clientMetadata });\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 [2 /*return*/, res(user)];\n }\n return [2 /*return*/];\n }\n });\n }); }, { clientMetadata: clientMetadata });\n return [2 /*return*/];\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 AuthClass.prototype.isOAuthInProgress = function () {\n return this.oAuthFlowInProgress;\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_7, federatedInfo, user, e_8;\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_7 = _a.sent();\n logger.debug('Failed to sync cache info into memory', e_7);\n throw e_7;\n case 4:\n try {\n federatedInfo = JSON.parse(this._storage.getItem('aws-amplify-federatedInfo'));\n if (federatedInfo) {\n federatedUser = __assign(__assign({}, federatedInfo.user), { token: federatedInfo.token });\n }\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_8 = _a.sent();\n if (e_8 === '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_8);\n return [2 /*return*/, Promise.reject('The user is 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 this.rejectNoUserPool();\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 var _this = this;\n if (!user) {\n logger.debug('the user is null');\n return this.rejectAuthError(AuthErrorTypes.NoUserSession);\n }\n var clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n return new Promise(function (res, rej) {\n logger.debug('Getting the session from this user:', user);\n user.getSession(function (err, session) { return __awaiter(_this, void 0, void 0, function () {\n var cleanUpError_7;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!err) return [3 /*break*/, 5];\n logger.debug('Failed to get the session from user', user);\n if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.cleanUpInvalidSession(user)];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n cleanUpError_7 = _a.sent();\n rej(new Error(\"Session is invalid due to: \" + err.message + \" and failed to clean up invalid session: \" + cleanUpError_7.message));\n return [2 /*return*/];\n case 4:\n rej(err);\n return [2 /*return*/];\n case 5:\n logger.debug('Succeed to get the user session', session);\n res(session);\n return [2 /*return*/];\n }\n });\n }); }, { clientMetadata: clientMetadata });\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 e_9, federatedInfo;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\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_9 = _a.sent();\n logger.debug('Failed to sync cache info into memory', e_9);\n throw e_9;\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*/, this.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 _this.Credentials.set(session, 'session');\n })\n .catch(function () {\n logger.debug('getting guest credentials');\n return _this.Credentials.set(null, 'guest');\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n AuthClass.prototype.currentCredentials = function () {\n logger.debug('getting current credentials');\n return this.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 (success) {\n return resolve(success);\n },\n onFailure: function (err) {\n return reject(err);\n },\n }, clientMetadata);\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_10, 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_10 = _a.sent();\n logger.debug('Failed to sync cache info into memory', e_10);\n throw e_10;\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 var clientMetadata = _this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n user.getSession(function (err, result) { return __awaiter(_this, void 0, void 0, function () {\n var cleanUpError_8;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!err) return [3 /*break*/, 5];\n logger.debug('failed to get the user session', err);\n if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.cleanUpInvalidSession(user)];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n cleanUpError_8 = _a.sent();\n rej(new Error(\"Session is invalid due to: \" + err.message + \" and failed to clean up invalid session: \" + cleanUpError_8.message));\n return [2 /*return*/];\n case 4: return [2 /*return*/, rej(err)];\n case 5:\n user.globalSignOut({\n onSuccess: function (data) {\n logger.debug('global sign out success');\n if (isSignedInHostedUI) {\n _this.oAuthSignOutRedirect(res, rej);\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 return [2 /*return*/];\n }\n });\n }); }, { clientMetadata: clientMetadata });\n }\n else {\n logger.debug('user sign out', user);\n user.signOut(function () {\n if (isSignedInHostedUI) {\n _this.oAuthSignOutRedirect(res, rej);\n }\n else {\n return res();\n }\n });\n }\n })];\n }\n });\n });\n };\n AuthClass.prototype.oAuthSignOutRedirect = function (resolve, reject) {\n var isBrowser = JS.browserOrNode().isBrowser;\n if (isBrowser) {\n this.oAuthSignOutRedirectOrReject(reject);\n }\n else {\n this.oAuthSignOutAndResolve(resolve);\n }\n };\n AuthClass.prototype.oAuthSignOutAndResolve = function (resolve) {\n this._oAuthHandler.signOut();\n resolve();\n };\n AuthClass.prototype.oAuthSignOutRedirectOrReject = function (reject) {\n this._oAuthHandler.signOut(); // this method redirects url\n // App should be redirected to another url otherwise it will reject\n setTimeout(function () { return reject(Error('Signout timeout fail')); }, 3000);\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_11, 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_11 = _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 Cognito 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*/, this.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 (success) {\n dispatchAuthEvent('forgotPasswordSubmit', user, username + \" forgotPasswordSubmit successful\");\n resolve(success);\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_12, info, err_1, user;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n source = this.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.error(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_12 = _a.sent();\n logger.debug('Failed to retrieve credentials while getting current user info', e_12);\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.error('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 hasCustomState(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*/, this.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, customState, err_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (this.oAuthFlowInProgress) {\n logger.debug(\"Skipping URL \" + URL + \" current flow in progress\");\n return [2 /*return*/];\n }\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 8, 9]);\n this.oAuthFlowInProgress = true;\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 _b = __read(_a, 1), k = _b[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 _b = __read(_a, 1), k = _b[0];\n return k === 'access_token' || k === 'error';\n });\n if (!(hasCodeOrError || hasTokenOrError)) return [3 /*break*/, 7];\n this._storage.setItem('amplify-redirected-from-hosted-ui', 'true');\n _b.label = 2;\n case 2:\n _b.trys.push([2, 6, , 7]);\n return [4 /*yield*/, this._oAuthHandler.handleAuthResponse(currentUrl)];\n case 3:\n _a = _b.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({\n RefreshToken: refreshToken,\n }),\n AccessToken: new CognitoAccessToken({\n AccessToken: accessToken,\n }),\n });\n credentials = void 0;\n if (!this._config.identityPoolId) return [3 /*break*/, 5];\n return [4 /*yield*/, this.Credentials.set(session, 'session')];\n case 4:\n credentials = _b.sent();\n logger.debug('AWS credentials', credentials);\n _b.label = 5;\n case 5:\n isCustomStateIncluded = /-/.test(state);\n currentUser = this.createCognitoUser(session.getIdToken().decodePayload()['cognito:username']);\n // This calls cacheTokens() in Cognito SDK\n currentUser.setSignInUserSession(session);\n if (window && typeof window.history !== 'undefined') {\n window.history.replaceState({}, null, this._config.oauth.redirectSignIn);\n }\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 customState = state.split('-').splice(1).join('-');\n dispatchAuthEvent('customOAuthState', urlSafeDecode(customState), \"State for user \" + currentUser.getUsername());\n }\n //#endregion\n return [2 /*return*/, credentials];\n case 6:\n err_2 = _b.sent();\n logger.debug('Error in cognito hosted auth response', err_2);\n // Just like a successful handling of `?code`, replace the window history to \"dispose\" of the `code`.\n // Otherwise, reloading the page will throw errors as the `code` has already been spent.\n if (window && typeof window.history !== 'undefined') {\n window.history.replaceState({}, null, this._config.oauth.redirectSignIn);\n }\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 return [3 /*break*/, 7];\n case 7: return [3 /*break*/, 9];\n case 8:\n this.oAuthFlowInProgress = false;\n return [7 /*endfinally*/];\n case 9: 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 _this = this;\n var obj = {};\n if (attributes) {\n attributes.map(function (attribute) {\n if (attribute.Name === 'email_verified' ||\n attribute.Name === 'phone_number_verified') {\n obj[attribute.Name] =\n _this.isTruthyString(attribute.Value) || attribute.Value === true;\n }\n else {\n obj[attribute.Name] = attribute.Value;\n }\n });\n }\n return obj;\n };\n AuthClass.prototype.isTruthyString = function (value) {\n return (typeof value.toLowerCase === 'function' && value.toLowerCase() === 'true');\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 AuthClass.prototype.rememberDevice = function () {\n return __awaiter(this, void 0, void 0, function () {\n var currUser, error_1;\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.currentUserPoolUser()];\n case 1:\n currUser = _a.sent();\n return [3 /*break*/, 3];\n case 2:\n error_1 = _a.sent();\n logger.debug('The user is not authenticated by the error', error_1);\n return [2 /*return*/, Promise.reject('The user is not authenticated')];\n case 3:\n currUser.getCachedDeviceKeyAndPassword();\n return [2 /*return*/, new Promise(function (res, rej) {\n currUser.setDeviceStatusRemembered({\n onSuccess: function (data) {\n res(data);\n },\n onFailure: function (err) {\n if (err.code === 'InvalidParameterException') {\n rej(new AuthError(AuthErrorTypes.DeviceConfig));\n }\n else if (err.code === 'NetworkError') {\n rej(new AuthError(AuthErrorTypes.NetworkError));\n }\n else {\n rej(err);\n }\n },\n });\n })];\n }\n });\n });\n };\n AuthClass.prototype.forgetDevice = function () {\n return __awaiter(this, void 0, void 0, function () {\n var currUser, error_2;\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.currentUserPoolUser()];\n case 1:\n currUser = _a.sent();\n return [3 /*break*/, 3];\n case 2:\n error_2 = _a.sent();\n logger.debug('The user is not authenticated by the error', error_2);\n return [2 /*return*/, Promise.reject('The user is not authenticated')];\n case 3:\n currUser.getCachedDeviceKeyAndPassword();\n return [2 /*return*/, new Promise(function (res, rej) {\n currUser.forgetDevice({\n onSuccess: function (data) {\n res(data);\n },\n onFailure: function (err) {\n if (err.code === 'InvalidParameterException') {\n rej(new AuthError(AuthErrorTypes.DeviceConfig));\n }\n else if (err.code === 'NetworkError') {\n rej(new AuthError(AuthErrorTypes.NetworkError));\n }\n else {\n rej(err);\n }\n },\n });\n })];\n }\n });\n });\n };\n AuthClass.prototype.fetchDevices = function () {\n return __awaiter(this, void 0, void 0, function () {\n var currUser, error_3;\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.currentUserPoolUser()];\n case 1:\n currUser = _a.sent();\n return [3 /*break*/, 3];\n case 2:\n error_3 = _a.sent();\n logger.debug('The user is not authenticated by the error', error_3);\n throw new Error('The user is not authenticated');\n case 3:\n currUser.getCachedDeviceKeyAndPassword();\n return [2 /*return*/, new Promise(function (res, rej) {\n var cb = {\n onSuccess: function (data) {\n var deviceList = data.Devices.map(function (device) {\n var deviceName = device.DeviceAttributes.find(function (_a) {\n var Name = _a.Name;\n return Name === 'device_name';\n }) || {};\n var deviceInfo = {\n id: device.DeviceKey,\n name: deviceName.Value,\n };\n return deviceInfo;\n });\n res(deviceList);\n },\n onFailure: function (err) {\n if (err.code === 'InvalidParameterException') {\n rej(new AuthError(AuthErrorTypes.DeviceConfig));\n }\n else if (err.code === 'NetworkError') {\n rej(new AuthError(AuthErrorTypes.NetworkError));\n }\n else {\n rej(err);\n }\n },\n };\n currUser.listDevices(MAX_DEVICES, null, cb);\n })];\n }\n });\n });\n };\n return AuthClass;\n}());\nexport { AuthClass };\nexport var Auth = new AuthClass(null);\nAmplify.register(Auth);\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 */\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 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[\"Apple\"] = \"SignInWithApple\";\n})(CognitoHostedUIIdentityProvider || (CognitoHostedUIIdentityProvider = {}));\nexport function isFederatedSignInOptions(obj) {\n var keys = ['provider'];\n return obj && !!keys.find(function (k) { return obj.hasOwnProperty(k); });\n}\nexport function isFederatedSignInOptionsCustom(obj) {\n var keys = ['customProvider'];\n return obj && !!keys.find(function (k) { return obj.hasOwnProperty(k); });\n}\nexport function hasCustomState(obj) {\n var keys = ['customState'];\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[\"DeviceConfig\"] = \"deviceConfig\";\n AuthErrorTypes[\"NetworkError\"] = \"networkError\";\n})(AuthErrorTypes || (AuthErrorTypes = {}));\nexport function isUsernamePasswordOpts(obj) {\n return !!obj.username;\n}\nexport var GRAPHQL_AUTH_MODE;\n(function (GRAPHQL_AUTH_MODE) {\n GRAPHQL_AUTH_MODE[\"API_KEY\"] = \"API_KEY\";\n GRAPHQL_AUTH_MODE[\"AWS_IAM\"] = \"AWS_IAM\";\n GRAPHQL_AUTH_MODE[\"OPENID_CONNECT\"] = \"OPENID_CONNECT\";\n GRAPHQL_AUTH_MODE[\"AMAZON_COGNITO_USER_POOLS\"] = \"AMAZON_COGNITO_USER_POOLS\";\n GRAPHQL_AUTH_MODE[\"AWS_LAMBDA\"] = \"AWS_LAMBDA\";\n})(GRAPHQL_AUTH_MODE || (GRAPHQL_AUTH_MODE = {}));\n//# sourceMappingURL=Auth.js.map","export var AuthErrorStrings;\n(function (AuthErrorStrings) {\n AuthErrorStrings[\"DEFAULT_MSG\"] = \"Authentication Error\";\n AuthErrorStrings[\"EMPTY_EMAIL\"] = \"Email cannot be empty\";\n AuthErrorStrings[\"EMPTY_PHONE\"] = \"Phone number cannot be empty\";\n AuthErrorStrings[\"EMPTY_USERNAME\"] = \"Username cannot be empty\";\n AuthErrorStrings[\"INVALID_USERNAME\"] = \"The username should either be a string or one of the sign in types\";\n AuthErrorStrings[\"EMPTY_PASSWORD\"] = \"Password cannot be empty\";\n AuthErrorStrings[\"EMPTY_CODE\"] = \"Confirmation code cannot be empty\";\n AuthErrorStrings[\"SIGN_UP_ERROR\"] = \"Error creating account\";\n AuthErrorStrings[\"NO_MFA\"] = \"No valid MFA method provided\";\n AuthErrorStrings[\"INVALID_MFA\"] = \"Invalid MFA type\";\n AuthErrorStrings[\"EMPTY_CHALLENGE\"] = \"Challenge response cannot be empty\";\n AuthErrorStrings[\"NO_USER_SESSION\"] = \"Failed to get the session because the user is empty\";\n AuthErrorStrings[\"NETWORK_ERROR\"] = \"Network Error\";\n AuthErrorStrings[\"DEVICE_CONFIG\"] = \"Device tracking has not been configured in this User Pool\";\n})(AuthErrorStrings || (AuthErrorStrings = {}));\n//# sourceMappingURL=AuthErrorStrings.js.map"],"sourceRoot":""}