{"version":3,"file":"js/chunk-vendors-375a73df.1e66546a.js","mappings":"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","sources":["webpack://smapac/./node_modules/@aws-amplify/auth/lib-esm/types/Auth.js","webpack://smapac/./node_modules/@aws-amplify/auth/lib-esm/common/AuthErrorStrings.js","webpack://smapac/./node_modules/@aws-amplify/auth/lib-esm/OAuth/urlOpener.js","webpack://smapac/./node_modules/@aws-amplify/auth/lib-esm/OAuth/oauthStorage.js","webpack://smapac/./node_modules/@aws-amplify/auth/lib-esm/OAuth/OAuth.js","webpack://smapac/./node_modules/@aws-amplify/auth/lib-esm/urlListener.js","webpack://smapac/./node_modules/@aws-amplify/auth/lib-esm/Errors.js","webpack://smapac/./node_modules/@aws-amplify/auth/lib-esm/Auth.js","webpack://smapac/./node_modules/@aws-amplify/auth/lib-esm/index.js"],"sourcesContent":["/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nexport var CognitoHostedUIIdentityProvider;\n(function (CognitoHostedUIIdentityProvider) {\n CognitoHostedUIIdentityProvider[\"Cognito\"] = \"COGNITO\";\n CognitoHostedUIIdentityProvider[\"Google\"] = \"Google\";\n CognitoHostedUIIdentityProvider[\"Facebook\"] = \"Facebook\";\n CognitoHostedUIIdentityProvider[\"Amazon\"] = \"LoginWithAmazon\";\n CognitoHostedUIIdentityProvider[\"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[\"AutoSignInError\"] = \"autoSignInError\";\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[\"AUTOSIGNIN_ERROR\"] = \"Please use your credentials to sign in\";\n})(AuthErrorStrings || (AuthErrorStrings = {}));\n//# sourceMappingURL=AuthErrorStrings.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar SELF = '_self';\nexport var launchUri = function (url) {\n var windowProxy = window.open(url, SELF);\n if (windowProxy) {\n return Promise.resolve(windowProxy);\n }\n else {\n return Promise.reject();\n }\n};\n//# sourceMappingURL=urlOpener.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nexport var setState = function (state) {\n window.sessionStorage.setItem('oauth_state', state);\n};\nexport var getState = function () {\n var oauth_state = window.sessionStorage.getItem('oauth_state');\n window.sessionStorage.removeItem('oauth_state');\n return oauth_state;\n};\nexport var setPKCE = function (private_key) {\n window.sessionStorage.setItem('ouath_pkce_key', private_key);\n};\nexport var getPKCE = function () {\n var ouath_pkce_key = window.sessionStorage.getItem('ouath_pkce_key');\n window.sessionStorage.removeItem('ouath_pkce_key');\n return ouath_pkce_key;\n};\nexport var clearAll = function () {\n window.sessionStorage.removeItem('ouath_pkce_key');\n window.sessionStorage.removeItem('oauth_state');\n};\n//# sourceMappingURL=oauthStorage.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\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-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 { browserOrNode } from '@aws-amplify/core';\nexport default (function (callback) {\n if (browserOrNode().isBrowser && window.location) {\n var url = window.location.href;\n callback({ url: url });\n }\n else if (browserOrNode().isNode) {\n // continue building on ssr\n (function () { }); // noop\n }\n else {\n throw new Error('Not supported');\n }\n});\n//# sourceMappingURL=urlListener.js.map","/*\n * Copyright 2019-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\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 autoSignInError: {\n message: AuthErrorStrings.AUTOSIGNIN_ERROR,\n },\n default: {\n message: AuthErrorStrings.DEFAULT_MSG,\n },\n};\n//# sourceMappingURL=Errors.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, browserOrNode, 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;\nvar MAX_AUTOSIGNIN_POLLING_MS = 3 * 60 * 1000;\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.autoSignInInitiated = 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 if (!this.autoSignInInitiated &&\n typeof this._storage['getItem'] === 'function') {\n var pollingInitiated = this.isTrueStorageValue('amplify-polling-started');\n if (pollingInitiated) {\n dispatchAuthEvent('autoSignIn_failure', null, AuthErrorTypes.AutoSignInError);\n this._storage.removeItem('amplify-auto-sign-in');\n }\n this._storage.removeItem('amplify-polling-started');\n }\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 var _a, _b, _c;\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 var autoSignIn = { enabled: false };\n var autoSignInValidationData = {};\n var autoSignInClientMetaData = {};\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 autoSignIn = (_a = params.autoSignIn) !== null && _a !== void 0 ? _a : { enabled: false };\n if (autoSignIn.enabled) {\n this._storage.setItem('amplify-auto-sign-in', 'true');\n autoSignInValidationData = (_b = autoSignIn.validationData) !== null && _b !== void 0 ? _b : {};\n autoSignInClientMetaData = (_c = autoSignIn.clientMetaData) !== null && _c !== void 0 ? _c : {};\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 if (autoSignIn.enabled) {\n _this.handleAutoSignIn(username, password, autoSignInValidationData, autoSignInClientMetaData, data);\n }\n resolve(data);\n }\n }, clientMetadata);\n });\n };\n AuthClass.prototype.handleAutoSignIn = function (username, password, validationData, clientMetadata, data) {\n this.autoSignInInitiated = true;\n var authDetails = new AuthenticationDetails({\n Username: username,\n Password: password,\n ValidationData: validationData,\n ClientMetadata: clientMetadata,\n });\n if (data.userConfirmed) {\n this.signInAfterUserConfirmed(authDetails);\n }\n else if (this._config.signUpVerificationMethod === 'link') {\n this.handleLinkAutoSignIn(authDetails);\n }\n else {\n this.handleCodeAutoSignIn(authDetails);\n }\n };\n AuthClass.prototype.handleCodeAutoSignIn = function (authDetails) {\n var _this = this;\n var listenEvent = function (_a) {\n var payload = _a.payload;\n if (payload.event === 'confirmSignUp') {\n _this.signInAfterUserConfirmed(authDetails, listenEvent);\n }\n };\n Hub.listen('auth', listenEvent);\n };\n AuthClass.prototype.handleLinkAutoSignIn = function (authDetails) {\n var _this = this;\n this._storage.setItem('amplify-polling-started', 'true');\n var start = Date.now();\n var autoSignInPollingIntervalId = setInterval(function () {\n if (Date.now() - start > MAX_AUTOSIGNIN_POLLING_MS) {\n clearInterval(autoSignInPollingIntervalId);\n dispatchAuthEvent('autoSignIn_failure', null, 'Please confirm your account and use your credentials to sign in.');\n _this._storage.removeItem('amplify-auto-sign-in');\n }\n else {\n _this.signInAfterUserConfirmed(authDetails, null, autoSignInPollingIntervalId);\n }\n }, 5000);\n };\n AuthClass.prototype.signInAfterUserConfirmed = function (authDetails, listenEvent, autoSignInPollingIntervalId) {\n return __awaiter(this, void 0, void 0, function () {\n var user, error_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n user = this.createCognitoUser(authDetails.getUsername());\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, user.authenticateUser(authDetails, this.authCallbacks(user, function (value) {\n dispatchAuthEvent('autoSignIn', value, authDetails.getUsername() + \" has signed in successfully\");\n if (listenEvent) {\n Hub.remove('auth', listenEvent);\n }\n if (autoSignInPollingIntervalId) {\n clearInterval(autoSignInPollingIntervalId);\n _this._storage.removeItem('amplify-polling-started');\n }\n _this._storage.removeItem('amplify-auto-sign-in');\n }, function (error) {\n logger.error(error);\n _this._storage.removeItem('amplify-auto-sign-in');\n }))];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_1 = _a.sent();\n logger.error(error_1);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\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 var _this = this;\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 dispatchAuthEvent('confirmSignUp', data, username + \" has been confirmed successfully\");\n var autoSignIn = _this.isTrueStorageValue('amplify-auto-sign-in');\n if (autoSignIn && !_this.autoSignInInitiated) {\n dispatchAuthEvent('autoSignIn_failure', null, AuthErrorTypes.AutoSignInError);\n _this._storage.removeItem('amplify-auto-sign-in');\n }\n resolve(data);\n }\n }, clientMetadata);\n });\n };\n AuthClass.prototype.isTrueStorageValue = function (value) {\n var item = this._storage.getItem(value);\n return item ? item === 'true' : false;\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} pw - The password of the username\n * @param {ClientMetaData} clientMetadata - Client metadata for custom workflows\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 Promise.reject(new Error('No User Pool in the configuration.'));\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 = 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 || (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_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.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_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 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_4;\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_4 = _a.sent();\n logger.debug('The user is not authenticated by the error', error_4);\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-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"],"names":["CognitoHostedUIIdentityProvider","AuthErrorTypes","GRAPHQL_AUTH_MODE","isFederatedSignInOptions","obj","keys","find","k","hasOwnProperty","isFederatedSignInOptionsCustom","hasCustomState","isCognitoHostedOpts","oauth","undefined","redirectSignIn","isUsernamePasswordOpts","username","AuthErrorStrings","SELF","launchUri","url","windowProxy","window","open","Promise","resolve","reject","setState","state","sessionStorage","setItem","getState","oauth_state","getItem","removeItem","setPKCE","private_key","getPKCE","ouath_pkce_key","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","call","apply","this","__awaiter","thisArg","_arguments","P","generator","adopt","value","fulfilled","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","push","__read","o","m","r","ar","error","AMPLIFY_SYMBOL","for","dispatchAuthEvent","event","data","message","Hub","dispatch","logger","OAuth","_a","config","cognitoClientId","_b","scopes","_urlOpener","urlOpener","_config","_cognitoClientId","isValidScopes","Error","_scopes","Array","isArray","every","scope","oauthSignIn","responseType","domain","clientId","provider","customState","Cognito","generatedState","_generateState","pkce_key","_generateRandom","code_challenge","_generateChallenge","code_challenge_method","scopesString","join","queryString","entries","redirect_uri","response_type","client_id","identity_provider","map","encodeURIComponent","URL","debug","_handleCodeFlow","currentUrl","code","currentUrlPathname","redirectSignInPathname","oAuthTokenEndpoint","code_verifier","oAuthTokenBody","access_token","refresh_token","id_token","query","split","pairings","reduce","accum","_c","pathname","clientID","redirectUri","grant_type","fetch","method","headers","json","accessToken","refreshToken","idToken","_handleImplicitFlow","hash","substr","handleAuthResponse","urlParams","error_description","e_1","entry","acc","_validateState","concat","savedState","returnedState","signOut","oAuthLogoutEndpoint","signout_uri","redirectSignOut","returnTo","logout_uri","oAuth","chars","Math","round","random","_base64URL","string","toString","replace","size","CHARSET","buffer","Uint8Array","crypto","getRandomValues","_bufferToString","byteLength","index","callback","isBrowser","location","href","isNode","__extends","extendStatics","d","b","setPrototypeOf","__proto__","__","constructor","create","AuthError","_super","type","_this","authErrorMessages","log","name","NoUserPoolError","noConfig","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","autoSignInError","AUTOSIGNIN_ERROR","default","USER_ADMIN_SCOPE","OAUTH_FLOW_MS_TIMEOUT","MAX_DEVICES","MAX_AUTOSIGNIN_POLLING_MS","AuthClass","userPool","user","oAuthFlowInProgress","autoSignInInitiated","Credentials","wrapRefreshSessionCallback","wrapped","configure","currentCredentials","bind","currentUserCredentials","listen","payload","_storage","getModuleName","conf","Parser","parseMobilehubConfig","Auth","userPoolId","userPoolWebClientId","cookieStorage","region","identityPoolId","mandatorySignIn","refreshHandlers","identityPoolRegion","clientMetadata","endpoint","storage","_isValidAuthStorage","ssr","UniversalStorage","StorageHelper","getStorage","_storageSync","userPoolData","UserPoolId","ClientId","Storage","cognitoHostedUIConfig","awsCognito","cognitoAuthParams","_oAuthHandler","usedResponseUrls_1","urlListener","_handleAuthResponse","pollingInitiated","isTrueStorageValue","AutoSignInError","signUp","params","restOfAttrs","_i","rejectNoUserPool","password","attributes","validationData","autoSignIn","enabled","autoSignInValidationData","autoSignInClientMetaData","email","phone_number","Name","Value","rejectAuthError","SignUpError","attrs_1","key","validationDataObject_1","clientMetaData","err","handleAutoSignIn","EmptyPassword","EmptyUsername","authDetails","Username","Password","ValidationData","ClientMetadata","userConfirmed","signInAfterUserConfirmed","signUpVerificationMethod","handleLinkAutoSignIn","handleCodeAutoSignIn","listenEvent","start","Date","now","autoSignInPollingIntervalId","setInterval","clearInterval","error_1","createCognitoUser","getUsername","authenticateUser","authCallbacks","remove","confirmSignUp","options","EmptyCode","forceAliasCreation","confirmRegistration","item","resendSignUp","resendConfirmationCode","signIn","usernameOrSignInOpts","pw","InvalidUsername","warn","signInWithPassword","signInWithoutPassword","that","onSuccess","session","cred","currentUser","e_2","clear","set","currentUserPoolUser","onFailure","customChallenge","challengeParam","mfaRequired","challengeName","mfaSetup","newPasswordRequired","userAttributes","requiredAttributes","totpRequired","selectMFAType","pendingSignIn","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","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","get","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","info","err_1","getCredSource","id","identityId","federatedSignIn","providerOrOptions","response","loggedInUser","identity_id","expires_at","customProvider","stringify","hasCodeOrError","hasTokenOrError","isCustomStateIncluded","err_2","IdToken","RefreshToken","AccessToken","test","getIdToken","setSignInUserSession","history","replaceState","splice","essentialCredentials","accessKeyId","sessionToken","secretAccessKey","authenticated","isTruthyString","toLowerCase","Pool","authenticationFlowType","noUserPoolErrorHandler","NoConfig","MissingAuthConfig","rememberDevice","currUser","error_2","getCachedDeviceKeyAndPassword","setDeviceStatusRemembered","DeviceConfig","NetworkError","forgetDevice","error_3","fetchDevices","error_4","cb","deviceList","Devices","device","deviceName","DeviceAttributes","deviceInfo","DeviceKey","listDevices","Amplify","register"],"sourceRoot":""}