{"version":3,"sources":["webpack:///./node_modules/amazon-cognito-identity-js/node_modules/@aws-crypto/sha256-js/build/jsSha256.js","webpack:///./node_modules/amazon-cognito-identity-js/node_modules/@aws-crypto/sha256-js/build/RawSha256.js","webpack:///./node_modules/uuid/dist/esm-browser/nil.js","webpack:///./node_modules/amazon-cognito-identity-js/es/utils/cryptoSecureRandomInt.js","webpack:///./node_modules/amazon-cognito-identity-js/node_modules/@aws-crypto/sha256-js/build/constants.js","webpack:///./node_modules/amazon-cognito-identity-js/es/AuthenticationDetails.js","webpack:///./node_modules/amazon-cognito-identity-js/es/utils/WordArray.js","webpack:///./node_modules/amazon-cognito-identity-js/es/BigInteger.js","webpack:///./node_modules/amazon-cognito-identity-js/es/AuthenticationHelper.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoJwtToken.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoAccessToken.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoIdToken.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoRefreshToken.js","webpack:///./node_modules/amazon-cognito-identity-js/es/Platform/index.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoUserSession.js","webpack:///./node_modules/amazon-cognito-identity-js/es/DateHelper.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoUserAttribute.js","webpack:///./node_modules/amazon-cognito-identity-js/es/StorageHelper.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoUser.js","webpack:///./node_modules/amazon-cognito-identity-js/es/UserAgent.js","webpack:///./node_modules/amazon-cognito-identity-js/es/Client.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoUserPool.js","webpack:///./node_modules/@aws-crypto/util/build/convertToBuffer.js","webpack:///./src/constant/message-enum.js","webpack:///./src/services/language-service.js","webpack:///./node_modules/amazon-cognito-identity-js/node_modules/@aws-crypto/sha256-js/build/index.js","webpack:///./node_modules/@aws-crypto/util/build/numToUint8.js","webpack:///./node_modules/@aws-crypto/util/build/index.js","webpack:///./node_modules/@aws-crypto/util/build/uint32ArrayFrom.js","webpack:///./node_modules/@aws-crypto/util/build/isEmptyData.js"],"names":["Object","defineProperty","exports","value","Sha256","tslib_1","constants_1","RawSha256_1","util_1","secret","this","hash","RawSha256","outer","inner","input","convertToBuffer","byteLength","BLOCK_SIZE","bufferHash","update","digest","buffer","Uint8Array","set","bufferFromSecret","i","prototype","toHash","isEmptyData","error","e","digestSync","finished","__awaiter","__generator","_a","state","Int32Array","from","INIT","temp","bufferLength","bytesHashed","data","Error","position","MAX_HASHABLE_LENGTH","hashBuffer","bitsHashed","bufferView","DataView","byteOffset","undecoratedLength","setUint8","setUint32","Math","floor","out","DIGEST_LENGTH","state0","state1","state2","state3","state4","state5","state6","state7","u","t1_1","t2_1","t1","KEY","t2","crypto","window","msCrypto","global","err","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","readInt32LE","pow","AuthenticationDetails","_ref","ValidationData","Username","Password","AuthParameters","ClientMetadata","validationData","authParameters","clientMetadata","username","password","_proto","getUsername","getPassword","getValidationData","getAuthParameters","getClientMetadata","dbits","WordArray","words","sigBytes","undefined","length","random","nBytes","push","toString","wordArray","hexChars","bite","join","hexStringify","BigInteger","a","b","fromString","nbi","inBrowser","navigator","appName","am","x","w","j","c","n","xl","xh","l","h","m","v","DB","DM","DV","FV","F1","F2","rr","vv","BI_RC","Array","charCodeAt","int2char","charAt","intAt","s","nbv","r","fromInt","nbits","t","Montgomery","mp","invDigit","mpl","mph","um","mt2","convert","abs","dlShiftTo","divRemTo","compareTo","ZERO","subTo","revert","copyTo","reduce","u0","clamp","drShiftTo","mulTo","y","multiplyTo","sqrTo","squareTo","k","mi","sh","max","lShiftTo","bs","cbs","bm","ds","rShiftTo","min","q","pm","pt","ts","ms","nsh","ys","y0","yt","d1","d2","ONE","qd","addTo","negate","d","km","p","bitLength","mod","equals","add","subtract","multiply","divide","modPow","callback","z","g","k1","g2","is1","r2","result","HEX_MSB_REGEX","AuthenticationHelper","PoolName","N","hexHash","padHex","smallAValue","generateRandomSmallA","getLargeAValue","infoBits","poolName","getSmallAValue","_this","largeAValue","calculateA","hexRandom","generateRandomString","getRandomPassword","randomPassword","getSaltDevices","SaltToHashDevices","getVerifierDevices","verifierDevices","generateHashDevice","deviceGroupKey","_this2","combinedString","hashedString","verifierDevicesNotPadded","_this3","A","calculateU","B","UHexHash","buf","awsCryptoHash","resultFromAWSCrypto","hashHex","hexStr","computehkdf","ikm","salt","infoBitsBuffer","concat","String","fromCharCode","resultFromAWSCryptoPrk","awsCryptoHashHmac","slice","getPasswordAuthenticationKey","serverBValue","_this4","UValue","usernamePassword","usernamePasswordHash","xValue","calculateS","sValue","hkdf","_this5","gModPowXN","err2","getNewPasswordRequiredChallengeUserAttributePrefix","bigInt","isNegative","test","invertedNibbles","split","map","invertedNibble","parseInt","toUpperCase","startsWith","substring","CognitoJwtToken","token","jwtToken","payload","decodePayload","getJwtToken","getExpiration","exp","getIssuedAt","iat","JSON","parse","_setPrototypeOf","o","setPrototypeOf","bind","__proto__","CognitoAccessToken","_CognitoJwtToken","subClass","superClass","_temp","AccessToken","call","create","constructor","CognitoIdToken","IdToken","CognitoRefreshToken","RefreshToken","getToken","Platform","userAgent","BASE_USER_AGENT","product","isReactNative","CognitoUserSession","ClockDrift","idToken","refreshToken","accessToken","clockDrift","calculateClockDrift","getIdToken","getRefreshToken","getAccessToken","getClockDrift","Date","isValid","adjusted","monthNames","weekNames","DateHelper","getNowString","now","weekDay","getUTCDay","month","getUTCMonth","day","getUTCDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","getUTCFullYear","CognitoUserAttribute","Name","Value","getValue","setValue","getName","setName","name","stringify","toJSON","dataMemory","MemoryStorage","setItem","key","getItem","hasOwnProperty","removeItem","clear","StorageHelper","storageWindow","localStorage","exception","getStorage","CognitoUser","Pool","pool","Session","client","signInUserSession","authenticationFlowType","storage","Storage","keyPrefix","getClientId","userDataKey","setSignInUserSession","clearCachedUserData","cacheTokens","getSignInUserSession","getAuthenticationFlowType","setAuthenticationFlowType","initiateAuth","authDetails","USERNAME","clientMetaData","keys","jsonReq","AuthFlow","ClientId","getUserContextData","UserContextData","request","onFailure","challengeName","ChallengeName","challengeParameters","ChallengeParameters","customChallenge","getCognitoUserSession","AuthenticationResult","onSuccess","authenticateUser","authenticateUserPlainUsernamePassword","authenticateUserDefaultAuth","authenticationHelper","getUserPoolName","dateHelper","deviceKey","DEVICE_KEY","errOnAValue","aValue","SRP_A","CHALLENGE_NAME","USER_ID_FOR_SRP","SRP_B","SALT","getCachedDeviceKeyAndPassword","errOnHkdf","dateNow","concatBuffer","SECRET_BLOCK","signatureString","challengeResponses","PASSWORD_CLAIM_SECRET_BLOCK","TIMESTAMP","PASSWORD_CLAIM_SIGNATURE","jsonReqResp","ChallengeResponses","respondToAuthChallenge","challenge","challengeCallback","errChallenge","dataChallenge","code","message","toLowerCase","indexOf","clearCachedDeviceKeyAndPassword","errAuthenticate","dataAuthenticate","authenticateUserInternal","PASSWORD","authResult","mfaRequired","selectMFAType","mfaSetup","totpRequired","userAttributes","rawRequiredAttributes","requiredAttributes","userAttributesPrefix","substr","newPasswordRequired","getDeviceResponse","newDeviceMetadata","NewDeviceMetadata","DeviceGroupKey","DeviceKey","errGenHash","deviceSecretVerifierConfig","Salt","PasswordVerifier","DeviceSecretVerifierConfig","DeviceName","errConfirm","dataConfirm","cacheDeviceKeyAndPassword","UserConfirmationNecessary","completeNewPasswordChallenge","newPassword","requiredAttributeData","finalUserAttributes","forEach","NEW_PASSWORD","_this6","errAValue","errHkdf","confirmRegistration","confirmationCode","forceAliasCreation","ConfirmationCode","ForceAliasCreation","sendCustomChallengeAnswer","answerChallenge","_this7","ANSWER","sendMFACode","mfaType","_this8","SMS_MFA_CODE","mfaTypeSelection","SOFTWARE_TOKEN_MFA_CODE","changePassword","oldUserPassword","newUserPassword","PreviousPassword","ProposedPassword","enableMFA","mfaOptions","DeliveryMedium","AttributeName","MFAOptions","setUserMfaPreference","smsMfaSettings","softwareTokenMfaSettings","SMSMfaSettings","SoftwareTokenMfaSettings","disableMFA","deleteUser","_this9","clearCachedUser","updateAttributes","attributes","_this10","UserAttributes","getUserData","bypassCache","getUserAttributes","userData","attributeList","attribute","userAttribute","getMFAOptions","createGetUserRequest","promisifyRequest","refreshSessionIfPossible","options","_this11","Promise","resolve","refresh","refreshSession","params","_this12","getUserDataFromCache","isFetchUserDataAndTokenRequired","fetchUserData","then","_ref$bypassCache","_this13","cacheUserData","deleteAttributes","_this14","UserAttributeNames","resendConfirmationCode","getSession","idTokenKey","accessTokenKey","refreshTokenKey","clockDriftKey","cachedSession","_this15","wrappedCallback","wrapRefreshSessionCallback","REFRESH_TOKEN","lastUserKey","deviceKeyKey","authenticationResult","clearCachedTokens","randomPasswordKey","deviceGroupKeyKey","forgotPassword","inputVerificationCode","confirmPassword","getAttributeVerificationCode","attributeName","verifyAttribute","Code","getDevice","forgetSpecificDevice","forgetDevice","_this16","setDeviceStatusRemembered","DeviceRememberedStatus","setDeviceStatusNotRemembered","listDevices","limit","paginationToken","requestParams","Limit","PaginationToken","globalSignOut","_this17","signOut","revokeTokenCallback","_this18","_session","revokeTokens","cleanClientData","isSessionRevocable","revokeToken","origin_jti","_ref2","requestWithRetry","Token","sendMFASelectionAnswer","_this19","associateSoftwareToken","_this20","associateSecretCode","SecretCode","verifySoftwareToken","totpCode","friendlyDeviceName","_this21","UserCode","FriendlyDeviceName","errRespond","dataRespond","UserAgent","_wrapNativeSuper","Class","_cache","Map","fn","Function","TypeError","has","get","Wrapper","_construct","arguments","_getPrototypeOf","enumerable","writable","configurable","Parent","args","_isNativeReflectConstruct","Reflect","construct","apply","instance","sham","Proxy","Boolean","valueOf","getPrototypeOf","CognitoError","_Error","statusCode","Client","region","endpoint","fetchOptions","credentials","operation","reject","functionToRetry","maxDelayMs","retry","delayFn","attempt","logger","obj","retryIn","res","setTimeout","delay","jitteredBackoff","jitteredExponentialRetry","rej","response","headers","assign","method","mode","body","fetch","resp","json","ok","__type","pop","Message","status","ex","CognitoUserPool","UserPoolId","AdvancedSecurityDataCollectionFlag","userPoolId","clientId","advancedSecurityDataCollectionFlag","getUserPoolId","signUp","cognitoUser","returnData","user","userConfirmed","UserConfirmed","userSub","UserSub","codeDeliveryDetails","CodeDeliveryDetails","getCurrentUser","lastAuthUser","AmazonCognitoAdvancedSecurityData","amazonCognitoAdvancedSecurityDataConst","advancedSecurityData","getData","EncodedData","util_utf8_browser_1","fromUtf8","Buffer","ArrayBuffer","isView","BYTES_PER_ELEMENT","module","MESSAGE","NO_MODIFICATION","SUCCESSFULL_REGISTERATION_LOGIN_MESSAGE","AGENCY_USER_LOGIN_ERR_MESSAGE","EMAIL_ALREADY_REGISTERED","USER_DOES_NOT_EXIST","PASSWORD_DO_NOT_MATCH","OTP_SENT_TO_MAIL","OTP_SENT_TO_MOBILE_NUMBER","PASSWORD_RESET_SUCCESS_MESSAGE","VALIDATION_EXCEPTION","PASSWORD_POLICY_MESSAGE","USER_IS_NOT_CONFIRMED","TEMPORARY_PASSWORD_RESEND_MESSAGE","CONTACT_US_SUCCESS_MESSAGE","RESTRICT_USERPORTAL_USER_LOGIN","INVALID_EMAIL_MESSAGE","INVALID_MOBILE_NUMBER_MESSAGE","INCORRECT_USERNAME_OR_PASSWORD","NEWS_LETTER_SUBSCRIBTION_MESSAGE","languageServiceUrl","process","getWebsiteLanguages","axios","dataObject","getMessages","messageId","languageCode","queryParam","getValueMessages","values","getFieldConsoleMessages","fieldsConsole","__exportStar","numToUint8","num","uint32ArrayFrom","convertToBuffer_1","isEmptyData_1","numToUint8_1","uint32ArrayFrom_1","a_lookUpTable","return_array"],"mappings":"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","file":"6c39e38bee0e99946a1157234d69abb09ae84eac-302e2565486b2bc3cead.js","sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Sha256 = void 0;\n\nvar tslib_1 = require(\"tslib\");\n\nvar constants_1 = require(\"./constants\");\n\nvar RawSha256_1 = require(\"./RawSha256\");\n\nvar util_1 = require(\"@aws-crypto/util\");\n\nvar Sha256 =\n/** @class */\nfunction () {\n function Sha256(secret) {\n this.hash = new RawSha256_1.RawSha256();\n\n if (secret) {\n this.outer = new RawSha256_1.RawSha256();\n var inner = bufferFromSecret(secret);\n var outer = new Uint8Array(constants_1.BLOCK_SIZE);\n outer.set(inner);\n\n for (var i = 0; i < constants_1.BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer); // overwrite the copied key in memory\n\n for (var i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n }\n }\n\n Sha256.prototype.update = function (toHash) {\n if ((0, util_1.isEmptyData)(toHash) || this.error) {\n return;\n }\n\n try {\n this.hash.update((0, util_1.convertToBuffer)(toHash));\n } catch (e) {\n this.error = e;\n }\n };\n /* This synchronous method keeps compatibility\n * with the v2 aws-sdk.\n */\n\n\n Sha256.prototype.digestSync = function () {\n if (this.error) {\n throw this.error;\n }\n\n if (this.outer) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest();\n }\n\n return this.hash.digest();\n };\n /* The underlying digest method here is synchronous.\n * To keep the same interface with the other hash functions\n * the default is to expose this as an async method.\n * However, it can sometimes be useful to have a sync method.\n */\n\n\n Sha256.prototype.digest = function () {\n return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {\n return (0, tslib_1.__generator)(this, function (_a) {\n return [2\n /*return*/\n , this.digestSync()];\n });\n });\n };\n\n return Sha256;\n}();\n\nexports.Sha256 = Sha256;\n\nfunction bufferFromSecret(secret) {\n var input = (0, util_1.convertToBuffer)(secret);\n\n if (input.byteLength > constants_1.BLOCK_SIZE) {\n var bufferHash = new RawSha256_1.RawSha256();\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n\n var buffer = new Uint8Array(constants_1.BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RawSha256 = void 0;\n\nvar constants_1 = require(\"./constants\");\n/**\n * @internal\n */\n\n\nvar RawSha256 =\n/** @class */\nfunction () {\n function RawSha256() {\n this.state = Int32Array.from(constants_1.INIT);\n this.temp = new Int32Array(64);\n this.buffer = new Uint8Array(64);\n this.bufferLength = 0;\n this.bytesHashed = 0;\n /**\n * @internal\n */\n\n this.finished = false;\n }\n\n RawSha256.prototype.update = function (data) {\n if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n\n if (this.bytesHashed * 8 > constants_1.MAX_HASHABLE_LENGTH) {\n throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n\n if (this.bufferLength === constants_1.BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n };\n\n RawSha256.prototype.digest = function () {\n if (!this.finished) {\n var bitsHashed = this.bytesHashed * 8;\n var bufferView = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n var undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80); // Ensure the final block has enough room for the hashed length\n\n if (undecoratedLength % constants_1.BLOCK_SIZE >= constants_1.BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < constants_1.BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n\n this.hashBuffer();\n this.bufferLength = 0;\n }\n\n for (var i = this.bufferLength; i < constants_1.BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n\n bufferView.setUint32(constants_1.BLOCK_SIZE - 8, Math.floor(bitsHashed / 0x100000000), true);\n bufferView.setUint32(constants_1.BLOCK_SIZE - 4, bitsHashed);\n this.hashBuffer();\n this.finished = true;\n } // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n\n\n var out = new Uint8Array(constants_1.DIGEST_LENGTH);\n\n for (var i = 0; i < 8; i++) {\n out[i * 4] = this.state[i] >>> 24 & 0xff;\n out[i * 4 + 1] = this.state[i] >>> 16 & 0xff;\n out[i * 4 + 2] = this.state[i] >>> 8 & 0xff;\n out[i * 4 + 3] = this.state[i] >>> 0 & 0xff;\n }\n\n return out;\n };\n\n RawSha256.prototype.hashBuffer = function () {\n var _a = this,\n buffer = _a.buffer,\n state = _a.state;\n\n var state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n\n for (var i = 0; i < constants_1.BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] = (buffer[i * 4] & 0xff) << 24 | (buffer[i * 4 + 1] & 0xff) << 16 | (buffer[i * 4 + 2] & 0xff) << 8 | buffer[i * 4 + 3] & 0xff;\n } else {\n var u = this.temp[i - 2];\n var t1_1 = (u >>> 17 | u << 15) ^ (u >>> 19 | u << 13) ^ u >>> 10;\n u = this.temp[i - 15];\n var t2_1 = (u >>> 7 | u << 25) ^ (u >>> 18 | u << 14) ^ u >>> 3;\n this.temp[i] = (t1_1 + this.temp[i - 7] | 0) + (t2_1 + this.temp[i - 16] | 0);\n }\n\n var t1 = (((state4 >>> 6 | state4 << 26) ^ (state4 >>> 11 | state4 << 21) ^ (state4 >>> 25 | state4 << 7)) + (state4 & state5 ^ ~state4 & state6) | 0) + (state7 + (constants_1.KEY[i] + this.temp[i] | 0) | 0) | 0;\n var t2 = ((state0 >>> 2 | state0 << 30) ^ (state0 >>> 13 | state0 << 19) ^ (state0 >>> 22 | state0 << 10)) + (state0 & state1 ^ state0 & state2 ^ state1 & state2) | 0;\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = state3 + t1 | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = t1 + t2 | 0;\n }\n\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n };\n\n return RawSha256;\n}();\n\nexports.RawSha256 = RawSha256;","export default '00000000-0000-0000-0000-000000000000';","var crypto; // Native crypto from window (Browser)\n\nif (typeof window !== 'undefined' && window.crypto) {\n crypto = window.crypto;\n} // Native (experimental IE 11) crypto from window (Browser)\n\n\nif (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n crypto = window.msCrypto;\n} // Native crypto from global (NodeJS)\n\n\nif (!crypto && typeof global !== 'undefined' && global.crypto) {\n crypto = global.crypto;\n} // Native crypto import via require (NodeJS)\n\n\nif (!crypto && typeof require === 'function') {\n try {\n crypto = require('crypto');\n } catch (err) {}\n}\n/*\n * Cryptographically secure pseudorandom number generator\n * As Math.random() is cryptographically not safe to use\n */\n\n\nexport default function cryptoSecureRandomInt() {\n if (crypto) {\n // Use getRandomValues method (Browser)\n if (typeof crypto.getRandomValues === 'function') {\n try {\n return crypto.getRandomValues(new Uint32Array(1))[0];\n } catch (err) {}\n } // Use randomBytes method (NodeJS)\n\n\n if (typeof crypto.randomBytes === 'function') {\n try {\n return crypto.randomBytes(4).readInt32LE();\n } catch (err) {}\n }\n }\n\n throw new Error('Native crypto module could not be used to get secure random number.');\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MAX_HASHABLE_LENGTH = exports.INIT = exports.KEY = exports.DIGEST_LENGTH = exports.BLOCK_SIZE = void 0;\n/**\n * @internal\n */\n\nexports.BLOCK_SIZE = 64;\n/**\n * @internal\n */\n\nexports.DIGEST_LENGTH = 32;\n/**\n * @internal\n */\n\nexports.KEY = new Uint32Array([0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]);\n/**\n * @internal\n */\n\nexports.INIT = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];\n/**\n * @internal\n */\n\nexports.MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/** @class */\nvar AuthenticationDetails = /*#__PURE__*/function () {\n /**\n * Constructs a new AuthenticationDetails object\n * @param {object=} data Creation options.\n * @param {string} data.Username User being authenticated.\n * @param {string} data.Password Plain-text password to authenticate with.\n * @param {(AttributeArg[])?} data.ValidationData Application extra metadata.\n * @param {(AttributeArg[])?} data.AuthParamaters Authentication paramaters for custom auth.\n */\n function AuthenticationDetails(data) {\n var _ref = data || {},\n ValidationData = _ref.ValidationData,\n Username = _ref.Username,\n Password = _ref.Password,\n AuthParameters = _ref.AuthParameters,\n ClientMetadata = _ref.ClientMetadata;\n\n this.validationData = ValidationData || {};\n this.authParameters = AuthParameters || {};\n this.clientMetadata = ClientMetadata || {};\n this.username = Username;\n this.password = Password;\n }\n /**\n * @returns {string} the record's username\n */\n\n\n var _proto = AuthenticationDetails.prototype;\n\n _proto.getUsername = function getUsername() {\n return this.username;\n }\n /**\n * @returns {string} the record's password\n */\n ;\n\n _proto.getPassword = function getPassword() {\n return this.password;\n }\n /**\n * @returns {Array} the record's validationData\n */\n ;\n\n _proto.getValidationData = function getValidationData() {\n return this.validationData;\n }\n /**\n * @returns {Array} the record's authParameters\n */\n ;\n\n _proto.getAuthParameters = function getAuthParameters() {\n return this.authParameters;\n }\n /**\n * @returns {ClientMetadata} the clientMetadata for a Lambda trigger\n */\n ;\n\n _proto.getClientMetadata = function getClientMetadata() {\n return this.clientMetadata;\n };\n\n return AuthenticationDetails;\n}();\n\nexport { AuthenticationDetails as default };","import cryptoSecureRandomInt from './cryptoSecureRandomInt';\n/**\n * Hex encoding strategy.\n * Converts a word array to a hex string.\n * @param {WordArray} wordArray The word array.\n * @return {string} The hex string.\n * @static\n */\n\nfunction hexStringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes; // Convert\n\n var hexChars = [];\n\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n\n return hexChars.join('');\n}\n\nvar WordArray = /*#__PURE__*/function () {\n function WordArray(words, sigBytes) {\n words = this.words = words || [];\n\n if (sigBytes != undefined) {\n this.sigBytes = sigBytes;\n } else {\n this.sigBytes = words.length * 4;\n }\n }\n\n var _proto = WordArray.prototype;\n\n _proto.random = function random(nBytes) {\n var words = [];\n\n for (var i = 0; i < nBytes; i += 4) {\n words.push(cryptoSecureRandomInt());\n }\n\n return new WordArray(words, nBytes);\n };\n\n _proto.toString = function toString() {\n return hexStringify(this);\n };\n\n return WordArray;\n}();\n\nexport { WordArray as default };","import \"core-js/modules/es.array.reduce.js\";\n// A small implementation of BigInteger based on http://www-cs-students.stanford.edu/~tjw/jsbn/\n//\n// All public methods have been removed except the following:\n// new BigInteger(a, b) (only radix 2, 4, 8, 16 and 32 supported)\n// toString (only radix 2, 4, 8, 16 and 32 supported)\n// negate\n// abs\n// compareTo\n// bitLength\n// mod\n// equals\n// add\n// subtract\n// multiply\n// divide\n// modPow\nexport default BigInteger;\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n// (public) Constructor\n\nfunction BigInteger(a, b) {\n if (a != null) this.fromString(a, b);\n} // return new, unset BigInteger\n\n\nfunction nbi() {\n return new BigInteger(null);\n} // Bits per digit\n\n\nvar dbits; // JavaScript engine analysis\n\nvar canary = 0xdeadbeefcafe;\nvar j_lm = (canary & 0xffffff) == 0xefcafe; // am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n\nfunction am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n\n return c;\n} // am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n\n\nfunction am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff,\n xh = x >> 15;\n\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n\n return c;\n} // Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\n\n\nfunction am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff,\n xh = x >> 14;\n\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n\n return c;\n}\n\nvar inBrowser = typeof navigator !== 'undefined';\n\nif (inBrowser && j_lm && navigator.appName == 'Microsoft Internet Explorer') {\n BigInteger.prototype.am = am2;\n dbits = 30;\n} else if (inBrowser && j_lm && navigator.appName != 'Netscape') {\n BigInteger.prototype.am = am1;\n dbits = 26;\n} else {\n // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = (1 << dbits) - 1;\nBigInteger.prototype.DV = 1 << dbits;\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP; // Digit conversions\n\nvar BI_RM = '0123456789abcdefghijklmnopqrstuvwxyz';\nvar BI_RC = new Array();\nvar rr, vv;\nrr = '0'.charCodeAt(0);\n\nfor (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv;\n}\n\nrr = 'a'.charCodeAt(0);\n\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\n\nrr = 'A'.charCodeAt(0);\n\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\n\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\n\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)];\n return c == null ? -1 : c;\n} // (protected) copy this to r\n\n\nfunction bnpCopyTo(r) {\n for (var i = this.t - 1; i >= 0; --i) {\n r[i] = this[i];\n }\n\n r.t = this.t;\n r.s = this.s;\n} // (protected) set from integer value x, -DV <= x < DV\n\n\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = x < 0 ? -1 : 0;\n if (x > 0) this[0] = x;else if (x < -1) this[0] = x + this.DV;else this.t = 0;\n} // return bigint initialized to value\n\n\nfunction nbv(i) {\n var r = nbi();\n r.fromInt(i);\n return r;\n} // (protected) set from string and radix\n\n\nfunction bnpFromString(s, b) {\n var k;\n if (b == 16) k = 4;else if (b == 8) k = 3;else if (b == 2) k = 1;else if (b == 32) k = 5;else if (b == 4) k = 2;else throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n this.t = 0;\n this.s = 0;\n var i = s.length,\n mi = false,\n sh = 0;\n\n while (--i >= 0) {\n var x = intAt(s, i);\n\n if (x < 0) {\n if (s.charAt(i) == '-') mi = true;\n continue;\n }\n\n mi = false;\n if (sh == 0) this[this.t++] = x;else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & (1 << this.DB - sh) - 1) << sh;\n this[this.t++] = x >> this.DB - sh;\n } else this[this.t - 1] |= x << sh;\n sh += k;\n if (sh >= this.DB) sh -= this.DB;\n }\n\n this.clamp();\n if (mi) BigInteger.ZERO.subTo(this, this);\n} // (protected) clamp off excess high words\n\n\nfunction bnpClamp() {\n var c = this.s & this.DM;\n\n while (this.t > 0 && this[this.t - 1] == c) {\n --this.t;\n }\n} // (public) return string representation in given radix\n\n\nfunction bnToString(b) {\n if (this.s < 0) return '-' + this.negate().toString(b);\n var k;\n if (b == 16) k = 4;else if (b == 8) k = 3;else if (b == 2) k = 1;else if (b == 32) k = 5;else if (b == 4) k = 2;else throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n var km = (1 << k) - 1,\n d,\n m = false,\n r = '',\n i = this.t;\n var p = this.DB - i * this.DB % k;\n\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = int2char(d);\n }\n\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & (1 << p) - 1) << k - p;\n d |= this[--i] >> (p += this.DB - k);\n } else {\n d = this[i] >> (p -= k) & km;\n\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n\n if (d > 0) m = true;\n if (m) r += int2char(d);\n }\n }\n\n return m ? r : '0';\n} // (public) -this\n\n\nfunction bnNegate() {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n} // (public) |this|\n\n\nfunction bnAbs() {\n return this.s < 0 ? this.negate() : this;\n} // (public) return + if this > a, - if this < a, 0 if equal\n\n\nfunction bnCompareTo(a) {\n var r = this.s - a.s;\n if (r != 0) return r;\n var i = this.t;\n r = i - a.t;\n if (r != 0) return this.s < 0 ? -r : r;\n\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) return r;\n }\n\n return 0;\n} // returns bit length of the integer x\n\n\nfunction nbits(x) {\n var r = 1,\n t;\n\n if ((t = x >>> 16) != 0) {\n x = t;\n r += 16;\n }\n\n if ((t = x >> 8) != 0) {\n x = t;\n r += 8;\n }\n\n if ((t = x >> 4) != 0) {\n x = t;\n r += 4;\n }\n\n if ((t = x >> 2) != 0) {\n x = t;\n r += 2;\n }\n\n if ((t = x >> 1) != 0) {\n x = t;\n r += 1;\n }\n\n return r;\n} // (public) return the number of bits in \"this\"\n\n\nfunction bnBitLength() {\n if (this.t <= 0) return 0;\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ this.s & this.DM);\n} // (protected) r = this << n*DB\n\n\nfunction bnpDLShiftTo(n, r) {\n var i;\n\n for (i = this.t - 1; i >= 0; --i) {\n r[i + n] = this[i];\n }\n\n for (i = n - 1; i >= 0; --i) {\n r[i] = 0;\n }\n\n r.t = this.t + n;\n r.s = this.s;\n} // (protected) r = this >> n*DB\n\n\nfunction bnpDRShiftTo(n, r) {\n for (var i = n; i < this.t; ++i) {\n r[i - n] = this[i];\n }\n\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n} // (protected) r = this << n\n\n\nfunction bnpLShiftTo(n, r) {\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << cbs) - 1;\n var ds = Math.floor(n / this.DB),\n c = this.s << bs & this.DM,\n i;\n\n for (i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = this[i] >> cbs | c;\n c = (this[i] & bm) << bs;\n }\n\n for (i = ds - 1; i >= 0; --i) {\n r[i] = 0;\n }\n\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n} // (protected) r = this >> n\n\n\nfunction bnpRShiftTo(n, r) {\n r.s = this.s;\n var ds = Math.floor(n / this.DB);\n\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n\n if (bs > 0) r[this.t - ds - 1] |= (this.s & bm) << cbs;\n r.t = this.t - ds;\n r.clamp();\n} // (protected) r = this - a\n\n\nfunction bnpSubTo(a, r) {\n var i = 0,\n c = 0,\n m = Math.min(a.t, this.t);\n\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n if (a.t < this.t) {\n c -= a.s;\n\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c += this.s;\n } else {\n c += this.s;\n\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c -= a.s;\n }\n\n r.s = c < 0 ? -1 : 0;\n if (c < -1) r[i++] = this.DV + c;else if (c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n} // (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\n\n\nfunction bnpMultiplyTo(a, r) {\n var x = this.abs(),\n y = a.abs();\n var i = x.t;\n r.t = i + y.t;\n\n while (--i >= 0) {\n r[i] = 0;\n }\n\n for (i = 0; i < y.t; ++i) {\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n }\n\n r.s = 0;\n r.clamp();\n if (this.s != a.s) BigInteger.ZERO.subTo(r, r);\n} // (protected) r = this^2, r != this (HAC 14.16)\n\n\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2 * x.t;\n\n while (--i >= 0) {\n r[i] = 0;\n }\n\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1);\n\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n\n if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n r.s = 0;\n r.clamp();\n} // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\n\n\nfunction bnpDivRemTo(m, q, r) {\n var pm = m.abs();\n if (pm.t <= 0) return;\n var pt = this.abs();\n\n if (pt.t < pm.t) {\n if (q != null) q.fromInt(0);\n if (r != null) this.copyTo(r);\n return;\n }\n\n if (r == null) r = nbi();\n var y = nbi(),\n ts = this.s,\n ms = m.s;\n var nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus\n\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n } else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n\n var ys = y.t;\n var y0 = y[ys - 1];\n if (y0 == 0) return;\n var yt = y0 * (1 << this.F1) + (ys > 1 ? y[ys - 2] >> this.F2 : 0);\n var d1 = this.FV / yt,\n d2 = (1 << this.F1) / yt,\n e = 1 << this.F2;\n var i = r.t,\n j = i - ys,\n t = q == null ? nbi() : q;\n y.dlShiftTo(j, t);\n\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y); // \"negative\" y so we can replace sub with am later\n\n while (y.t < ys) {\n y[y.t++] = 0;\n }\n\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = r[--i] == y0 ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) {\n // Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n\n while (r[i] < --qd) {\n r.subTo(t, r);\n }\n }\n }\n\n if (q != null) {\n r.drShiftTo(ys, q);\n if (ts != ms) BigInteger.ZERO.subTo(q, q);\n }\n\n r.t = ys;\n r.clamp();\n if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder\n\n if (ts < 0) BigInteger.ZERO.subTo(r, r);\n} // (public) this mod a\n\n\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r);\n return r;\n} // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\n\n\nfunction bnpInvDigit() {\n if (this.t < 1) return 0;\n var x = this[0];\n if ((x & 1) == 0) return 0;\n var y = x & 3; // y == 1/x mod 2^2\n\n y = y * (2 - (x & 0xf) * y) & 0xf; // y == 1/x mod 2^4\n\n y = y * (2 - (x & 0xff) * y) & 0xff; // y == 1/x mod 2^8\n\n y = y * (2 - ((x & 0xffff) * y & 0xffff)) & 0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n\n y = y * (2 - x * y % this.DV) % this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n\n return y > 0 ? this.DV - y : -y;\n}\n\nfunction bnEquals(a) {\n return this.compareTo(a) == 0;\n} // (protected) r = this + a\n\n\nfunction bnpAddTo(a, r) {\n var i = 0,\n c = 0,\n m = Math.min(a.t, this.t);\n\n while (i < m) {\n c += this[i] + a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n if (a.t < this.t) {\n c += a.s;\n\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c += this.s;\n } else {\n c += this.s;\n\n while (i < a.t) {\n c += a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c += a.s;\n }\n\n r.s = c < 0 ? -1 : 0;\n if (c > 0) r[i++] = c;else if (c < -1) r[i++] = this.DV + c;\n r.t = i;\n r.clamp();\n} // (public) this + a\n\n\nfunction bnAdd(a) {\n var r = nbi();\n this.addTo(a, r);\n return r;\n} // (public) this - a\n\n\nfunction bnSubtract(a) {\n var r = nbi();\n this.subTo(a, r);\n return r;\n} // (public) this * a\n\n\nfunction bnMultiply(a) {\n var r = nbi();\n this.multiplyTo(a, r);\n return r;\n} // (public) this / a\n\n\nfunction bnDivide(a) {\n var r = nbi();\n this.divRemTo(a, r, null);\n return r;\n} // Montgomery reduction\n\n\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << m.DB - 15) - 1;\n this.mt2 = 2 * m.t;\n} // xR mod m\n\n\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r);\n return r;\n} // x/R mod m\n\n\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n} // x = x/R mod m (HAC 14.32)\n\n\nfunction montReduce(x) {\n while (x.t <= this.mt2) {\n // pad x so am has enough room later\n x[x.t++] = 0;\n }\n\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff;\n var u0 = j * this.mpl + ((j * this.mph + (x[i] >> 15) * this.mpl & this.um) << 15) & x.DM; // use am to combine the multiply-shift-add into one call\n\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t); // propagate carry\n\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0) x.subTo(this.m, x);\n} // r = \"x^2/R mod m\"; x != r\n\n\nfunction montSqrTo(x, r) {\n x.squareTo(r);\n this.reduce(r);\n} // r = \"xy/R mod m\"; x,y != r\n\n\nfunction montMulTo(x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n}\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo; // (public) this^e % m (HAC 14.85)\n\nfunction bnModPow(e, m, callback) {\n var i = e.bitLength(),\n k,\n r = nbv(1),\n z = new Montgomery(m);\n if (i <= 0) return r;else if (i < 18) k = 1;else if (i < 48) k = 3;else if (i < 144) k = 4;else if (i < 768) k = 5;else k = 6; // precomputation\n\n var g = new Array(),\n n = 3,\n k1 = k - 1,\n km = (1 << k) - 1;\n g[1] = z.convert(this);\n\n if (k > 1) {\n var g2 = nbi();\n z.sqrTo(g[1], g2);\n\n while (n <= km) {\n g[n] = nbi();\n z.mulTo(g2, g[n - 2], g[n]);\n n += 2;\n }\n }\n\n var j = e.t - 1,\n w,\n is1 = true,\n r2 = nbi(),\n t;\n i = nbits(e[j]) - 1;\n\n while (j >= 0) {\n if (i >= k1) w = e[j] >> i - k1 & km;else {\n w = (e[j] & (1 << i + 1) - 1) << k1 - i;\n if (j > 0) w |= e[j - 1] >> this.DB + i - k1;\n }\n n = k;\n\n while ((w & 1) == 0) {\n w >>= 1;\n --n;\n }\n\n if ((i -= n) < 0) {\n i += this.DB;\n --j;\n }\n\n if (is1) {\n // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n } else {\n while (n > 1) {\n z.sqrTo(r, r2);\n z.sqrTo(r2, r);\n n -= 2;\n }\n\n if (n > 0) z.sqrTo(r, r2);else {\n t = r;\n r = r2;\n r2 = t;\n }\n z.mulTo(r2, g[w], r);\n }\n\n while (j >= 0 && (e[j] & 1 << i) == 0) {\n z.sqrTo(r, r2);\n t = r;\n r = r2;\n r2 = t;\n\n if (--i < 0) {\n i = this.DB - 1;\n --j;\n }\n }\n }\n\n var result = z.revert(r);\n callback(null, result);\n return result;\n} // protected\n\n\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.addTo = bnpAddTo; // public\n\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.modPow = bnModPow; // \"constants\"\n\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { Buffer } from 'buffer';\nimport WordArray from './utils/WordArray';\nimport { Sha256 } from '@aws-crypto/sha256-js';\n/**\n * Returns a Buffer with a sequence of random nBytes\n *\n * @param {number} nBytes\n * @returns {Buffer} fixed-length sequence of random bytes\n */\n\nfunction randomBytes(nBytes) {\n return Buffer.from(new WordArray().random(nBytes).toString(), 'hex');\n}\n\nimport BigInteger from './BigInteger';\n/**\n * Tests if a hex string has it most significant bit set (case-insensitive regex)\n */\n\nvar HEX_MSB_REGEX = /^[89a-f]/i;\nvar initN = 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1' + '29024E088A67CC74020BBEA63B139B22514A08798E3404DD' + 'EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245' + 'E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' + 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D' + 'C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F' + '83655D23DCA3AD961C62F356208552BB9ED529077096966D' + '670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B' + 'E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9' + 'DE2BCBF6955817183995497CEA956AE515D2261898FA0510' + '15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64' + 'ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7' + 'ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B' + 'F12FFA06D98A0864D87602733EC86A64521F2B18177B200C' + 'BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31' + '43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF';\nvar newPasswordRequiredChallengeUserAttributePrefix = 'userAttributes.';\n/** @class */\n\nvar AuthenticationHelper = /*#__PURE__*/function () {\n /**\n * Constructs a new AuthenticationHelper object\n * @param {string} PoolName Cognito user pool name.\n */\n function AuthenticationHelper(PoolName) {\n this.N = new BigInteger(initN, 16);\n this.g = new BigInteger('2', 16);\n this.k = new BigInteger(this.hexHash(\"\" + this.padHex(this.N) + this.padHex(this.g)), 16);\n this.smallAValue = this.generateRandomSmallA();\n this.getLargeAValue(function () {});\n this.infoBits = Buffer.from('Caldera Derived Key', 'utf8');\n this.poolName = PoolName;\n }\n /**\n * @returns {BigInteger} small A, a random number\n */\n\n\n var _proto = AuthenticationHelper.prototype;\n\n _proto.getSmallAValue = function getSmallAValue() {\n return this.smallAValue;\n }\n /**\n * @param {nodeCallback} callback Called with (err, largeAValue)\n * @returns {void}\n */\n ;\n\n _proto.getLargeAValue = function getLargeAValue(callback) {\n var _this = this;\n\n if (this.largeAValue) {\n callback(null, this.largeAValue);\n } else {\n this.calculateA(this.smallAValue, function (err, largeAValue) {\n if (err) {\n callback(err, null);\n }\n\n _this.largeAValue = largeAValue;\n callback(null, _this.largeAValue);\n });\n }\n }\n /**\n * helper function to generate a random big integer\n * @returns {BigInteger} a random value.\n * @private\n */\n ;\n\n _proto.generateRandomSmallA = function generateRandomSmallA() {\n // This will be interpreted as a postive 128-bit integer\n var hexRandom = randomBytes(128).toString('hex');\n var randomBigInt = new BigInteger(hexRandom, 16); // There is no need to do randomBigInt.mod(this.N - 1) as N (3072-bit) is > 128 bytes (1024-bit)\n\n return randomBigInt;\n }\n /**\n * helper function to generate a random string\n * @returns {string} a random value.\n * @private\n */\n ;\n\n _proto.generateRandomString = function generateRandomString() {\n return randomBytes(40).toString('base64');\n }\n /**\n * @returns {string} Generated random value included in password hash.\n */\n ;\n\n _proto.getRandomPassword = function getRandomPassword() {\n return this.randomPassword;\n }\n /**\n * @returns {string} Generated random value included in devices hash.\n */\n ;\n\n _proto.getSaltDevices = function getSaltDevices() {\n return this.SaltToHashDevices;\n }\n /**\n * @returns {string} Value used to verify devices.\n */\n ;\n\n _proto.getVerifierDevices = function getVerifierDevices() {\n return this.verifierDevices;\n }\n /**\n * Generate salts and compute verifier.\n * @param {string} deviceGroupKey Devices to generate verifier for.\n * @param {string} username User to generate verifier for.\n * @param {nodeCallback} callback Called with (err, null)\n * @returns {void}\n */\n ;\n\n _proto.generateHashDevice = function generateHashDevice(deviceGroupKey, username, callback) {\n var _this2 = this;\n\n this.randomPassword = this.generateRandomString();\n var combinedString = \"\" + deviceGroupKey + username + \":\" + this.randomPassword;\n var hashedString = this.hash(combinedString);\n var hexRandom = randomBytes(16).toString('hex'); // The random hex will be unambiguously represented as a postive integer\n\n this.SaltToHashDevices = this.padHex(new BigInteger(hexRandom, 16));\n this.g.modPow(new BigInteger(this.hexHash(this.SaltToHashDevices + hashedString), 16), this.N, function (err, verifierDevicesNotPadded) {\n if (err) {\n callback(err, null);\n }\n\n _this2.verifierDevices = _this2.padHex(verifierDevicesNotPadded);\n callback(null, null);\n });\n }\n /**\n * Calculate the client's public value A = g^a%N\n * with the generated random number a\n * @param {BigInteger} a Randomly generated small A.\n * @param {nodeCallback} callback Called with (err, largeAValue)\n * @returns {void}\n * @private\n */\n ;\n\n _proto.calculateA = function calculateA(a, callback) {\n var _this3 = this;\n\n this.g.modPow(a, this.N, function (err, A) {\n if (err) {\n callback(err, null);\n }\n\n if (A.mod(_this3.N).equals(BigInteger.ZERO)) {\n callback(new Error('Illegal paramater. A mod N cannot be 0.'), null);\n }\n\n callback(null, A);\n });\n }\n /**\n * Calculate the client's value U which is the hash of A and B\n * @param {BigInteger} A Large A value.\n * @param {BigInteger} B Server B value.\n * @returns {BigInteger} Computed U value.\n * @private\n */\n ;\n\n _proto.calculateU = function calculateU(A, B) {\n this.UHexHash = this.hexHash(this.padHex(A) + this.padHex(B));\n var finalU = new BigInteger(this.UHexHash, 16);\n return finalU;\n }\n /**\n * Calculate a hash from a bitArray\n * @param {Buffer} buf Value to hash.\n * @returns {String} Hex-encoded hash.\n * @private\n */\n ;\n\n _proto.hash = function hash(buf) {\n var awsCryptoHash = new Sha256();\n awsCryptoHash.update(buf);\n var resultFromAWSCrypto = awsCryptoHash.digestSync();\n var hashHex = Buffer.from(resultFromAWSCrypto).toString('hex');\n return new Array(64 - hashHex.length).join('0') + hashHex;\n }\n /**\n * Calculate a hash from a hex string\n * @param {String} hexStr Value to hash.\n * @returns {String} Hex-encoded hash.\n * @private\n */\n ;\n\n _proto.hexHash = function hexHash(hexStr) {\n return this.hash(Buffer.from(hexStr, 'hex'));\n }\n /**\n * Standard hkdf algorithm\n * @param {Buffer} ikm Input key material.\n * @param {Buffer} salt Salt value.\n * @returns {Buffer} Strong key material.\n * @private\n */\n ;\n\n _proto.computehkdf = function computehkdf(ikm, salt) {\n var infoBitsBuffer = Buffer.concat([this.infoBits, Buffer.from(String.fromCharCode(1), 'utf8')]);\n var awsCryptoHash = new Sha256(salt);\n awsCryptoHash.update(ikm);\n var resultFromAWSCryptoPrk = awsCryptoHash.digestSync();\n var awsCryptoHashHmac = new Sha256(resultFromAWSCryptoPrk);\n awsCryptoHashHmac.update(infoBitsBuffer);\n var resultFromAWSCryptoHmac = awsCryptoHashHmac.digestSync();\n var hashHexFromAWSCrypto = resultFromAWSCryptoHmac;\n var currentHex = hashHexFromAWSCrypto.slice(0, 16);\n return currentHex;\n }\n /**\n * Calculates the final hkdf based on computed S value, and computed U value and the key\n * @param {String} username Username.\n * @param {String} password Password.\n * @param {BigInteger} serverBValue Server B value.\n * @param {BigInteger} salt Generated salt.\n * @param {nodeCallback} callback Called with (err, hkdfValue)\n * @returns {void}\n */\n ;\n\n _proto.getPasswordAuthenticationKey = function getPasswordAuthenticationKey(username, password, serverBValue, salt, callback) {\n var _this4 = this;\n\n if (serverBValue.mod(this.N).equals(BigInteger.ZERO)) {\n throw new Error('B cannot be zero.');\n }\n\n this.UValue = this.calculateU(this.largeAValue, serverBValue);\n\n if (this.UValue.equals(BigInteger.ZERO)) {\n throw new Error('U cannot be zero.');\n }\n\n var usernamePassword = \"\" + this.poolName + username + \":\" + password;\n var usernamePasswordHash = this.hash(usernamePassword);\n var xValue = new BigInteger(this.hexHash(this.padHex(salt) + usernamePasswordHash), 16);\n this.calculateS(xValue, serverBValue, function (err, sValue) {\n if (err) {\n callback(err, null);\n }\n\n var hkdf = _this4.computehkdf(Buffer.from(_this4.padHex(sValue), 'hex'), Buffer.from(_this4.padHex(_this4.UValue), 'hex'));\n\n callback(null, hkdf);\n });\n }\n /**\n * Calculates the S value used in getPasswordAuthenticationKey\n * @param {BigInteger} xValue Salted password hash value.\n * @param {BigInteger} serverBValue Server B value.\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.calculateS = function calculateS(xValue, serverBValue, callback) {\n var _this5 = this;\n\n this.g.modPow(xValue, this.N, function (err, gModPowXN) {\n if (err) {\n callback(err, null);\n }\n\n var intValue2 = serverBValue.subtract(_this5.k.multiply(gModPowXN));\n intValue2.modPow(_this5.smallAValue.add(_this5.UValue.multiply(xValue)), _this5.N, function (err2, result) {\n if (err2) {\n callback(err2, null);\n }\n\n callback(null, result.mod(_this5.N));\n });\n });\n }\n /**\n * Return constant newPasswordRequiredChallengeUserAttributePrefix\n * @return {newPasswordRequiredChallengeUserAttributePrefix} constant prefix value\n */\n ;\n\n _proto.getNewPasswordRequiredChallengeUserAttributePrefix = function getNewPasswordRequiredChallengeUserAttributePrefix() {\n return newPasswordRequiredChallengeUserAttributePrefix;\n }\n /**\n * Returns an unambiguous, even-length hex string of the two's complement encoding of an integer.\n *\n * It is compatible with the hex encoding of Java's BigInteger's toByteArray(), wich returns a\n * byte array containing the two's-complement representation of a BigInteger. The array contains\n * the minimum number of bytes required to represent the BigInteger, including at least one sign bit.\n *\n * Examples showing how ambiguity is avoided by left padding with:\n * \t\"00\" (for positive values where the most-significant-bit is set)\n * \"FF\" (for negative values where the most-significant-bit is set)\n *\n * padHex(bigInteger.fromInt(-236)) === \"FF14\"\n * padHex(bigInteger.fromInt(20)) === \"14\"\n *\n * padHex(bigInteger.fromInt(-200)) === \"FF38\"\n * padHex(bigInteger.fromInt(56)) === \"38\"\n *\n * padHex(bigInteger.fromInt(-20)) === \"EC\"\n * padHex(bigInteger.fromInt(236)) === \"00EC\"\n *\n * padHex(bigInteger.fromInt(-56)) === \"C8\"\n * padHex(bigInteger.fromInt(200)) === \"00C8\"\n *\n * @param {BigInteger} bigInt Number to encode.\n * @returns {String} even-length hex string of the two's complement encoding.\n */\n ;\n\n _proto.padHex = function padHex(bigInt) {\n if (!(bigInt instanceof BigInteger)) {\n throw new Error('Not a BigInteger');\n }\n\n var isNegative = bigInt.compareTo(BigInteger.ZERO) < 0;\n /* Get a hex string for abs(bigInt) */\n\n var hexStr = bigInt.abs().toString(16);\n /* Pad hex to even length if needed */\n\n hexStr = hexStr.length % 2 !== 0 ? \"0\" + hexStr : hexStr;\n /* Prepend \"00\" if the most significant bit is set */\n\n hexStr = HEX_MSB_REGEX.test(hexStr) ? \"00\" + hexStr : hexStr;\n\n if (isNegative) {\n /* Flip the bits of the representation */\n var invertedNibbles = hexStr.split('').map(function (x) {\n var invertedNibble = ~parseInt(x, 16) & 0xf;\n return '0123456789ABCDEF'.charAt(invertedNibble);\n }).join('');\n /* After flipping the bits, add one to get the 2's complement representation */\n\n var flippedBitsBI = new BigInteger(invertedNibbles, 16).add(BigInteger.ONE);\n hexStr = flippedBitsBI.toString(16);\n /*\n For hex strings starting with 'FF8', 'FF' can be dropped, e.g. 0xFFFF80=0xFF80=0x80=-128\n \t\tAny sequence of '1' bits on the left can always be substituted with a single '1' bit\n without changing the represented value.\n \t\tThis only happens in the case when the input is 80...00\n */\n\n if (hexStr.toUpperCase().startsWith('FF8')) {\n hexStr = hexStr.substring(2);\n }\n }\n\n return hexStr;\n };\n\n return AuthenticationHelper;\n}();\n\nexport { AuthenticationHelper as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { Buffer } from 'buffer';\n/** @class */\n\nvar CognitoJwtToken = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoJwtToken object\n * @param {string=} token The JWT token.\n */\n function CognitoJwtToken(token) {\n // Assign object\n this.jwtToken = token || '';\n this.payload = this.decodePayload();\n }\n /**\n * @returns {string} the record's token.\n */\n\n\n var _proto = CognitoJwtToken.prototype;\n\n _proto.getJwtToken = function getJwtToken() {\n return this.jwtToken;\n }\n /**\n * @returns {int} the token's expiration (exp member).\n */\n ;\n\n _proto.getExpiration = function getExpiration() {\n return this.payload.exp;\n }\n /**\n * @returns {int} the token's \"issued at\" (iat member).\n */\n ;\n\n _proto.getIssuedAt = function getIssuedAt() {\n return this.payload.iat;\n }\n /**\n * @returns {object} the token's payload.\n */\n ;\n\n _proto.decodePayload = function decodePayload() {\n var payload = this.jwtToken.split('.')[1];\n\n try {\n return JSON.parse(Buffer.from(payload, 'base64').toString('utf8'));\n } catch (err) {\n return {};\n }\n };\n\n return CognitoJwtToken;\n}();\n\nexport { CognitoJwtToken as default };","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n\nimport CognitoJwtToken from './CognitoJwtToken';\n/** @class */\n\nvar CognitoAccessToken = /*#__PURE__*/function (_CognitoJwtToken) {\n _inheritsLoose(CognitoAccessToken, _CognitoJwtToken);\n /**\n * Constructs a new CognitoAccessToken object\n * @param {string=} AccessToken The JWT access token.\n */\n\n\n function CognitoAccessToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n AccessToken = _ref.AccessToken;\n\n return _CognitoJwtToken.call(this, AccessToken || '') || this;\n }\n\n return CognitoAccessToken;\n}(CognitoJwtToken);\n\nexport { CognitoAccessToken as default };","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n\nimport CognitoJwtToken from './CognitoJwtToken';\n/** @class */\n\nvar CognitoIdToken = /*#__PURE__*/function (_CognitoJwtToken) {\n _inheritsLoose(CognitoIdToken, _CognitoJwtToken);\n /**\n * Constructs a new CognitoIdToken object\n * @param {string=} IdToken The JWT Id token\n */\n\n\n function CognitoIdToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n IdToken = _ref.IdToken;\n\n return _CognitoJwtToken.call(this, IdToken || '') || this;\n }\n\n return CognitoIdToken;\n}(CognitoJwtToken);\n\nexport { CognitoIdToken as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/** @class */\nvar CognitoRefreshToken = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoRefreshToken object\n * @param {string=} RefreshToken The JWT refresh token.\n */\n function CognitoRefreshToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n RefreshToken = _ref.RefreshToken; // Assign object\n\n\n this.token = RefreshToken || '';\n }\n /**\n * @returns {string} the record's token.\n */\n\n\n var _proto = CognitoRefreshToken.prototype;\n\n _proto.getToken = function getToken() {\n return this.token;\n };\n\n return CognitoRefreshToken;\n}();\n\nexport { CognitoRefreshToken as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { version } from './version';\nvar BASE_USER_AGENT = \"aws-amplify/\" + version;\nexport var Platform = {\n userAgent: BASE_USER_AGENT + \" js\",\n product: '',\n navigator: null,\n isReactNative: false\n};\n\nif (typeof navigator !== 'undefined' && navigator.product) {\n Platform.product = navigator.product || '';\n Platform.navigator = navigator || null;\n\n switch (navigator.product) {\n case 'ReactNative':\n Platform.userAgent = BASE_USER_AGENT + \" react-native\";\n Platform.isReactNative = true;\n break;\n\n default:\n Platform.userAgent = BASE_USER_AGENT + \" js\";\n Platform.isReactNative = false;\n break;\n }\n}\n\nexport var getUserAgent = function getUserAgent() {\n return Platform.userAgent;\n};\n/**\n * @deprecated use named import\n */\n\nexport default Platform;","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/** @class */\nvar CognitoUserSession = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserSession object\n * @param {CognitoIdToken} IdToken The session's Id token.\n * @param {CognitoRefreshToken=} RefreshToken The session's refresh token.\n * @param {CognitoAccessToken} AccessToken The session's access token.\n * @param {int} ClockDrift The saved computer's clock drift or undefined to force calculation.\n */\n function CognitoUserSession(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n IdToken = _ref.IdToken,\n RefreshToken = _ref.RefreshToken,\n AccessToken = _ref.AccessToken,\n ClockDrift = _ref.ClockDrift;\n\n if (AccessToken == null || IdToken == null) {\n throw new Error('Id token and Access Token must be present.');\n }\n\n this.idToken = IdToken;\n this.refreshToken = RefreshToken;\n this.accessToken = AccessToken;\n this.clockDrift = ClockDrift === undefined ? this.calculateClockDrift() : ClockDrift;\n }\n /**\n * @returns {CognitoIdToken} the session's Id token\n */\n\n\n var _proto = CognitoUserSession.prototype;\n\n _proto.getIdToken = function getIdToken() {\n return this.idToken;\n }\n /**\n * @returns {CognitoRefreshToken} the session's refresh token\n */\n ;\n\n _proto.getRefreshToken = function getRefreshToken() {\n return this.refreshToken;\n }\n /**\n * @returns {CognitoAccessToken} the session's access token\n */\n ;\n\n _proto.getAccessToken = function getAccessToken() {\n return this.accessToken;\n }\n /**\n * @returns {int} the session's clock drift\n */\n ;\n\n _proto.getClockDrift = function getClockDrift() {\n return this.clockDrift;\n }\n /**\n * @returns {int} the computer's clock drift\n */\n ;\n\n _proto.calculateClockDrift = function calculateClockDrift() {\n var now = Math.floor(new Date() / 1000);\n var iat = Math.min(this.accessToken.getIssuedAt(), this.idToken.getIssuedAt());\n return now - iat;\n }\n /**\n * Checks to see if the session is still valid based on session expiry information found\n * in tokens and the current time (adjusted with clock drift)\n * @returns {boolean} if the session is still valid\n */\n ;\n\n _proto.isValid = function isValid() {\n var now = Math.floor(new Date() / 1000);\n var adjusted = now - this.clockDrift;\n return adjusted < this.accessToken.getExpiration() && adjusted < this.idToken.getExpiration();\n };\n\n return CognitoUserSession;\n}();\n\nexport { CognitoUserSession as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nvar monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nvar weekNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n/** @class */\n\nvar DateHelper = /*#__PURE__*/function () {\n function DateHelper() {}\n\n var _proto = DateHelper.prototype;\n /**\n * @returns {string} The current time in \"ddd MMM D HH:mm:ss UTC YYYY\" format.\n */\n\n _proto.getNowString = function getNowString() {\n var now = new Date();\n var weekDay = weekNames[now.getUTCDay()];\n var month = monthNames[now.getUTCMonth()];\n var day = now.getUTCDate();\n var hours = now.getUTCHours();\n\n if (hours < 10) {\n hours = \"0\" + hours;\n }\n\n var minutes = now.getUTCMinutes();\n\n if (minutes < 10) {\n minutes = \"0\" + minutes;\n }\n\n var seconds = now.getUTCSeconds();\n\n if (seconds < 10) {\n seconds = \"0\" + seconds;\n }\n\n var year = now.getUTCFullYear(); // ddd MMM D HH:mm:ss UTC YYYY\n\n var dateNow = weekDay + \" \" + month + \" \" + day + \" \" + hours + \":\" + minutes + \":\" + seconds + \" UTC \" + year;\n return dateNow;\n };\n\n return DateHelper;\n}();\n\nexport { DateHelper as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/** @class */\nvar CognitoUserAttribute = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserAttribute object\n * @param {string=} Name The record's name\n * @param {string=} Value The record's value\n */\n function CognitoUserAttribute(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n Name = _ref.Name,\n Value = _ref.Value;\n\n this.Name = Name || '';\n this.Value = Value || '';\n }\n /**\n * @returns {string} the record's value.\n */\n\n\n var _proto = CognitoUserAttribute.prototype;\n\n _proto.getValue = function getValue() {\n return this.Value;\n }\n /**\n * Sets the record's value.\n * @param {string} value The new value.\n * @returns {CognitoUserAttribute} The record for method chaining.\n */\n ;\n\n _proto.setValue = function setValue(value) {\n this.Value = value;\n return this;\n }\n /**\n * @returns {string} the record's name.\n */\n ;\n\n _proto.getName = function getName() {\n return this.Name;\n }\n /**\n * Sets the record's name\n * @param {string} name The new name.\n * @returns {CognitoUserAttribute} The record for method chaining.\n */\n ;\n\n _proto.setName = function setName(name) {\n this.Name = name;\n return this;\n }\n /**\n * @returns {string} a string representation of the record.\n */\n ;\n\n _proto.toString = function toString() {\n return JSON.stringify(this);\n }\n /**\n * @returns {object} a flat object representing the record.\n */\n ;\n\n _proto.toJSON = function toJSON() {\n return {\n Name: this.Name,\n Value: this.Value\n };\n };\n\n return CognitoUserAttribute;\n}();\n\nexport { CognitoUserAttribute as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nvar dataMemory = {};\n/** @class */\n\nexport var MemoryStorage = /*#__PURE__*/function () {\n function MemoryStorage() {}\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n\n\n MemoryStorage.setItem = function setItem(key, value) {\n dataMemory[key] = value;\n return dataMemory[key];\n }\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */\n ;\n\n MemoryStorage.getItem = function getItem(key) {\n return Object.prototype.hasOwnProperty.call(dataMemory, key) ? dataMemory[key] : undefined;\n }\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {boolean} return true\n */\n ;\n\n MemoryStorage.removeItem = function removeItem(key) {\n return delete dataMemory[key];\n }\n /**\n * This is used to clear the storage\n * @returns {string} nothing\n */\n ;\n\n MemoryStorage.clear = function clear() {\n dataMemory = {};\n return dataMemory;\n };\n\n return MemoryStorage;\n}();\n/** @class */\n\nvar StorageHelper = /*#__PURE__*/function () {\n /**\n * This is used to get a storage object\n * @returns {object} the storage\n */\n function StorageHelper() {\n try {\n this.storageWindow = window.localStorage;\n this.storageWindow.setItem('aws.cognito.test-ls', 1);\n this.storageWindow.removeItem('aws.cognito.test-ls');\n } catch (exception) {\n this.storageWindow = MemoryStorage;\n }\n }\n /**\n * This is used to return the storage\n * @returns {object} the storage\n */\n\n\n var _proto = StorageHelper.prototype;\n\n _proto.getStorage = function getStorage() {\n return this.storageWindow;\n };\n\n return StorageHelper;\n}();\n\nexport { StorageHelper as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { Buffer } from 'buffer';\nimport { Sha256 } from '@aws-crypto/sha256-js';\nimport { Platform } from './Platform';\nimport BigInteger from './BigInteger';\nimport AuthenticationHelper from './AuthenticationHelper';\nimport CognitoAccessToken from './CognitoAccessToken';\nimport CognitoIdToken from './CognitoIdToken';\nimport CognitoRefreshToken from './CognitoRefreshToken';\nimport CognitoUserSession from './CognitoUserSession';\nimport DateHelper from './DateHelper';\nimport CognitoUserAttribute from './CognitoUserAttribute';\nimport StorageHelper from './StorageHelper';\n/**\n * @callback nodeCallback\n * @template T result\n * @param {*} err The operation failure reason, or null.\n * @param {T} result The operation result.\n */\n\n/**\n * @callback onFailure\n * @param {*} err Failure reason.\n */\n\n/**\n * @callback onSuccess\n * @template T result\n * @param {T} result The operation result.\n */\n\n/**\n * @callback mfaRequired\n * @param {*} details MFA challenge details.\n */\n\n/**\n * @callback customChallenge\n * @param {*} details Custom challenge details.\n */\n\n/**\n * @callback inputVerificationCode\n * @param {*} data Server response.\n */\n\n/**\n * @callback authSuccess\n * @param {CognitoUserSession} session The new session.\n * @param {bool=} userConfirmationNecessary User must be confirmed.\n */\n\nvar isNavigatorAvailable = typeof navigator !== 'undefined';\nvar userAgent = isNavigatorAvailable ? Platform.isReactNative ? 'react-native' : navigator.userAgent : 'nodejs';\n/** @class */\n\nvar CognitoUser = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUser object\n * @param {object} data Creation options\n * @param {string} data.Username The user's username.\n * @param {CognitoUserPool} data.Pool Pool containing the user.\n * @param {object} data.Storage Optional storage object.\n */\n function CognitoUser(data) {\n if (data == null || data.Username == null || data.Pool == null) {\n throw new Error('Username and Pool information are required.');\n }\n\n this.username = data.Username || '';\n this.pool = data.Pool;\n this.Session = null;\n this.client = data.Pool.client;\n this.signInUserSession = null;\n this.authenticationFlowType = 'USER_SRP_AUTH';\n this.storage = data.Storage || new StorageHelper().getStorage();\n this.keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n this.userDataKey = this.keyPrefix + \".\" + this.username + \".userData\";\n }\n /**\n * Sets the session for this user\n * @param {CognitoUserSession} signInUserSession the session\n * @returns {void}\n */\n\n\n var _proto = CognitoUser.prototype;\n\n _proto.setSignInUserSession = function setSignInUserSession(signInUserSession) {\n this.clearCachedUserData();\n this.signInUserSession = signInUserSession;\n this.cacheTokens();\n }\n /**\n * @returns {CognitoUserSession} the current session for this user\n */\n ;\n\n _proto.getSignInUserSession = function getSignInUserSession() {\n return this.signInUserSession;\n }\n /**\n * @returns {string} the user's username\n */\n ;\n\n _proto.getUsername = function getUsername() {\n return this.username;\n }\n /**\n * @returns {String} the authentication flow type\n */\n ;\n\n _proto.getAuthenticationFlowType = function getAuthenticationFlowType() {\n return this.authenticationFlowType;\n }\n /**\n * sets authentication flow type\n * @param {string} authenticationFlowType New value.\n * @returns {void}\n */\n ;\n\n _proto.setAuthenticationFlowType = function setAuthenticationFlowType(authenticationFlowType) {\n this.authenticationFlowType = authenticationFlowType;\n }\n /**\n * This is used for authenticating the user through the custom authentication flow.\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.initiateAuth = function initiateAuth(authDetails, callback) {\n var _this = this;\n\n var authParameters = authDetails.getAuthParameters();\n authParameters.USERNAME = this.username;\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n ClientId: this.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('InitiateAuth', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeName = data.ChallengeName;\n var challengeParameters = data.ChallengeParameters;\n\n if (challengeName === 'CUSTOM_CHALLENGE') {\n _this.Session = data.Session;\n return callback.customChallenge(challengeParameters);\n }\n\n _this.signInUserSession = _this.getCognitoUserSession(data.AuthenticationResult);\n\n _this.cacheTokens();\n\n return callback.onSuccess(_this.signInUserSession);\n });\n }\n /**\n * This is used for authenticating the user.\n * stuff\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {newPasswordRequired} callback.newPasswordRequired new\n * password and any required attributes are required to continue\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.authenticateUser = function authenticateUser(authDetails, callback) {\n if (this.authenticationFlowType === 'USER_PASSWORD_AUTH') {\n return this.authenticateUserPlainUsernamePassword(authDetails, callback);\n } else if (this.authenticationFlowType === 'USER_SRP_AUTH' || this.authenticationFlowType === 'CUSTOM_AUTH') {\n return this.authenticateUserDefaultAuth(authDetails, callback);\n }\n\n return callback.onFailure(new Error('Authentication flow type is invalid.'));\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * It calls the AuthenticationHelper for SRP related\n * stuff\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {newPasswordRequired} callback.newPasswordRequired new\n * password and any required attributes are required to continue\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.authenticateUserDefaultAuth = function authenticateUserDefaultAuth(authDetails, callback) {\n var _this2 = this;\n\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolName());\n var dateHelper = new DateHelper();\n var serverBValue;\n var salt;\n var authParameters = {};\n\n if (this.deviceKey != null) {\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n\n authParameters.USERNAME = this.username;\n authenticationHelper.getLargeAValue(function (errOnAValue, aValue) {\n // getLargeAValue callback start\n if (errOnAValue) {\n callback.onFailure(errOnAValue);\n }\n\n authParameters.SRP_A = aValue.toString(16);\n\n if (_this2.authenticationFlowType === 'CUSTOM_AUTH') {\n authParameters.CHALLENGE_NAME = 'SRP_A';\n }\n\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: _this2.authenticationFlowType,\n ClientId: _this2.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n\n if (_this2.getUserContextData(_this2.username)) {\n jsonReq.UserContextData = _this2.getUserContextData(_this2.username);\n }\n\n _this2.client.request('InitiateAuth', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeParameters = data.ChallengeParameters;\n _this2.username = challengeParameters.USER_ID_FOR_SRP;\n _this2.userDataKey = _this2.keyPrefix + \".\" + _this2.username + \".userData\";\n serverBValue = new BigInteger(challengeParameters.SRP_B, 16);\n salt = new BigInteger(challengeParameters.SALT, 16);\n\n _this2.getCachedDeviceKeyAndPassword();\n\n authenticationHelper.getPasswordAuthenticationKey(_this2.username, authDetails.getPassword(), serverBValue, salt, function (errOnHkdf, hkdf) {\n // getPasswordAuthenticationKey callback start\n if (errOnHkdf) {\n callback.onFailure(errOnHkdf);\n }\n\n var dateNow = dateHelper.getNowString();\n var concatBuffer = Buffer.concat([Buffer.from(_this2.pool.getUserPoolName(), 'utf8'), Buffer.from(_this2.username, 'utf8'), Buffer.from(challengeParameters.SECRET_BLOCK, 'base64'), Buffer.from(dateNow, 'utf8')]);\n var awsCryptoHash = new Sha256(hkdf);\n awsCryptoHash.update(concatBuffer);\n var resultFromAWSCrypto = awsCryptoHash.digestSync();\n var signatureString = Buffer.from(resultFromAWSCrypto).toString('base64');\n var challengeResponses = {};\n challengeResponses.USERNAME = _this2.username;\n challengeResponses.PASSWORD_CLAIM_SECRET_BLOCK = challengeParameters.SECRET_BLOCK;\n challengeResponses.TIMESTAMP = dateNow;\n challengeResponses.PASSWORD_CLAIM_SIGNATURE = signatureString;\n\n if (_this2.deviceKey != null) {\n challengeResponses.DEVICE_KEY = _this2.deviceKey;\n }\n\n var respondToAuthChallenge = function respondToAuthChallenge(challenge, challengeCallback) {\n return _this2.client.request('RespondToAuthChallenge', challenge, function (errChallenge, dataChallenge) {\n if (errChallenge && errChallenge.code === 'ResourceNotFoundException' && errChallenge.message.toLowerCase().indexOf('device') !== -1) {\n challengeResponses.DEVICE_KEY = null;\n _this2.deviceKey = null;\n _this2.randomPassword = null;\n _this2.deviceGroupKey = null;\n\n _this2.clearCachedDeviceKeyAndPassword();\n\n return respondToAuthChallenge(challenge, challengeCallback);\n }\n\n return challengeCallback(errChallenge, dataChallenge);\n });\n };\n\n var jsonReqResp = {\n ChallengeName: 'PASSWORD_VERIFIER',\n ClientId: _this2.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: data.Session,\n ClientMetadata: clientMetaData\n };\n\n if (_this2.getUserContextData()) {\n jsonReqResp.UserContextData = _this2.getUserContextData();\n }\n\n respondToAuthChallenge(jsonReqResp, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n\n return _this2.authenticateUserInternal(dataAuthenticate, authenticationHelper, callback);\n });\n return undefined; // getPasswordAuthenticationKey callback end\n });\n return undefined;\n }); // getLargeAValue callback end\n\n });\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * @param {AuthenticationDetails} authDetails Contains the authentication data.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.authenticateUserPlainUsernamePassword = function authenticateUserPlainUsernamePassword(authDetails, callback) {\n var _this3 = this;\n\n var authParameters = {};\n authParameters.USERNAME = this.username;\n authParameters.PASSWORD = authDetails.getPassword();\n\n if (!authParameters.PASSWORD) {\n callback.onFailure(new Error('PASSWORD parameter is required'));\n return;\n }\n\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolName());\n this.getCachedDeviceKeyAndPassword();\n\n if (this.deviceKey != null) {\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: 'USER_PASSWORD_AUTH',\n ClientId: this.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n\n if (this.getUserContextData(this.username)) {\n jsonReq.UserContextData = this.getUserContextData(this.username);\n } // USER_PASSWORD_AUTH happens in a single round-trip: client sends userName and password,\n // Cognito UserPools verifies password and returns tokens.\n\n\n this.client.request('InitiateAuth', jsonReq, function (err, authResult) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return _this3.authenticateUserInternal(authResult, authenticationHelper, callback);\n });\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * @param {object} dataAuthenticate authentication data\n * @param {object} authenticationHelper helper created\n * @param {callback} callback passed on from caller\n * @returns {void}\n */\n ;\n\n _proto.authenticateUserInternal = function authenticateUserInternal(dataAuthenticate, authenticationHelper, callback) {\n var _this4 = this;\n\n var challengeName = dataAuthenticate.ChallengeName;\n var challengeParameters = dataAuthenticate.ChallengeParameters;\n\n if (challengeName === 'SMS_MFA') {\n this.Session = dataAuthenticate.Session;\n return callback.mfaRequired(challengeName, challengeParameters);\n }\n\n if (challengeName === 'SELECT_MFA_TYPE') {\n this.Session = dataAuthenticate.Session;\n return callback.selectMFAType(challengeName, challengeParameters);\n }\n\n if (challengeName === 'MFA_SETUP') {\n this.Session = dataAuthenticate.Session;\n return callback.mfaSetup(challengeName, challengeParameters);\n }\n\n if (challengeName === 'SOFTWARE_TOKEN_MFA') {\n this.Session = dataAuthenticate.Session;\n return callback.totpRequired(challengeName, challengeParameters);\n }\n\n if (challengeName === 'CUSTOM_CHALLENGE') {\n this.Session = dataAuthenticate.Session;\n return callback.customChallenge(challengeParameters);\n }\n\n if (challengeName === 'NEW_PASSWORD_REQUIRED') {\n this.Session = dataAuthenticate.Session;\n var userAttributes = null;\n var rawRequiredAttributes = null;\n var requiredAttributes = [];\n var userAttributesPrefix = authenticationHelper.getNewPasswordRequiredChallengeUserAttributePrefix();\n\n if (challengeParameters) {\n userAttributes = JSON.parse(dataAuthenticate.ChallengeParameters.userAttributes);\n rawRequiredAttributes = JSON.parse(dataAuthenticate.ChallengeParameters.requiredAttributes);\n }\n\n if (rawRequiredAttributes) {\n for (var i = 0; i < rawRequiredAttributes.length; i++) {\n requiredAttributes[i] = rawRequiredAttributes[i].substr(userAttributesPrefix.length);\n }\n }\n\n return callback.newPasswordRequired(userAttributes, requiredAttributes);\n }\n\n if (challengeName === 'DEVICE_SRP_AUTH') {\n this.Session = dataAuthenticate.Session;\n this.getDeviceResponse(callback);\n return undefined;\n }\n\n this.signInUserSession = this.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n this.challengeName = challengeName;\n this.cacheTokens();\n var newDeviceMetadata = dataAuthenticate.AuthenticationResult.NewDeviceMetadata;\n\n if (newDeviceMetadata == null) {\n return callback.onSuccess(this.signInUserSession);\n }\n\n authenticationHelper.generateHashDevice(dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey, dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey, function (errGenHash) {\n if (errGenHash) {\n return callback.onFailure(errGenHash);\n }\n\n var deviceSecretVerifierConfig = {\n Salt: Buffer.from(authenticationHelper.getSaltDevices(), 'hex').toString('base64'),\n PasswordVerifier: Buffer.from(authenticationHelper.getVerifierDevices(), 'hex').toString('base64')\n };\n _this4.verifierDevices = deviceSecretVerifierConfig.PasswordVerifier;\n _this4.deviceGroupKey = newDeviceMetadata.DeviceGroupKey;\n _this4.randomPassword = authenticationHelper.getRandomPassword();\n\n _this4.client.request('ConfirmDevice', {\n DeviceKey: newDeviceMetadata.DeviceKey,\n AccessToken: _this4.signInUserSession.getAccessToken().getJwtToken(),\n DeviceSecretVerifierConfig: deviceSecretVerifierConfig,\n DeviceName: userAgent\n }, function (errConfirm, dataConfirm) {\n if (errConfirm) {\n return callback.onFailure(errConfirm);\n }\n\n _this4.deviceKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey;\n\n _this4.cacheDeviceKeyAndPassword();\n\n if (dataConfirm.UserConfirmationNecessary === true) {\n return callback.onSuccess(_this4.signInUserSession, dataConfirm.UserConfirmationNecessary);\n }\n\n return callback.onSuccess(_this4.signInUserSession);\n });\n\n return undefined;\n });\n return undefined;\n }\n /**\n * This method is user to complete the NEW_PASSWORD_REQUIRED challenge.\n * Pass the new password with any new user attributes to be updated.\n * User attribute keys must be of format userAttributes..\n * @param {string} newPassword new password for this user\n * @param {object} requiredAttributeData map with values for all required attributes\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {mfaRequired} callback.mfaRequired MFA code required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.completeNewPasswordChallenge = function completeNewPasswordChallenge(newPassword, requiredAttributeData, callback, clientMetadata) {\n var _this5 = this;\n\n if (!newPassword) {\n return callback.onFailure(new Error('New password is required.'));\n }\n\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolName());\n var userAttributesPrefix = authenticationHelper.getNewPasswordRequiredChallengeUserAttributePrefix();\n var finalUserAttributes = {};\n\n if (requiredAttributeData) {\n Object.keys(requiredAttributeData).forEach(function (key) {\n finalUserAttributes[userAttributesPrefix + key] = requiredAttributeData[key];\n });\n }\n\n finalUserAttributes.NEW_PASSWORD = newPassword;\n finalUserAttributes.USERNAME = this.username;\n var jsonReq = {\n ChallengeName: 'NEW_PASSWORD_REQUIRED',\n ClientId: this.pool.getClientId(),\n ChallengeResponses: finalUserAttributes,\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n\n return _this5.authenticateUserInternal(dataAuthenticate, authenticationHelper, callback);\n });\n return undefined;\n }\n /**\n * This is used to get a session using device authentication. It is called at the end of user\n * authentication\n *\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n * @private\n */\n ;\n\n _proto.getDeviceResponse = function getDeviceResponse(callback, clientMetadata) {\n var _this6 = this;\n\n var authenticationHelper = new AuthenticationHelper(this.deviceGroupKey);\n var dateHelper = new DateHelper();\n var authParameters = {};\n authParameters.USERNAME = this.username;\n authParameters.DEVICE_KEY = this.deviceKey;\n authenticationHelper.getLargeAValue(function (errAValue, aValue) {\n // getLargeAValue callback start\n if (errAValue) {\n callback.onFailure(errAValue);\n }\n\n authParameters.SRP_A = aValue.toString(16);\n var jsonReq = {\n ChallengeName: 'DEVICE_SRP_AUTH',\n ClientId: _this6.pool.getClientId(),\n ChallengeResponses: authParameters,\n ClientMetadata: clientMetadata,\n Session: _this6.Session\n };\n\n if (_this6.getUserContextData()) {\n jsonReq.UserContextData = _this6.getUserContextData();\n }\n\n _this6.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeParameters = data.ChallengeParameters;\n var serverBValue = new BigInteger(challengeParameters.SRP_B, 16);\n var salt = new BigInteger(challengeParameters.SALT, 16);\n authenticationHelper.getPasswordAuthenticationKey(_this6.deviceKey, _this6.randomPassword, serverBValue, salt, function (errHkdf, hkdf) {\n // getPasswordAuthenticationKey callback start\n if (errHkdf) {\n return callback.onFailure(errHkdf);\n }\n\n var dateNow = dateHelper.getNowString();\n var concatBuffer = Buffer.concat([Buffer.from(_this6.deviceGroupKey, 'utf8'), Buffer.from(_this6.deviceKey, 'utf8'), Buffer.from(challengeParameters.SECRET_BLOCK, 'base64'), Buffer.from(dateNow, 'utf8')]);\n var awsCryptoHash = new Sha256(hkdf);\n awsCryptoHash.update(concatBuffer);\n var resultFromAWSCrypto = awsCryptoHash.digestSync();\n var signatureString = Buffer.from(resultFromAWSCrypto).toString('base64');\n var challengeResponses = {};\n challengeResponses.USERNAME = _this6.username;\n challengeResponses.PASSWORD_CLAIM_SECRET_BLOCK = challengeParameters.SECRET_BLOCK;\n challengeResponses.TIMESTAMP = dateNow;\n challengeResponses.PASSWORD_CLAIM_SIGNATURE = signatureString;\n challengeResponses.DEVICE_KEY = _this6.deviceKey;\n var jsonReqResp = {\n ChallengeName: 'DEVICE_PASSWORD_VERIFIER',\n ClientId: _this6.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: data.Session\n };\n\n if (_this6.getUserContextData()) {\n jsonReqResp.UserContextData = _this6.getUserContextData();\n }\n\n _this6.client.request('RespondToAuthChallenge', jsonReqResp, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n\n _this6.signInUserSession = _this6.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n\n _this6.cacheTokens();\n\n return callback.onSuccess(_this6.signInUserSession);\n });\n\n return undefined; // getPasswordAuthenticationKey callback end\n });\n return undefined;\n }); // getLargeAValue callback end\n\n });\n }\n /**\n * This is used for a certain user to confirm the registration by using a confirmation code\n * @param {string} confirmationCode Code entered by user.\n * @param {bool} forceAliasCreation Allow migrating from an existing email / phone number.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.confirmRegistration = function confirmRegistration(confirmationCode, forceAliasCreation, callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n ConfirmationCode: confirmationCode,\n Username: this.username,\n ForceAliasCreation: forceAliasCreation,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('ConfirmSignUp', jsonReq, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n }\n /**\n * This is used by the user once he has the responses to a custom challenge\n * @param {string} answerChallenge The custom challenge answer.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {customChallenge} callback.customChallenge\n * Custom challenge response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.sendCustomChallengeAnswer = function sendCustomChallengeAnswer(answerChallenge, callback, clientMetadata) {\n var _this7 = this;\n\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.ANSWER = answerChallenge;\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolName());\n this.getCachedDeviceKeyAndPassword();\n\n if (this.deviceKey != null) {\n challengeResponses.DEVICE_KEY = this.deviceKey;\n }\n\n var jsonReq = {\n ChallengeName: 'CUSTOM_CHALLENGE',\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return _this7.authenticateUserInternal(data, authenticationHelper, callback);\n });\n }\n /**\n * This is used by the user once he has an MFA code\n * @param {string} confirmationCode The MFA code entered by the user.\n * @param {object} callback Result callback map.\n * @param {string} mfaType The mfa we are replying to.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.sendMFACode = function sendMFACode(confirmationCode, callback, mfaType, clientMetadata) {\n var _this8 = this;\n\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.SMS_MFA_CODE = confirmationCode;\n var mfaTypeSelection = mfaType || 'SMS_MFA';\n\n if (mfaTypeSelection === 'SOFTWARE_TOKEN_MFA') {\n challengeResponses.SOFTWARE_TOKEN_MFA_CODE = confirmationCode;\n }\n\n if (this.deviceKey != null) {\n challengeResponses.DEVICE_KEY = this.deviceKey;\n }\n\n var jsonReq = {\n ChallengeName: mfaTypeSelection,\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, dataAuthenticate) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeName = dataAuthenticate.ChallengeName;\n\n if (challengeName === 'DEVICE_SRP_AUTH') {\n _this8.getDeviceResponse(callback);\n\n return undefined;\n }\n\n _this8.signInUserSession = _this8.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n\n _this8.cacheTokens();\n\n if (dataAuthenticate.AuthenticationResult.NewDeviceMetadata == null) {\n return callback.onSuccess(_this8.signInUserSession);\n }\n\n var authenticationHelper = new AuthenticationHelper(_this8.pool.getUserPoolName());\n authenticationHelper.generateHashDevice(dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey, dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey, function (errGenHash) {\n if (errGenHash) {\n return callback.onFailure(errGenHash);\n }\n\n var deviceSecretVerifierConfig = {\n Salt: Buffer.from(authenticationHelper.getSaltDevices(), 'hex').toString('base64'),\n PasswordVerifier: Buffer.from(authenticationHelper.getVerifierDevices(), 'hex').toString('base64')\n };\n _this8.verifierDevices = deviceSecretVerifierConfig.PasswordVerifier;\n _this8.deviceGroupKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey;\n _this8.randomPassword = authenticationHelper.getRandomPassword();\n\n _this8.client.request('ConfirmDevice', {\n DeviceKey: dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey,\n AccessToken: _this8.signInUserSession.getAccessToken().getJwtToken(),\n DeviceSecretVerifierConfig: deviceSecretVerifierConfig,\n DeviceName: userAgent\n }, function (errConfirm, dataConfirm) {\n if (errConfirm) {\n return callback.onFailure(errConfirm);\n }\n\n _this8.deviceKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey;\n\n _this8.cacheDeviceKeyAndPassword();\n\n if (dataConfirm.UserConfirmationNecessary === true) {\n return callback.onSuccess(_this8.signInUserSession, dataConfirm.UserConfirmationNecessary);\n }\n\n return callback.onSuccess(_this8.signInUserSession);\n });\n\n return undefined;\n });\n return undefined;\n });\n }\n /**\n * This is used by an authenticated user to change the current password\n * @param {string} oldUserPassword The current password.\n * @param {string} newUserPassword The requested new password.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.changePassword = function changePassword(oldUserPassword, newUserPassword, callback, clientMetadata) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('ChangePassword', {\n PreviousPassword: oldUserPassword,\n ProposedPassword: newUserPassword,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to enable MFA for itself\n * @deprecated\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.enableMFA = function enableMFA(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n var mfaOptions = [];\n var mfaEnabled = {\n DeliveryMedium: 'SMS',\n AttributeName: 'phone_number'\n };\n mfaOptions.push(mfaEnabled);\n this.client.request('SetUserSettings', {\n MFAOptions: mfaOptions,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to enable MFA for itself\n * @param {IMfaSettings} smsMfaSettings the sms mfa settings\n * @param {IMFASettings} softwareTokenMfaSettings the software token mfa settings\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.setUserMfaPreference = function setUserMfaPreference(smsMfaSettings, softwareTokenMfaSettings, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('SetUserMFAPreference', {\n SMSMfaSettings: smsMfaSettings,\n SoftwareTokenMfaSettings: softwareTokenMfaSettings,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to disable MFA for itself\n * @deprecated\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.disableMFA = function disableMFA(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n var mfaOptions = [];\n this.client.request('SetUserSettings', {\n MFAOptions: mfaOptions,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to delete itself\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.deleteUser = function deleteUser(callback, clientMetadata) {\n var _this9 = this;\n\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('DeleteUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n _this9.clearCachedUser();\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * @typedef {CognitoUserAttribute | { Name:string, Value:string }} AttributeArg\n */\n\n /**\n * This is used by an authenticated user to change a list of attributes\n * @param {AttributeArg[]} attributes A list of the new user attributes.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.updateAttributes = function updateAttributes(attributes, callback, clientMetadata) {\n var _this10 = this;\n\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('UpdateUserAttributes', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n UserAttributes: attributes,\n ClientMetadata: clientMetadata\n }, function (err, result) {\n if (err) {\n return callback(err, null);\n } // update cached user\n\n\n return _this10.getUserData(function () {\n return callback(null, 'SUCCESS', result);\n }, {\n bypassCache: true\n });\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to get a list of attributes\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.getUserAttributes = function getUserAttributes(callback) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, userData) {\n if (err) {\n return callback(err, null);\n }\n\n var attributeList = [];\n\n for (var i = 0; i < userData.UserAttributes.length; i++) {\n var attribute = {\n Name: userData.UserAttributes[i].Name,\n Value: userData.UserAttributes[i].Value\n };\n var userAttribute = new CognitoUserAttribute(attribute);\n attributeList.push(userAttribute);\n }\n\n return callback(null, attributeList);\n });\n return undefined;\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 {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.getMFAOptions = function getMFAOptions(callback) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, userData) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, userData.MFAOptions);\n });\n return undefined;\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.createGetUserRequest = function createGetUserRequest() {\n return this.client.promisifyRequest('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n });\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.refreshSessionIfPossible = function refreshSessionIfPossible(options) {\n var _this11 = this;\n\n if (options === void 0) {\n options = {};\n } // best effort, if not possible\n\n\n return new Promise(function (resolve) {\n var refresh = _this11.signInUserSession.getRefreshToken();\n\n if (refresh && refresh.getToken()) {\n _this11.refreshSession(refresh, resolve, options.clientMetadata);\n } else {\n resolve();\n }\n });\n }\n /**\n * @typedef {Object} GetUserDataOptions\n * @property {boolean} bypassCache - force getting data from Cognito service\n * @property {Record} clientMetadata - clientMetadata for getSession\n */\n\n /**\n * This is used by an authenticated users to get the userData\n * @param {nodeCallback} callback Called on success or error.\n * @param {GetUserDataOptions} params\n * @returns {void}\n */\n ;\n\n _proto.getUserData = function getUserData(callback, params) {\n var _this12 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.clearCachedUserData();\n return callback(new Error('User is not authenticated'), null);\n }\n\n var userData = this.getUserDataFromCache();\n\n if (!userData) {\n this.fetchUserData().then(function (data) {\n callback(null, data);\n })[\"catch\"](callback);\n return;\n }\n\n if (this.isFetchUserDataAndTokenRequired(params)) {\n this.fetchUserData().then(function (data) {\n return _this12.refreshSessionIfPossible(params).then(function () {\n return data;\n });\n }).then(function (data) {\n return callback(null, data);\n })[\"catch\"](callback);\n return;\n }\n\n try {\n callback(null, JSON.parse(userData));\n return;\n } catch (err) {\n this.clearCachedUserData();\n callback(err, null);\n return;\n }\n }\n /**\n *\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.getUserDataFromCache = function getUserDataFromCache() {\n var userData = this.storage.getItem(this.userDataKey);\n return userData;\n }\n /**\n *\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.isFetchUserDataAndTokenRequired = function isFetchUserDataAndTokenRequired(params) {\n var _ref = params || {},\n _ref$bypassCache = _ref.bypassCache,\n bypassCache = _ref$bypassCache === void 0 ? false : _ref$bypassCache;\n\n return bypassCache;\n }\n /**\n *\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.fetchUserData = function fetchUserData() {\n var _this13 = this;\n\n return this.createGetUserRequest().then(function (data) {\n _this13.cacheUserData(data);\n\n return data;\n });\n }\n /**\n * This is used by an authenticated user to delete a list of attributes\n * @param {string[]} attributeList Names of the attributes to delete.\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.deleteAttributes = function deleteAttributes(attributeList, callback) {\n var _this14 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('DeleteUserAttributes', {\n UserAttributeNames: attributeList,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n } // update cached user\n\n\n return _this14.getUserData(function () {\n return callback(null, 'SUCCESS');\n }, {\n bypassCache: true\n });\n });\n return undefined;\n }\n /**\n * This is used by a user to resend a confirmation code\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.resendConfirmationCode = function resendConfirmationCode(callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ClientMetadata: clientMetadata\n };\n this.client.request('ResendConfirmationCode', jsonReq, function (err, result) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, result);\n });\n }\n /**\n * @typedef {Object} GetSessionOptions\n * @property {Record} clientMetadata - clientMetadata for getSession\n */\n\n /**\n * This is used to get a session, either from the session object\n * or from the local storage, or by using a refresh token\n *\n * @param {nodeCallback} callback Called on success or error.\n * @param {GetSessionOptions} options\n * @returns {void}\n */\n ;\n\n _proto.getSession = function getSession(callback, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (this.username == null) {\n return callback(new Error('Username is null. Cannot retrieve a new session'), null);\n }\n\n if (this.signInUserSession != null && this.signInUserSession.isValid()) {\n return callback(null, this.signInUserSession);\n }\n\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var idTokenKey = keyPrefix + \".idToken\";\n var accessTokenKey = keyPrefix + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".refreshToken\";\n var clockDriftKey = keyPrefix + \".clockDrift\";\n\n if (this.storage.getItem(idTokenKey)) {\n var idToken = new CognitoIdToken({\n IdToken: this.storage.getItem(idTokenKey)\n });\n var accessToken = new CognitoAccessToken({\n AccessToken: this.storage.getItem(accessTokenKey)\n });\n var refreshToken = new CognitoRefreshToken({\n RefreshToken: this.storage.getItem(refreshTokenKey)\n });\n var clockDrift = parseInt(this.storage.getItem(clockDriftKey), 0) || 0;\n var sessionData = {\n IdToken: idToken,\n AccessToken: accessToken,\n RefreshToken: refreshToken,\n ClockDrift: clockDrift\n };\n var cachedSession = new CognitoUserSession(sessionData);\n\n if (cachedSession.isValid()) {\n this.signInUserSession = cachedSession;\n return callback(null, this.signInUserSession);\n }\n\n if (!refreshToken.getToken()) {\n return callback(new Error('Cannot retrieve a new session. Please authenticate.'), null);\n }\n\n this.refreshSession(refreshToken, callback, options.clientMetadata);\n } else {\n callback(new Error('Local storage is missing an ID Token, Please authenticate'), null);\n }\n\n return undefined;\n }\n /**\n * This uses the refreshToken to retrieve a new session\n * @param {CognitoRefreshToken} refreshToken A previous session's refresh token.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.refreshSession = function refreshSession(refreshToken, callback, clientMetadata) {\n var _this15 = this;\n\n var wrappedCallback = this.pool.wrapRefreshSessionCallback ? this.pool.wrapRefreshSessionCallback(callback) : callback;\n var authParameters = {};\n authParameters.REFRESH_TOKEN = refreshToken.getToken();\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n\n if (this.storage.getItem(lastUserKey)) {\n this.username = this.storage.getItem(lastUserKey);\n var deviceKeyKey = keyPrefix + \".\" + this.username + \".deviceKey\";\n this.deviceKey = this.storage.getItem(deviceKeyKey);\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n AuthFlow: 'REFRESH_TOKEN_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('InitiateAuth', jsonReq, function (err, authResult) {\n if (err) {\n if (err.code === 'NotAuthorizedException') {\n _this15.clearCachedUser();\n }\n\n return wrappedCallback(err, null);\n }\n\n if (authResult) {\n var authenticationResult = authResult.AuthenticationResult;\n\n if (!Object.prototype.hasOwnProperty.call(authenticationResult, 'RefreshToken')) {\n authenticationResult.RefreshToken = refreshToken.getToken();\n }\n\n _this15.signInUserSession = _this15.getCognitoUserSession(authenticationResult);\n\n _this15.cacheTokens();\n\n return wrappedCallback(null, _this15.signInUserSession);\n }\n\n return undefined;\n });\n }\n /**\n * This is used to save the session tokens to local storage\n * @returns {void}\n */\n ;\n\n _proto.cacheTokens = function cacheTokens() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var idTokenKey = keyPrefix + \".\" + this.username + \".idToken\";\n var accessTokenKey = keyPrefix + \".\" + this.username + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".\" + this.username + \".refreshToken\";\n var clockDriftKey = keyPrefix + \".\" + this.username + \".clockDrift\";\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n this.storage.setItem(idTokenKey, this.signInUserSession.getIdToken().getJwtToken());\n this.storage.setItem(accessTokenKey, this.signInUserSession.getAccessToken().getJwtToken());\n this.storage.setItem(refreshTokenKey, this.signInUserSession.getRefreshToken().getToken());\n this.storage.setItem(clockDriftKey, \"\" + this.signInUserSession.getClockDrift());\n this.storage.setItem(lastUserKey, this.username);\n }\n /**\n * This is to cache user data\n */\n ;\n\n _proto.cacheUserData = function cacheUserData(userData) {\n this.storage.setItem(this.userDataKey, JSON.stringify(userData));\n }\n /**\n * This is to remove cached user data\n */\n ;\n\n _proto.clearCachedUserData = function clearCachedUserData() {\n this.storage.removeItem(this.userDataKey);\n };\n\n _proto.clearCachedUser = function clearCachedUser() {\n this.clearCachedTokens();\n this.clearCachedUserData();\n }\n /**\n * This is used to cache the device key and device group and device password\n * @returns {void}\n */\n ;\n\n _proto.cacheDeviceKeyAndPassword = function cacheDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n this.storage.setItem(deviceKeyKey, this.deviceKey);\n this.storage.setItem(randomPasswordKey, this.randomPassword);\n this.storage.setItem(deviceGroupKeyKey, this.deviceGroupKey);\n }\n /**\n * This is used to get current device key and device group and device password\n * @returns {void}\n */\n ;\n\n _proto.getCachedDeviceKeyAndPassword = function getCachedDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n\n if (this.storage.getItem(deviceKeyKey)) {\n this.deviceKey = this.storage.getItem(deviceKeyKey);\n this.randomPassword = this.storage.getItem(randomPasswordKey);\n this.deviceGroupKey = this.storage.getItem(deviceGroupKeyKey);\n }\n }\n /**\n * This is used to clear the device key info from local storage\n * @returns {void}\n */\n ;\n\n _proto.clearCachedDeviceKeyAndPassword = function clearCachedDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n this.storage.removeItem(deviceKeyKey);\n this.storage.removeItem(randomPasswordKey);\n this.storage.removeItem(deviceGroupKeyKey);\n }\n /**\n * This is used to clear the session tokens from local storage\n * @returns {void}\n */\n ;\n\n _proto.clearCachedTokens = function clearCachedTokens() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var idTokenKey = keyPrefix + \".\" + this.username + \".idToken\";\n var accessTokenKey = keyPrefix + \".\" + this.username + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".\" + this.username + \".refreshToken\";\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n var clockDriftKey = keyPrefix + \".\" + this.username + \".clockDrift\";\n this.storage.removeItem(idTokenKey);\n this.storage.removeItem(accessTokenKey);\n this.storage.removeItem(refreshTokenKey);\n this.storage.removeItem(lastUserKey);\n this.storage.removeItem(clockDriftKey);\n }\n /**\n * This is used to build a user session from tokens retrieved in the authentication result\n * @param {object} authResult Successful auth response from server.\n * @returns {CognitoUserSession} The new user session.\n * @private\n */\n ;\n\n _proto.getCognitoUserSession = function getCognitoUserSession(authResult) {\n var idToken = new CognitoIdToken(authResult);\n var accessToken = new CognitoAccessToken(authResult);\n var refreshToken = new CognitoRefreshToken(authResult);\n var sessionData = {\n IdToken: idToken,\n AccessToken: accessToken,\n RefreshToken: refreshToken\n };\n return new CognitoUserSession(sessionData);\n }\n /**\n * This is used to initiate a forgot password request\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {inputVerificationCode?} callback.inputVerificationCode\n * Optional callback raised instead of onSuccess with response data.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.forgotPassword = function forgotPassword(callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('ForgotPassword', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n if (typeof callback.inputVerificationCode === 'function') {\n return callback.inputVerificationCode(data);\n }\n\n return callback.onSuccess(data);\n });\n }\n /**\n * This is used to confirm a new password using a confirmationCode\n * @param {string} confirmationCode Code entered by user.\n * @param {string} newPassword Confirm new password.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.confirmPassword = function confirmPassword(confirmationCode, newPassword, callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ConfirmationCode: confirmationCode,\n Password: newPassword,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('ConfirmForgotPassword', jsonReq, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n }\n /**\n * This is used to initiate an attribute confirmation request\n * @param {string} attributeName User attribute that needs confirmation.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {inputVerificationCode} callback.inputVerificationCode Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.getAttributeVerificationCode = function getAttributeVerificationCode(attributeName, callback, clientMetadata) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('GetUserAttributeVerificationCode', {\n AttributeName: attributeName,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n if (typeof callback.inputVerificationCode === 'function') {\n return callback.inputVerificationCode(data);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to confirm an attribute using a confirmation code\n * @param {string} attributeName Attribute being confirmed.\n * @param {string} confirmationCode Code entered by user.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.verifyAttribute = function verifyAttribute(attributeName, confirmationCode, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('VerifyUserAttribute', {\n AttributeName: attributeName,\n Code: confirmationCode,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to get the device information using the current device key\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<*>} callback.onSuccess Called on success with device data.\n * @returns {void}\n */\n ;\n\n _proto.getDevice = function getDevice(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('GetDevice', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess(data);\n });\n return undefined;\n }\n /**\n * This is used to forget a specific device\n * @param {string} deviceKey Device key.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.forgetSpecificDevice = function forgetSpecificDevice(deviceKey, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('ForgetDevice', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: deviceKey\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to forget the current device\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.forgetDevice = function forgetDevice(callback) {\n var _this16 = this;\n\n this.forgetSpecificDevice(this.deviceKey, {\n onFailure: callback.onFailure,\n onSuccess: function onSuccess(result) {\n _this16.deviceKey = null;\n _this16.deviceGroupKey = null;\n _this16.randomPassword = null;\n\n _this16.clearCachedDeviceKeyAndPassword();\n\n return callback.onSuccess(result);\n }\n });\n }\n /**\n * This is used to set the device status as remembered\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.setDeviceStatusRemembered = function setDeviceStatusRemembered(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('UpdateDeviceStatus', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey,\n DeviceRememberedStatus: 'remembered'\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to set the device status as not remembered\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.setDeviceStatusNotRemembered = function setDeviceStatusNotRemembered(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('UpdateDeviceStatus', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey,\n DeviceRememberedStatus: 'not_remembered'\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to list all devices for a user\n *\n * @param {int} limit the number of devices returned in a call\n * @param {string | null} paginationToken the pagination token in case any was returned before\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<*>} callback.onSuccess Called on success with device list.\n * @returns {void}\n */\n ;\n\n _proto.listDevices = function listDevices(limit, paginationToken, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n var requestParams = {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n Limit: limit\n };\n\n if (paginationToken) {\n requestParams.PaginationToken = paginationToken;\n }\n\n this.client.request('ListDevices', requestParams, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess(data);\n });\n return undefined;\n }\n /**\n * This is used to globally revoke all tokens issued to a user\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.globalSignOut = function globalSignOut(callback) {\n var _this17 = this;\n\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('GlobalSignOut', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this17.clearCachedUser();\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used for the user to signOut of the application and clear the cached tokens.\n * @returns {void}\n */\n ;\n\n _proto.signOut = function signOut(revokeTokenCallback) {\n var _this18 = this; // If tokens won't be revoked, we just clean the client data.\n\n\n if (!revokeTokenCallback || typeof revokeTokenCallback !== 'function') {\n this.cleanClientData();\n return;\n }\n\n this.getSession(function (error, _session) {\n if (error) {\n return revokeTokenCallback(error);\n }\n\n _this18.revokeTokens(function (err) {\n _this18.cleanClientData();\n\n revokeTokenCallback(err);\n });\n });\n };\n\n _proto.revokeTokens = function revokeTokens(revokeTokenCallback) {\n if (revokeTokenCallback === void 0) {\n revokeTokenCallback = function revokeTokenCallback() {};\n }\n\n if (typeof revokeTokenCallback !== 'function') {\n throw new Error('Invalid revokeTokenCallback. It should be a function.');\n }\n\n var tokensToBeRevoked = [];\n\n if (!this.signInUserSession) {\n var error = new Error('User is not authenticated');\n return revokeTokenCallback(error);\n }\n\n if (!this.signInUserSession.getAccessToken()) {\n var _error = new Error('No Access token available');\n\n return revokeTokenCallback(_error);\n }\n\n var refreshToken = this.signInUserSession.getRefreshToken().getToken();\n var accessToken = this.signInUserSession.getAccessToken();\n\n if (this.isSessionRevocable(accessToken)) {\n if (refreshToken) {\n return this.revokeToken({\n token: refreshToken,\n callback: revokeTokenCallback\n });\n }\n }\n\n revokeTokenCallback();\n };\n\n _proto.isSessionRevocable = function isSessionRevocable(token) {\n if (token && typeof token.decodePayload === 'function') {\n try {\n var _token$decodePayload = token.decodePayload(),\n origin_jti = _token$decodePayload.origin_jti;\n\n return !!origin_jti;\n } catch (err) {// Nothing to do, token doesnt have origin_jti claim\n }\n }\n\n return false;\n };\n\n _proto.cleanClientData = function cleanClientData() {\n this.signInUserSession = null;\n this.clearCachedUser();\n };\n\n _proto.revokeToken = function revokeToken(_ref2) {\n var token = _ref2.token,\n callback = _ref2.callback;\n this.client.requestWithRetry('RevokeToken', {\n Token: token,\n ClientId: this.pool.getClientId()\n }, function (err) {\n if (err) {\n return callback(err);\n }\n\n callback();\n });\n }\n /**\n * This is used by a user trying to select a given MFA\n * @param {string} answerChallenge the mfa the user wants\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.sendMFASelectionAnswer = function sendMFASelectionAnswer(answerChallenge, callback) {\n var _this19 = this;\n\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.ANSWER = answerChallenge;\n var jsonReq = {\n ChallengeName: 'SELECT_MFA_TYPE',\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this19.Session = data.Session;\n\n if (answerChallenge === 'SMS_MFA') {\n return callback.mfaRequired(data.ChallengeName, data.ChallengeParameters);\n }\n\n if (answerChallenge === 'SOFTWARE_TOKEN_MFA') {\n return callback.totpRequired(data.ChallengeName, data.ChallengeParameters);\n }\n\n return undefined;\n });\n }\n /**\n * This returns the user context data for advanced security feature.\n * @returns {string} the user context data from CognitoUserPool\n */\n ;\n\n _proto.getUserContextData = function getUserContextData() {\n var pool = this.pool;\n return pool.getUserContextData(this.username);\n }\n /**\n * This is used by an authenticated or a user trying to authenticate to associate a TOTP MFA\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.associateSoftwareToken = function associateSoftwareToken(callback) {\n var _this20 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.client.request('AssociateSoftwareToken', {\n Session: this.Session\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this20.Session = data.Session;\n return callback.associateSecretCode(data.SecretCode);\n });\n } else {\n this.client.request('AssociateSoftwareToken', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.associateSecretCode(data.SecretCode);\n });\n }\n }\n /**\n * This is used by an authenticated or a user trying to authenticate to verify a TOTP MFA\n * @param {string} totpCode The MFA code entered by the user.\n * @param {string} friendlyDeviceName The device name we are assigning to the device.\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.verifySoftwareToken = function verifySoftwareToken(totpCode, friendlyDeviceName, callback) {\n var _this21 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.client.request('VerifySoftwareToken', {\n Session: this.Session,\n UserCode: totpCode,\n FriendlyDeviceName: friendlyDeviceName\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this21.Session = data.Session;\n var challengeResponses = {};\n challengeResponses.USERNAME = _this21.username;\n var jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ClientId: _this21.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: _this21.Session\n };\n\n if (_this21.getUserContextData()) {\n jsonReq.UserContextData = _this21.getUserContextData();\n }\n\n _this21.client.request('RespondToAuthChallenge', jsonReq, function (errRespond, dataRespond) {\n if (errRespond) {\n return callback.onFailure(errRespond);\n }\n\n _this21.signInUserSession = _this21.getCognitoUserSession(dataRespond.AuthenticationResult);\n\n _this21.cacheTokens();\n\n return callback.onSuccess(_this21.signInUserSession);\n });\n\n return undefined;\n });\n } else {\n this.client.request('VerifySoftwareToken', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n UserCode: totpCode,\n FriendlyDeviceName: friendlyDeviceName\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess(data);\n });\n }\n };\n\n return CognitoUser;\n}();\n\nexport { CognitoUser as default };","import { getUserAgent } from \"./Platform\"; // constructor\n\nfunction UserAgent() {} // public\n\n\nUserAgent.prototype.userAgent = getUserAgent();\nexport var appendToCognitoUserAgent = function appendToCognitoUserAgent(content) {\n if (!content) {\n return;\n }\n\n if (UserAgent.prototype.userAgent && !UserAgent.prototype.userAgent.includes(content)) {\n UserAgent.prototype.userAgent = UserAgent.prototype.userAgent.concat(' ', content);\n }\n\n if (!UserAgent.prototype.userAgent || UserAgent.prototype.userAgent === '') {\n UserAgent.prototype.userAgent = content;\n }\n}; // class for defining the amzn user-agent\n\nexport default UserAgent;","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nimport 'isomorphic-unfetch';\nimport UserAgent from './UserAgent';\n\nvar CognitoError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(CognitoError, _Error);\n\n function CognitoError(message, code, name, statusCode) {\n var _this;\n\n _this = _Error.call(this, message) || this;\n _this.code = code;\n _this.name = name;\n _this.statusCode = statusCode;\n return _this;\n }\n\n return CognitoError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n/** @class */\n\n\nvar Client = /*#__PURE__*/function () {\n /**\n * Constructs a new AWS Cognito Identity Provider client object\n * @param {string} region AWS region\n * @param {string} endpoint endpoint\n * @param {object} fetchOptions options for fetch API (only credentials is supported)\n */\n function Client(region, endpoint, fetchOptions) {\n this.endpoint = endpoint || \"https://cognito-idp.\" + region + \".amazonaws.com/\";\n\n var _ref = fetchOptions || {},\n credentials = _ref.credentials;\n\n this.fetchOptions = credentials ? {\n credentials: credentials\n } : {};\n }\n /**\n * Makes an unauthenticated request on AWS Cognito Identity Provider API\n * using fetch\n * @param {string} operation API operation\n * @param {object} params Input parameters\n * @returns Promise\n */\n\n\n var _proto = Client.prototype;\n\n _proto.promisifyRequest = function promisifyRequest(operation, params) {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2.request(operation, params, function (err, data) {\n if (err) {\n reject(new CognitoError(err.message, err.code, err.name, err.statusCode));\n } else {\n resolve(data);\n }\n });\n });\n };\n\n _proto.requestWithRetry = function requestWithRetry(operation, params, callback) {\n var _this3 = this;\n\n var MAX_DELAY_IN_MILLIS = 5 * 1000;\n jitteredExponentialRetry(function (p) {\n return new Promise(function (res, rej) {\n _this3.request(operation, p, function (error, result) {\n if (error) {\n rej(error);\n } else {\n res(result);\n }\n });\n });\n }, [params], MAX_DELAY_IN_MILLIS).then(function (result) {\n return callback(null, result);\n })[\"catch\"](function (error) {\n return callback(error);\n });\n }\n /**\n * Makes an unauthenticated request on AWS Cognito Identity Provider API\n * using fetch\n * @param {string} operation API operation\n * @param {object} params Input parameters\n * @param {function} callback Callback called when a response is returned\n * @returns {void}\n */\n ;\n\n _proto.request = function request(operation, params, callback) {\n var headers = {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': \"AWSCognitoIdentityProviderService.\" + operation,\n 'X-Amz-User-Agent': UserAgent.prototype.userAgent,\n 'Cache-Control': 'no-store'\n };\n var options = Object.assign({}, this.fetchOptions, {\n headers: headers,\n method: 'POST',\n mode: 'cors',\n body: JSON.stringify(params)\n });\n var response;\n var responseJsonData;\n fetch(this.endpoint, options).then(function (resp) {\n response = resp;\n return resp;\n }, function (err) {\n // If error happens here, the request failed\n // if it is TypeError throw network error\n if (err instanceof TypeError) {\n throw new Error('Network error');\n }\n\n throw err;\n }).then(function (resp) {\n return resp.json()[\"catch\"](function () {\n return {};\n });\n }).then(function (data) {\n // return parsed body stream\n if (response.ok) return callback(null, data);\n responseJsonData = data; // Taken from aws-sdk-js/lib/protocol/json.js\n // eslint-disable-next-line no-underscore-dangle\n\n var code = (data.__type || data.code).split('#').pop();\n var error = new Error(data.message || data.Message || null);\n error.name = code;\n error.code = code;\n return callback(error);\n })[\"catch\"](function (err) {\n // first check if we have a service error\n if (response && response.headers && response.headers.get('x-amzn-errortype')) {\n try {\n var code = response.headers.get('x-amzn-errortype').split(':')[0];\n var error = new Error(response.status ? response.status.toString() : null);\n error.code = code;\n error.name = code;\n error.statusCode = response.status;\n return callback(error);\n } catch (ex) {\n return callback(err);\n } // otherwise check if error is Network error\n\n } else if (err instanceof Error && err.message === 'Network error') {\n err.code = 'NetworkError';\n }\n\n return callback(err);\n });\n };\n\n return Client;\n}();\n\nexport { Client as default };\nvar logger = {\n debug: function debug() {// Intentionally blank. This package doesn't have logging\n }\n};\n/**\n * For now, all errors are retryable.\n */\n\nvar NonRetryableError = /*#__PURE__*/function (_Error2) {\n _inheritsLoose(NonRetryableError, _Error2);\n\n function NonRetryableError(message) {\n var _this4;\n\n _this4 = _Error2.call(this, message) || this;\n _this4.nonRetryable = true;\n return _this4;\n }\n\n return NonRetryableError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nvar isNonRetryableError = function isNonRetryableError(obj) {\n var key = 'nonRetryable';\n return obj && obj[key];\n};\n\nfunction retry(functionToRetry, args, delayFn, attempt) {\n if (attempt === void 0) {\n attempt = 1;\n }\n\n if (typeof functionToRetry !== 'function') {\n throw Error('functionToRetry must be a function');\n }\n\n logger.debug(functionToRetry.name + \" attempt #\" + attempt + \" with args: \" + JSON.stringify(args));\n return functionToRetry.apply(void 0, args)[\"catch\"](function (err) {\n logger.debug(\"error on \" + functionToRetry.name, err);\n\n if (isNonRetryableError(err)) {\n logger.debug(functionToRetry.name + \" non retryable error\", err);\n throw err;\n }\n\n var retryIn = delayFn(attempt, args, err);\n logger.debug(functionToRetry.name + \" retrying in \" + retryIn + \" ms\");\n\n if (retryIn !== false) {\n return new Promise(function (res) {\n return setTimeout(res, retryIn);\n }).then(function () {\n return retry(functionToRetry, args, delayFn, attempt + 1);\n });\n } else {\n throw err;\n }\n });\n}\n\nfunction jitteredBackoff(maxDelayMs) {\n var BASE_TIME_MS = 100;\n var JITTER_FACTOR = 100;\n return function (attempt) {\n var delay = Math.pow(2, attempt) * BASE_TIME_MS + JITTER_FACTOR * Math.random();\n return delay > maxDelayMs ? false : delay;\n };\n}\n\nvar MAX_DELAY_MS = 5 * 60 * 1000;\n\nfunction jitteredExponentialRetry(functionToRetry, args, maxDelayMs) {\n if (maxDelayMs === void 0) {\n maxDelayMs = MAX_DELAY_MS;\n }\n\n return retry(functionToRetry, args, jitteredBackoff(maxDelayMs));\n}","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport Client from './Client';\nimport CognitoUser from './CognitoUser';\nimport StorageHelper from './StorageHelper';\nvar USER_POOL_ID_MAX_LENGTH = 55;\n/** @class */\n\nvar CognitoUserPool = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserPool object\n * @param {object} data Creation options.\n * @param {string} data.UserPoolId Cognito user pool id.\n * @param {string} data.ClientId User pool application client id.\n * @param {string} data.endpoint Optional custom service endpoint.\n * @param {object} data.fetchOptions Optional options for fetch API.\n * (only credentials option is supported)\n * @param {object} data.Storage Optional storage object.\n * @param {boolean} data.AdvancedSecurityDataCollectionFlag Optional:\n * boolean flag indicating if the data collection is enabled\n * to support cognito advanced security features. By default, this\n * flag is set to true.\n */\n function CognitoUserPool(data, wrapRefreshSessionCallback) {\n var _ref = data || {},\n UserPoolId = _ref.UserPoolId,\n ClientId = _ref.ClientId,\n endpoint = _ref.endpoint,\n fetchOptions = _ref.fetchOptions,\n AdvancedSecurityDataCollectionFlag = _ref.AdvancedSecurityDataCollectionFlag;\n\n if (!UserPoolId || !ClientId) {\n throw new Error('Both UserPoolId and ClientId are required.');\n }\n\n if (UserPoolId.length > USER_POOL_ID_MAX_LENGTH || !/^[\\w-]+_[0-9a-zA-Z]+$/.test(UserPoolId)) {\n throw new Error('Invalid UserPoolId format.');\n }\n\n var region = UserPoolId.split('_')[0];\n this.userPoolId = UserPoolId;\n this.clientId = ClientId;\n this.client = new Client(region, endpoint, fetchOptions);\n /**\n * By default, AdvancedSecurityDataCollectionFlag is set to true,\n * if no input value is provided.\n */\n\n this.advancedSecurityDataCollectionFlag = AdvancedSecurityDataCollectionFlag !== false;\n this.storage = data.Storage || new StorageHelper().getStorage();\n\n if (wrapRefreshSessionCallback) {\n this.wrapRefreshSessionCallback = wrapRefreshSessionCallback;\n }\n }\n /**\n * @returns {string} the user pool id\n */\n\n\n var _proto = CognitoUserPool.prototype;\n\n _proto.getUserPoolId = function getUserPoolId() {\n return this.userPoolId;\n }\n /**\n * @returns {string} the user pool name\n */\n ;\n\n _proto.getUserPoolName = function getUserPoolName() {\n return this.getUserPoolId().split('_')[1];\n }\n /**\n * @returns {string} the client id\n */\n ;\n\n _proto.getClientId = function getClientId() {\n return this.clientId;\n }\n /**\n * @typedef {object} SignUpResult\n * @property {CognitoUser} user New user.\n * @property {bool} userConfirmed If the user is already confirmed.\n */\n\n /**\n * method for signing up a user\n * @param {string} username User's username.\n * @param {string} password Plain-text initial password entered by user.\n * @param {(AttributeArg[])=} userAttributes New user attributes.\n * @param {(AttributeArg[])=} validationData Application metadata.\n * @param {(AttributeArg[])=} clientMetadata Client metadata.\n * @param {nodeCallback} callback Called on error or with the new user.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.signUp = function signUp(username, password, userAttributes, validationData, callback, clientMetadata) {\n var _this = this;\n\n var jsonReq = {\n ClientId: this.clientId,\n Username: username,\n Password: password,\n UserAttributes: userAttributes,\n ValidationData: validationData,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData(username)) {\n jsonReq.UserContextData = this.getUserContextData(username);\n }\n\n this.client.request('SignUp', jsonReq, function (err, data) {\n if (err) {\n return callback(err, null);\n }\n\n var cognitoUser = {\n Username: username,\n Pool: _this,\n Storage: _this.storage\n };\n var returnData = {\n user: new CognitoUser(cognitoUser),\n userConfirmed: data.UserConfirmed,\n userSub: data.UserSub,\n codeDeliveryDetails: data.CodeDeliveryDetails\n };\n return callback(null, returnData);\n });\n }\n /**\n * method for getting the current user of the application from the local storage\n *\n * @returns {CognitoUser} the user retrieved from storage\n */\n ;\n\n _proto.getCurrentUser = function getCurrentUser() {\n var lastUserKey = \"CognitoIdentityServiceProvider.\" + this.clientId + \".LastAuthUser\";\n var lastAuthUser = this.storage.getItem(lastUserKey);\n\n if (lastAuthUser) {\n var cognitoUser = {\n Username: lastAuthUser,\n Pool: this,\n Storage: this.storage\n };\n return new CognitoUser(cognitoUser);\n }\n\n return null;\n }\n /**\n * This method returns the encoded data string used for cognito advanced security feature.\n * This would be generated only when developer has included the JS used for collecting the\n * data on their client. Please refer to documentation to know more about using AdvancedSecurity\n * features\n * @param {string} username the username for the context data\n * @returns {string} the user context data\n **/\n ;\n\n _proto.getUserContextData = function getUserContextData(username) {\n if (typeof AmazonCognitoAdvancedSecurityData === 'undefined') {\n return undefined;\n }\n /* eslint-disable */\n\n\n var amazonCognitoAdvancedSecurityDataConst = AmazonCognitoAdvancedSecurityData;\n /* eslint-enable */\n\n if (this.advancedSecurityDataCollectionFlag) {\n var advancedSecurityData = amazonCognitoAdvancedSecurityDataConst.getData(username, this.userPoolId, this.clientId);\n\n if (advancedSecurityData) {\n var userContextData = {\n EncodedData: advancedSecurityData\n };\n return userContextData;\n }\n }\n\n return {};\n };\n\n return CognitoUserPool;\n}();\n\nexport { CognitoUserPool as default };","\"use strict\"; // Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertToBuffer = void 0;\n\nvar util_utf8_browser_1 = require(\"@aws-sdk/util-utf8-browser\"); // Quick polyfill\n\n\nvar fromUtf8 = typeof Buffer !== \"undefined\" && Buffer.from ? function (input) {\n return Buffer.from(input, \"utf8\");\n} : util_utf8_browser_1.fromUtf8;\n\nfunction convertToBuffer(data) {\n // Already a Uint8, do nothing\n if (data instanceof Uint8Array) return data;\n\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n\n return new Uint8Array(data);\n}\n\nexports.convertToBuffer = convertToBuffer;","const MESSAGE = {\n NO_MODIFICATION: \"03386C00-B54D-11EA-B900-E989F81A2C16\",\n SUCCESSFULL_REGISTERATION_LOGIN_MESSAGE: \"A464B5C0-F056-11EC-A99B-F5ABDEDBC723\",\n AGENCY_USER_LOGIN_ERR_MESSAGE: \"13CB8120-F749-11EC-A99B-F5ABDEDBC723\",\n EMAIL_ALREADY_REGISTERED: \"A7E3C140-1951-11ED-80A8-5F44FEF3BFB4\",\n USER_DOES_NOT_EXIST: \"FB4C2130-1BE3-11ED-9819-B5188091EA18\",\n PASSWORD_DO_NOT_MATCH: \"C3B31300-43E8-11ED-9721-A502960E061B\",\n OTP_SENT_TO_MAIL: \"ED4BFF70-43F6-11ED-B575-C99D12EF6BD8\",\n OTP_SENT_TO_MOBILE_NUMBER: \"C16F0E10-43F6-11ED-9721-A502960E061B\",\n PASSWORD_RESET_SUCCESS_MESSAGE: \"A339E850-447F-11ED-9721-A502960E061B\",\n VALIDATION_EXCEPTION: \"71F3CE70-A641-11EA-85A7-55CDAACD69F6\",\n PASSWORD_POLICY_MESSAGE: \"1FA8B270-5436-11ED-B575-C99D12EF6BD8\",\n USER_IS_NOT_CONFIRMED: \"F76FAFC0-55CA-11ED-AB2E-5926861ADE8F\",\n TEMPORARY_PASSWORD_RESEND_MESSAGE: \"7D329270-4E06-11ED-9721-A502960E061B\",\n CONTACT_US_SUCCESS_MESSAGE: \"3F78B510-720D-11ED-8ED7-11AAF2E46724\",\n RESTRICT_USERPORTAL_USER_LOGIN: \"4E8D1F20-AD25-11ED-B5F0-2B1B3058D408\",\n INVALID_EMAIL_MESSAGE: \"94C3C9C0-B01E-11ED-B5F0-2B1B3058D408\",\n INVALID_MOBILE_NUMBER_MESSAGE: \"F9945C20-B02D-11ED-B5F0-2B1B3058D408\",\n INCORRECT_USERNAME_OR_PASSWORD: \"63646060-B294-11ED-B5F0-2B1B3058D408\",\n NEWS_LETTER_SUBSCRIBTION_MESSAGE: \"2E384500-E264-11ED-A969-85637CEE08B5\"\n}\n\nmodule.exports = {\n MESSAGE\n}","import axios from 'axios';\n\nlet languageServiceUrl = process.env.GATSBY_LANGUAGE_SERVICE_URL;\n\nconst getLanguageGuid = async (code) => {\n let apiURL = `${languageServiceUrl}/languageService/language`;\n\n let response = await axios.get(apiURL);\n let languageArr = response.data.dataObject;\n\n let languageObj = languageArr.find((obj) => {\n return obj.Code.toUpperCase() === code.toUpperCase();\n });\n\n return languageObj.LanguageId.toUpperCase();\n}\n\nconst getAllLanguages = async (code) => {\n let apiURL = `${languageServiceUrl}/languageService/language`;\n\n let response = await axios.get(apiURL);\n let languageArr = response.data.dataObject;\n\n return languageArr;\n}\n\nconst getWebsiteLanguages = async (code) => {\n let apiURL = `${languageServiceUrl}/languageService/websiteLanguage`;\n let response = await axios.get(apiURL);\n return response.data.dataObject;\n}\n\nconst getMessages = async (messageId, languageCode) => {\n let apiURL = `${languageServiceUrl}/languageService/responseEngine`;\n let queryParam = {\n params: {\n messageId: messageId,\n languageCode: languageCode\n }\n }\n\n let response = await axios.get(apiURL, queryParam);\n let message = response.data.message;\n return message;\n}\n\nconst getValueMessages = async (messageId, languageCode, values) => {\n let apiURL = `${languageServiceUrl}/languageService/responseEngine`;\n let queryParam = {\n params: {\n messageId: messageId,\n languageCode: languageCode,\n values: values\n }\n }\n\n let response = await axios.get(apiURL, queryParam);\n let message = response.data.message;\n return message;\n}\n\nconst getFieldConsoleMessages = async (messageId, languageCode, fieldsConsole) => {\n let apiURL = `${languageServiceUrl}/languageService/responseEngine`;\n let queryParam = {\n params: {\n messageId: messageId,\n languageCode: languageCode,\n fieldsConsole: JSON.stringify(fieldsConsole)\n }\n }\n\n let response = await axios.get(apiURL, queryParam);\n let message = response.data.message;\n return message;\n}\n\n\nexport {\n getLanguageGuid,\n getAllLanguages,\n getMessages,\n getValueMessages,\n getFieldConsoleMessages,\n getWebsiteLanguages\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar tslib_1 = require(\"tslib\");\n\n(0, tslib_1.__exportStar)(require(\"./jsSha256\"), exports);","\"use strict\"; // Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.numToUint8 = void 0;\n\nfunction numToUint8(num) {\n return new Uint8Array([(num & 0xff000000) >> 24, (num & 0x00ff0000) >> 16, (num & 0x0000ff00) >> 8, num & 0x000000ff]);\n}\n\nexports.numToUint8 = numToUint8;","\"use strict\"; // Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.uint32ArrayFrom = exports.numToUint8 = exports.isEmptyData = exports.convertToBuffer = void 0;\n\nvar convertToBuffer_1 = require(\"./convertToBuffer\");\n\nObject.defineProperty(exports, \"convertToBuffer\", {\n enumerable: true,\n get: function get() {\n return convertToBuffer_1.convertToBuffer;\n }\n});\n\nvar isEmptyData_1 = require(\"./isEmptyData\");\n\nObject.defineProperty(exports, \"isEmptyData\", {\n enumerable: true,\n get: function get() {\n return isEmptyData_1.isEmptyData;\n }\n});\n\nvar numToUint8_1 = require(\"./numToUint8\");\n\nObject.defineProperty(exports, \"numToUint8\", {\n enumerable: true,\n get: function get() {\n return numToUint8_1.numToUint8;\n }\n});\n\nvar uint32ArrayFrom_1 = require(\"./uint32ArrayFrom\");\n\nObject.defineProperty(exports, \"uint32ArrayFrom\", {\n enumerable: true,\n get: function get() {\n return uint32ArrayFrom_1.uint32ArrayFrom;\n }\n});","\"use strict\"; // Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.uint32ArrayFrom = void 0; // IE 11 does not support Array.from, so we do it manually\n\nfunction uint32ArrayFrom(a_lookUpTable) {\n if (!Array.from) {\n var return_array = new Uint32Array(a_lookUpTable.length);\n var a_index = 0;\n\n while (a_index < a_lookUpTable.length) {\n return_array[a_index] = a_lookUpTable[a_index];\n }\n\n return return_array;\n }\n\n return Uint32Array.from(a_lookUpTable);\n}\n\nexports.uint32ArrayFrom = uint32ArrayFrom;","\"use strict\"; // Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isEmptyData = void 0;\n\nfunction isEmptyData(data) {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n\nexports.isEmptyData = isEmptyData;"],"sourceRoot":""}