{"version":3,"sources":["webpack:///./node_modules/@aws-amplify/core/lib-esm/Platform/version.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Platform/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Util/Retry.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Util/StringUtils.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/OAuthHelper/GoogleOAuth.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/OAuthHelper/FacebookOAuth.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/OAuthHelper/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Credentials.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Util/DateUtils.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/StorageHelper/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/constants.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Signer.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Hub.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/I18n/I18n.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/I18n/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/ServiceWorker/ServiceWorker.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Parser.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/UniversalStorage/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Amplify.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/JS.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Util/Constants.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Logger/ConsoleLogger.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/Utils/CacheUtils.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/BrowserStorageCache.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/StorageCache.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/index.js"],"names":["BASE_USER_AGENT","Platform","userAgent","product","navigator","isReactNative","getAmplifyUserAgent","extendStatics","__extends","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","__read","o","m","r","i","ar","error","__spread","arguments","concat","logger","NonRetryableError","_super","message","_this","nonRetryable","Error","retry","functionToRetry","args","delayFn","attempt","err_1","retryIn_1","_a","debug","name","JSON","stringify","obj","res","setTimeout","MAX_DELAY_MS","jitteredExponentialRetry","maxDelayMs","delay","Math","pow","random","jitteredBackoff","urlSafeEncode","str","split","map","char","charCodeAt","toString","padStart","join","urlSafeDecode","hex","match","String","fromCharCode","parseInt","waitForInit","rej","isBrowser","window","auth2","GoogleOAuth","initialized","refreshGoogleToken","bind","_refreshGoogleTokenImpl","ga","getAuthInstance","googleAuth","googleUser","currentUser","get","isSignedIn","reloadAuthResponse","authResponse","id_token","expires_at","token","catch","err","FacebookOAuth","refreshFacebookToken","_refreshFacebookTokenImpl","fb","errorMessage","getLoginStatus","fbResponse","response","accessToken","expiresIn","Date","getTime","scope","__assign","assign","s","Credentials","CredentialsClass","config","_gettingCredPromise","_refreshHandlers","Auth","undefined","configure","getModuleName","getCredSource","_credentials_source","_config","refreshHandlers","_storage","storage","getStorage","_storageSync","_pickupCredentials","_getCognitoIdentityIdStorageKey","identityPoolId","isPending","_keepAlive","cred","user_1","session","refreshToken_1","_b","_credentials","_isExpired","_isPastTTL","currentUserCredentials","currentUserPoolUser","currentSession","refreshToken","refreshSession","data","refreshFederatedToken","federatedInfo","provider","user","identity_id","getFullYear","that","_setCredentialsFromFederation","_providerRefreshWithRetry","refreshHandler","clear","toLowerCase","lastIndexOf","credentials","ts","now","expiration","_nextCredentialsRefresh","_setCredentialsForGuest","region","identityId","cognitoClient","cognitoIdentityParams","credentialsProvider","_c","mandatorySignIn","_getGuestIdentityId","_identityId","customUserAgent","client","IdentityId","send","IdentityPoolId","credentialsFromCognitoIdentity","_loadCredentials","_removeGuestIdentityId","params","domain","google","facebook","amazon","developer","logins","_setCredentialsFromSession","idToken","getIdToken","getJwtToken","userPoolId","guestIdentityId","generatedOrRetrievedIdentityId","AccessKeyId","Expiration","SecretKey","SessionToken","primaryIdentityId","Logins","accessKeyId","secretAccessKey","sessionToken","source","authenticated","info","id","setItem","_setGuestIdentityId","set","removeItem","e_1","getItem","e_2","shear","register","DateUtils","clockOffset","getDateWithClockOffset","getClockOffset","getHeaderStringFromDate","date","toISOString","replace","getDateFromHeaderString","header","year","month","day","hour","minute","second","UTC","Number","isClockSkewed","serverDate","abs","isClockSkewError","headers","Boolean","includes","setClockOffset","offset","dataMemory","MemoryStorage","key","StorageHelper","storageWindow","localStorage","exception","hasSymbol","for","INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER","INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER","USER_AGENT_HEADER","__rest","indexOf","getOwnPropertySymbols","propertyIsEnumerable","DEFAULT_ALGORITHM","encrypt","src","hash","update","digestSync","arg","signed_headers","keys","sort","canonical_request","request","query","url_info","url","method","encodeURIComponent","pathname","key_val","reencoded_val","c","toUpperCase","a","key_a","key_b","trim","item","parse_service_info","parsed","host","slice","reverse","service","credential_scope","d_str","string_to_sign","algorithm","dt_str","get_signing_key","secret_key","service_info","k_date","k_region","k_service","get_signature","signing_key","str_to_sign","Signer","sign","access_info","substr","session_token","request_str","serviceInfo","signature","authorization_header","access_key","get_authorization_header","signUrl","urlOrRequest","accessInfo","urlToSign","today","parsedUrl","search","signedHeaders","credentialScope","sessionTokenRequired","queryParams","canonicalRequest","stringToSign","additionalQueryParams","protocol","slashes","hostname","port","AMPLIFY_SYMBOL","Hub","HubClass","listeners","patterns","protectedChannels","remove","channel","listener","RegExp","pattern_1","find","pattern","warn","filter","x","holder","callback","dispatch","payload","ampSymbol","capsule","patternInfo","_toListeners","listen","listenerName","cb","onHubCapsule","isLegacyCallback","forEach","payloadStr_1","groups","dispatchingCapsule","I18n","options","_options","_lang","_dict","language","setLanguage","lang","defVal","val","getByLanguage","lang_dict","putVocabulariesForLanguage","vocabularies","putVocabularies","_i18n","createInstance","checkConfig","Amplify","ServiceWorkerClass","_logger","defineProperty","_serviceWorker","enumerable","configurable","filePath","serviceWorker","registration","installing","waiting","active","_registration","_setupListeners","enablePush","publicKey","_publicKey","pushManager","getSubscription","subscription","subscribe","userVisibleOnly","applicationServerKey","_urlB64ToUint8Array","_subscription","base64String","base64","repeat","rawData","atob","outputArray","Uint8Array","postMessage","addEventListener","event","currentState","state","Analytics","record","attributes","Constants","parseMobileHubConfig","storageConfig","amplifyConfig","AWSPinpoint","appId","userPoolWebClientId","identityPoolRegion","AWSS3","bucket","dangerouslyConnectToHttpEndpointForTesting","Storage","Logging","Geo","geo","AmazonLocationService","Parser","parseMobilehubConfig","UniversalStorage","context","cookies","store","req","cookie","getAll","entries","from","getLocalItem","getUniversalItem","index","removeLocalItem","removeUniversalItem","path","setLocalItem","setUniversalItem","sameSite","secure","location","AmplifyClass","_components","_modules","API","Cache","PubSub","Interactions","Pushnotification","UI","XR","Predictions","DataStore","Logger","ServiceWorker","comp","property","addPluggable","pluggable","MIME_MAP","type","ext","isEmpty","sortByField","list","field","dir","dirX","a_val","b_val","objectLessAttributes","less","ret","attr","filenameToContentType","filename","filtered","mime","endsWith","isTextFile","contentType","startsWith","generateRandomString","chars","floor","makeQuerablePromise","promise","isResolved","isRejected","isFullfilled","isWebWorker","self","selfContext","WorkerGlobalScope","browserOrNode","document","isNode","process","versions","node","transferKeyToLowerCase","whiteListForItself","whiteListForChildren","isStrictObject","transferKeyToUpperCase","Function","JS","LOG_TYPE","__values","LOG_LEVELS","VERBOSE","DEBUG","INFO","WARN","ERROR","ConsoleLogger","level","_pluggables","_padding","_ts","dt","getMinutes","getSeconds","getMilliseconds","_log","msg","_i","logger_level_name","LOG_LEVEL","logger_level","type_level","log","console","prefix","plugin","logEvent","timestamp","pushLogs","e_1_1","return","verbose","getCategoryName","listPluggables","defaultConfig","keyPrefix","capacityInBytes","itemMaxSize","defaultTTL","defaultPriority","warningThreshold","getByteLength","charCode","getCurrTime","isInteger","isFinite","_isInteger","CacheObject","StorageCache","cacheCurSizeKey","fillCacheItem","visitedTime","priority","expires","byteSize","BrowserStorageCache","BrowserStorageCacheClass","cacheConfig","_decreaseCurSizeInBytes","amount","curSize","getCacheCurSize","_increaseCurSizeInBytes","_refreshItem","prefixedKey","text","parse","_removeItem","size","itemSize","_setItem","setItemErr","_sizeToPop","spaceItemNeed","cacheThresholdSpace","_isCacheFull","_findValidKeys","keyInCache","_popOutItems","sizeToPop","items","remainedSize","cacheItemOptions","validKeys","keysToRemove","getAllKeys","substring"],"mappings":"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","file":"2fbfc4d.js","sourcesContent":["// generated by genversion\nexport var version = '4.5.3';\n//# sourceMappingURL=version.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { 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};\nif (typeof navigator !== 'undefined' && navigator.product) {\n Platform.product = navigator.product || '';\n Platform.navigator = navigator || null;\n switch (navigator.product) {\n case 'ReactNative':\n Platform.userAgent = BASE_USER_AGENT + \" react-native\";\n Platform.isReactNative = true;\n break;\n default:\n Platform.userAgent = BASE_USER_AGENT + \" js\";\n Platform.isReactNative = false;\n break;\n }\n}\nexport var getAmplifyUserAgent = function () {\n return Platform.userAgent;\n};\n/**\n * @deprecated use named import\n */\nexport default Platform;\n//# sourceMappingURL=index.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { ConsoleLogger as Logger } from '../Logger/ConsoleLogger';\nvar logger = new Logger('Util');\nvar NonRetryableError = /** @class */ (function (_super) {\n __extends(NonRetryableError, _super);\n function NonRetryableError(message) {\n var _this = _super.call(this, message) || this;\n _this.nonRetryable = true;\n return _this;\n }\n return NonRetryableError;\n}(Error));\nexport { NonRetryableError };\nvar isNonRetryableError = function (obj) {\n var key = 'nonRetryable';\n return obj && obj[key];\n};\n/**\n * @private\n * Internal use of Amplify only\n */\nexport function retry(functionToRetry, args, delayFn, attempt) {\n if (attempt === void 0) { attempt = 1; }\n return __awaiter(this, void 0, void 0, function () {\n var err_1, retryIn_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (typeof functionToRetry !== 'function') {\n throw Error('functionToRetry must be a function');\n }\n logger.debug(functionToRetry.name + \" attempt #\" + attempt + \" with this vars: \" + JSON.stringify(args));\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 8]);\n return [4 /*yield*/, functionToRetry.apply(void 0, __spread(args))];\n case 2: return [2 /*return*/, _a.sent()];\n case 3:\n err_1 = _a.sent();\n logger.debug(\"error on \" + functionToRetry.name, err_1);\n if (isNonRetryableError(err_1)) {\n logger.debug(functionToRetry.name + \" non retryable error\", err_1);\n throw err_1;\n }\n retryIn_1 = delayFn(attempt, args, err_1);\n logger.debug(functionToRetry.name + \" retrying in \" + retryIn_1 + \" ms\");\n if (!(retryIn_1 !== false)) return [3 /*break*/, 6];\n return [4 /*yield*/, new Promise(function (res) { return setTimeout(res, retryIn_1); })];\n case 4:\n _a.sent();\n return [4 /*yield*/, retry(functionToRetry, args, delayFn, attempt + 1)];\n case 5: return [2 /*return*/, _a.sent()];\n case 6: throw err_1;\n case 7: return [3 /*break*/, 8];\n case 8: return [2 /*return*/];\n }\n });\n });\n}\nvar MAX_DELAY_MS = 5 * 60 * 1000;\n/**\n * @private\n * Internal use of Amplify only\n */\nexport function jitteredBackoff(maxDelayMs) {\n if (maxDelayMs === void 0) { maxDelayMs = MAX_DELAY_MS; }\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/**\n * @private\n * Internal use of Amplify only\n */\nexport var jitteredExponentialRetry = function (functionToRetry, args, maxDelayMs) {\n if (maxDelayMs === void 0) { maxDelayMs = MAX_DELAY_MS; }\n return retry(functionToRetry, args, jitteredBackoff(maxDelayMs));\n};\n//# sourceMappingURL=Retry.js.map","export function urlSafeEncode(str) {\n return str\n .split('')\n .map(function (char) {\n return char\n .charCodeAt(0)\n .toString(16)\n .padStart(2, '0');\n })\n .join('');\n}\nexport function urlSafeDecode(hex) {\n return hex\n .match(/.{2}/g)\n .map(function (char) { return String.fromCharCode(parseInt(char, 16)); })\n .join('');\n}\n//# sourceMappingURL=StringUtils.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nimport { NonRetryableError } from '../Util';\nvar logger = new Logger('CognitoCredentials');\nvar waitForInit = new Promise(function (res, rej) {\n if (!browserOrNode().isBrowser) {\n logger.debug('not in the browser, directly resolved');\n return res();\n }\n var ga = window['gapi'] && window['gapi'].auth2 ? window['gapi'].auth2 : null;\n if (ga) {\n logger.debug('google api already loaded');\n return res();\n }\n else {\n setTimeout(function () {\n return res();\n }, 2000);\n }\n});\nvar GoogleOAuth = /** @class */ (function () {\n function GoogleOAuth() {\n this.initialized = false;\n this.refreshGoogleToken = this.refreshGoogleToken.bind(this);\n this._refreshGoogleTokenImpl = this._refreshGoogleTokenImpl.bind(this);\n }\n GoogleOAuth.prototype.refreshGoogleToken = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this.initialized) return [3 /*break*/, 2];\n logger.debug('need to wait for the Google SDK loaded');\n return [4 /*yield*/, waitForInit];\n case 1:\n _a.sent();\n this.initialized = true;\n logger.debug('finish waiting');\n _a.label = 2;\n case 2: return [2 /*return*/, this._refreshGoogleTokenImpl()];\n }\n });\n });\n };\n GoogleOAuth.prototype._refreshGoogleTokenImpl = function () {\n var ga = null;\n if (browserOrNode().isBrowser)\n ga = window['gapi'] && window['gapi'].auth2 ? window['gapi'].auth2 : null;\n if (!ga) {\n logger.debug('no gapi auth2 available');\n return Promise.reject('no gapi auth2 available');\n }\n return new Promise(function (res, rej) {\n ga.getAuthInstance()\n .then(function (googleAuth) {\n if (!googleAuth) {\n logger.debug('google Auth undefined');\n rej(new NonRetryableError('google Auth undefined'));\n }\n var googleUser = googleAuth.currentUser.get();\n // refresh the token\n if (googleUser.isSignedIn()) {\n logger.debug('refreshing the google access token');\n googleUser\n .reloadAuthResponse()\n .then(function (authResponse) {\n var id_token = authResponse.id_token, expires_at = authResponse.expires_at;\n res({ token: id_token, expires_at: expires_at });\n })\n .catch(function (err) {\n if (err && err.error === 'network_error') {\n // Not using NonRetryableError so handler will be retried\n rej('Network error reloading google auth response');\n }\n else {\n rej(new NonRetryableError('Failed to reload google auth response'));\n }\n });\n }\n else {\n rej(new NonRetryableError('User is not signed in with Google'));\n }\n })\n .catch(function (err) {\n logger.debug('Failed to refresh google token', err);\n rej(new NonRetryableError('Failed to refresh google token'));\n });\n });\n };\n return GoogleOAuth;\n}());\nexport { GoogleOAuth };\n/**\n * @deprecated use named import\n */\nexport default GoogleOAuth;\n//# sourceMappingURL=GoogleOAuth.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nimport { NonRetryableError } from '../Util';\nvar logger = new Logger('CognitoCredentials');\nvar waitForInit = new Promise(function (res, rej) {\n if (!browserOrNode().isBrowser) {\n logger.debug('not in the browser, directly resolved');\n return res();\n }\n var fb = window['FB'];\n if (fb) {\n logger.debug('FB SDK already loaded');\n return res();\n }\n else {\n setTimeout(function () {\n return res();\n }, 2000);\n }\n});\nvar FacebookOAuth = /** @class */ (function () {\n function FacebookOAuth() {\n this.initialized = false;\n this.refreshFacebookToken = this.refreshFacebookToken.bind(this);\n this._refreshFacebookTokenImpl = this._refreshFacebookTokenImpl.bind(this);\n }\n FacebookOAuth.prototype.refreshFacebookToken = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this.initialized) return [3 /*break*/, 2];\n logger.debug('need to wait for the Facebook SDK loaded');\n return [4 /*yield*/, waitForInit];\n case 1:\n _a.sent();\n this.initialized = true;\n logger.debug('finish waiting');\n _a.label = 2;\n case 2: return [2 /*return*/, this._refreshFacebookTokenImpl()];\n }\n });\n });\n };\n FacebookOAuth.prototype._refreshFacebookTokenImpl = function () {\n var fb = null;\n if (browserOrNode().isBrowser)\n fb = window['FB'];\n if (!fb) {\n var errorMessage = 'no fb sdk available';\n logger.debug(errorMessage);\n return Promise.reject(new NonRetryableError(errorMessage));\n }\n return new Promise(function (res, rej) {\n fb.getLoginStatus(function (fbResponse) {\n if (!fbResponse || !fbResponse.authResponse) {\n var errorMessage = 'no response from facebook when refreshing the jwt token';\n logger.debug(errorMessage);\n // There is no definitive indication for a network error in\n // fbResponse, so we are treating it as an invalid token.\n rej(new NonRetryableError(errorMessage));\n }\n else {\n var response = fbResponse.authResponse;\n var accessToken = response.accessToken, expiresIn = response.expiresIn;\n var date = new Date();\n var expires_at = expiresIn * 1000 + date.getTime();\n if (!accessToken) {\n var errorMessage = 'the jwtToken is undefined';\n logger.debug(errorMessage);\n rej(new NonRetryableError(errorMessage));\n }\n res({\n token: accessToken,\n expires_at: expires_at,\n });\n }\n }, { scope: 'public_profile,email' });\n });\n };\n return FacebookOAuth;\n}());\nexport { FacebookOAuth };\n/**\n * @deprecated use named import\n */\nexport default FacebookOAuth;\n//# sourceMappingURL=FacebookOAuth.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { GoogleOAuth as GoogleOAuthClass } from './GoogleOAuth';\nimport { FacebookOAuth as FacebookOAuthClass } from './FacebookOAuth';\nexport var GoogleOAuth = new GoogleOAuthClass();\nexport var FacebookOAuth = new FacebookOAuthClass();\n//# sourceMappingURL=index.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { ConsoleLogger as Logger } from './Logger';\nimport { StorageHelper } from './StorageHelper';\nimport { makeQuerablePromise } from './JS';\nimport { FacebookOAuth, GoogleOAuth } from './OAuthHelper';\nimport { jitteredExponentialRetry } from './Util';\nimport { getAmplifyUserAgent } from './Platform';\nimport { Amplify } from './Amplify';\nimport { fromCognitoIdentity, fromCognitoIdentityPool, } from '@aws-sdk/credential-provider-cognito-identity';\nimport { CognitoIdentityClient, GetIdCommand, GetCredentialsForIdentityCommand, } from '@aws-sdk/client-cognito-identity';\nvar logger = new Logger('Credentials');\nvar CREDENTIALS_TTL = 50 * 60 * 1000; // 50 min, can be modified on config if required in the future\nvar COGNITO_IDENTITY_KEY_PREFIX = 'CognitoIdentityId-';\nvar CredentialsClass = /** @class */ (function () {\n function CredentialsClass(config) {\n this._gettingCredPromise = null;\n this._refreshHandlers = {};\n // Allow `Auth` to be injected for SSR, but Auth isn't a required dependency for Credentials\n this.Auth = undefined;\n this.configure(config);\n this._refreshHandlers['google'] = GoogleOAuth.refreshGoogleToken;\n this._refreshHandlers['facebook'] = FacebookOAuth.refreshFacebookToken;\n }\n CredentialsClass.prototype.getModuleName = function () {\n return 'Credentials';\n };\n CredentialsClass.prototype.getCredSource = function () {\n return this._credentials_source;\n };\n CredentialsClass.prototype.configure = function (config) {\n if (!config)\n return this._config || {};\n this._config = Object.assign({}, this._config, config);\n var refreshHandlers = this._config.refreshHandlers;\n // If the developer has provided an object of refresh handlers,\n // then we can merge the provided handlers with the current handlers.\n if (refreshHandlers) {\n this._refreshHandlers = __assign(__assign({}, this._refreshHandlers), refreshHandlers);\n }\n this._storage = this._config.storage;\n if (!this._storage) {\n this._storage = new StorageHelper().getStorage();\n }\n this._storageSync = Promise.resolve();\n if (typeof this._storage['sync'] === 'function') {\n this._storageSync = this._storage['sync']();\n }\n return this._config;\n };\n CredentialsClass.prototype.get = function () {\n logger.debug('getting credentials');\n return this._pickupCredentials();\n };\n // currently we only store the guest identity in local storage\n CredentialsClass.prototype._getCognitoIdentityIdStorageKey = function (identityPoolId) {\n return \"\" + COGNITO_IDENTITY_KEY_PREFIX + identityPoolId;\n };\n CredentialsClass.prototype._pickupCredentials = function () {\n logger.debug('picking up credentials');\n if (!this._gettingCredPromise || !this._gettingCredPromise.isPending()) {\n logger.debug('getting new cred promise');\n this._gettingCredPromise = makeQuerablePromise(this._keepAlive());\n }\n else {\n logger.debug('getting old cred promise');\n }\n return this._gettingCredPromise;\n };\n CredentialsClass.prototype._keepAlive = function () {\n return __awaiter(this, void 0, void 0, function () {\n var cred, _a, Auth, user_1, session, refreshToken_1, refreshRequest, err_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug('checking if credentials exists and not expired');\n cred = this._credentials;\n if (cred && !this._isExpired(cred) && !this._isPastTTL()) {\n logger.debug('credentials not changed and not expired, directly return');\n return [2 /*return*/, Promise.resolve(cred)];\n }\n logger.debug('need to get a new credential or refresh the existing one');\n _a = this.Auth, Auth = _a === void 0 ? Amplify.Auth : _a;\n if (!Auth || typeof Auth.currentUserCredentials !== 'function') {\n return [2 /*return*/, Promise.reject('No Auth module registered in Amplify')];\n }\n if (!(!this._isExpired(cred) && this._isPastTTL())) return [3 /*break*/, 6];\n logger.debug('ttl has passed but token is not yet expired');\n _b.label = 1;\n case 1:\n _b.trys.push([1, 5, , 6]);\n return [4 /*yield*/, Auth.currentUserPoolUser()];\n case 2:\n user_1 = _b.sent();\n return [4 /*yield*/, Auth.currentSession()];\n case 3:\n session = _b.sent();\n refreshToken_1 = session.refreshToken;\n refreshRequest = new Promise(function (res, rej) {\n user_1.refreshSession(refreshToken_1, function (err, data) {\n return err ? rej(err) : res(data);\n });\n });\n return [4 /*yield*/, refreshRequest];\n case 4:\n _b.sent(); // note that rejections will be caught and handled in the catch block.\n return [3 /*break*/, 6];\n case 5:\n err_1 = _b.sent();\n // should not throw because user might just be on guest access or is authenticated through federation\n logger.debug('Error attempting to refreshing the session', err_1);\n return [3 /*break*/, 6];\n case 6: return [2 /*return*/, Auth.currentUserCredentials()];\n }\n });\n });\n };\n CredentialsClass.prototype.refreshFederatedToken = function (federatedInfo) {\n logger.debug('Getting federated credentials');\n var provider = federatedInfo.provider, user = federatedInfo.user, token = federatedInfo.token, identity_id = federatedInfo.identity_id;\n var expires_at = federatedInfo.expires_at;\n // Make sure expires_at is in millis\n expires_at =\n new Date(expires_at).getFullYear() === 1970\n ? expires_at * 1000\n : expires_at;\n var that = this;\n logger.debug('checking if federated jwt token expired');\n if (expires_at > new Date().getTime()) {\n // if not expired\n logger.debug('token not expired');\n return this._setCredentialsFromFederation({\n provider: provider,\n token: token,\n user: user,\n identity_id: identity_id,\n expires_at: expires_at,\n });\n }\n else {\n // if refresh handler exists\n if (that._refreshHandlers[provider] &&\n typeof that._refreshHandlers[provider] === 'function') {\n logger.debug('getting refreshed jwt token from federation provider');\n return this._providerRefreshWithRetry({\n refreshHandler: that._refreshHandlers[provider],\n provider: provider,\n user: user,\n });\n }\n else {\n logger.debug('no refresh handler for provider:', provider);\n this.clear();\n return Promise.reject('no refresh handler for provider');\n }\n }\n };\n CredentialsClass.prototype._providerRefreshWithRetry = function (_a) {\n var _this = this;\n var refreshHandler = _a.refreshHandler, provider = _a.provider, user = _a.user;\n var MAX_DELAY_MS = 10 * 1000;\n // refreshHandler will retry network errors, otherwise it will\n // return NonRetryableError to break out of jitteredExponentialRetry\n return jitteredExponentialRetry(refreshHandler, [], MAX_DELAY_MS)\n .then(function (data) {\n logger.debug('refresh federated token sucessfully', data);\n return _this._setCredentialsFromFederation({\n provider: provider,\n token: data.token,\n user: user,\n identity_id: data.identity_id,\n expires_at: data.expires_at,\n });\n })\n .catch(function (e) {\n var isNetworkError = typeof e === 'string' &&\n e.toLowerCase().lastIndexOf('network error', e.length) === 0;\n if (!isNetworkError) {\n _this.clear();\n }\n logger.debug('refresh federated token failed', e);\n return Promise.reject('refreshing federation token failed: ' + e);\n });\n };\n CredentialsClass.prototype._isExpired = function (credentials) {\n if (!credentials) {\n logger.debug('no credentials for expiration check');\n return true;\n }\n logger.debug('are these credentials expired?', credentials);\n var ts = Date.now();\n /* returns date object.\n https://github.com/aws/aws-sdk-js-v3/blob/v1.0.0-beta.1/packages/types/src/credentials.ts#L26\n */\n var expiration = credentials.expiration;\n return expiration.getTime() <= ts;\n };\n CredentialsClass.prototype._isPastTTL = function () {\n return this._nextCredentialsRefresh <= Date.now();\n };\n CredentialsClass.prototype._setCredentialsForGuest = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, identityPoolId, region, mandatorySignIn, identityId, _b, cognitoClient, credentials, cognitoIdentityParams, credentialsProvider;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n logger.debug('setting credentials for guest');\n _a = this._config, identityPoolId = _a.identityPoolId, region = _a.region, mandatorySignIn = _a.mandatorySignIn;\n if (mandatorySignIn) {\n return [2 /*return*/, Promise.reject('cannot get guest credentials when mandatory signin enabled')];\n }\n if (!identityPoolId) {\n logger.debug('No Cognito Identity pool provided for unauthenticated access');\n return [2 /*return*/, Promise.reject('No Cognito Identity pool provided for unauthenticated access')];\n }\n if (!region) {\n logger.debug('region is not configured for getting the credentials');\n return [2 /*return*/, Promise.reject('region is not configured for getting the credentials')];\n }\n _b = this;\n return [4 /*yield*/, this._getGuestIdentityId()];\n case 1:\n identityId = _b._identityId = _c.sent();\n cognitoClient = new CognitoIdentityClient({\n region: region,\n customUserAgent: getAmplifyUserAgent(),\n });\n credentials = undefined;\n if (identityId) {\n cognitoIdentityParams = {\n identityId: identityId,\n client: cognitoClient,\n };\n credentials = fromCognitoIdentity(cognitoIdentityParams)();\n }\n else {\n credentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n var IdentityId, cognitoIdentityParams, credentialsFromCognitoIdentity;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, cognitoClient.send(new GetIdCommand({\n IdentityPoolId: identityPoolId,\n }))];\n case 1:\n IdentityId = (_a.sent()).IdentityId;\n this._identityId = IdentityId;\n cognitoIdentityParams = {\n client: cognitoClient,\n identityId: IdentityId,\n };\n credentialsFromCognitoIdentity = fromCognitoIdentity(cognitoIdentityParams);\n return [2 /*return*/, credentialsFromCognitoIdentity()];\n }\n });\n }); };\n credentials = credentialsProvider().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw err;\n });\n }); });\n }\n return [2 /*return*/, this._loadCredentials(credentials, 'guest', false, null)\n .then(function (res) {\n return res;\n })\n .catch(function (e) { return __awaiter(_this, void 0, void 0, function () {\n var credentialsProvider;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(e.name === 'ResourceNotFoundException' &&\n e.message === \"Identity '\" + identityId + \"' not found.\")) return [3 /*break*/, 2];\n logger.debug('Failed to load guest credentials');\n return [4 /*yield*/, this._removeGuestIdentityId()];\n case 1:\n _a.sent();\n credentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n var IdentityId, cognitoIdentityParams, credentialsFromCognitoIdentity;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, cognitoClient.send(new GetIdCommand({\n IdentityPoolId: identityPoolId,\n }))];\n case 1:\n IdentityId = (_a.sent()).IdentityId;\n this._identityId = IdentityId;\n cognitoIdentityParams = {\n client: cognitoClient,\n identityId: IdentityId,\n };\n credentialsFromCognitoIdentity = fromCognitoIdentity(cognitoIdentityParams);\n return [2 /*return*/, credentialsFromCognitoIdentity()];\n }\n });\n }); };\n credentials = credentialsProvider().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw err;\n });\n }); });\n return [2 /*return*/, this._loadCredentials(credentials, 'guest', false, null)];\n case 2: return [2 /*return*/, e];\n }\n });\n }); })];\n }\n });\n });\n };\n CredentialsClass.prototype._setCredentialsFromFederation = function (params) {\n var provider = params.provider, token = params.token, identity_id = params.identity_id;\n var domains = {\n google: 'accounts.google.com',\n facebook: 'graph.facebook.com',\n amazon: 'www.amazon.com',\n developer: 'cognito-identity.amazonaws.com',\n };\n // Use custom provider url instead of the predefined ones\n var domain = domains[provider] || provider;\n if (!domain) {\n return Promise.reject('You must specify a federated provider');\n }\n var logins = {};\n logins[domain] = token;\n var _a = this._config, identityPoolId = _a.identityPoolId, region = _a.region;\n if (!identityPoolId) {\n logger.debug('No Cognito Federated Identity pool provided');\n return Promise.reject('No Cognito Federated Identity pool provided');\n }\n if (!region) {\n logger.debug('region is not configured for getting the credentials');\n return Promise.reject('region is not configured for getting the credentials');\n }\n var cognitoClient = new CognitoIdentityClient({\n region: region,\n customUserAgent: getAmplifyUserAgent(),\n });\n var credentials = undefined;\n if (identity_id) {\n var cognitoIdentityParams = {\n identityId: identity_id,\n logins: logins,\n client: cognitoClient,\n };\n credentials = fromCognitoIdentity(cognitoIdentityParams)();\n }\n else {\n var cognitoIdentityParams = {\n logins: logins,\n identityPoolId: identityPoolId,\n client: cognitoClient,\n };\n credentials = fromCognitoIdentityPool(cognitoIdentityParams)();\n }\n return this._loadCredentials(credentials, 'federated', true, params);\n };\n CredentialsClass.prototype._setCredentialsFromSession = function (session) {\n var _this = this;\n logger.debug('set credentials from session');\n var idToken = session.getIdToken().getJwtToken();\n var _a = this._config, region = _a.region, userPoolId = _a.userPoolId, identityPoolId = _a.identityPoolId;\n if (!identityPoolId) {\n logger.debug('No Cognito Federated Identity pool provided');\n return Promise.reject('No Cognito Federated Identity pool provided');\n }\n if (!region) {\n logger.debug('region is not configured for getting the credentials');\n return Promise.reject('region is not configured for getting the credentials');\n }\n var key = 'cognito-idp.' + region + '.amazonaws.com/' + userPoolId;\n var logins = {};\n logins[key] = idToken;\n var cognitoClient = new CognitoIdentityClient({\n region: region,\n customUserAgent: getAmplifyUserAgent(),\n });\n /*\n Retreiving identityId with GetIdCommand to mimic the behavior in the following code in aws-sdk-v3:\n https://git.io/JeDxU\n\n Note: Retreive identityId from CredentialsProvider once aws-sdk-js v3 supports this.\n */\n var credentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n var guestIdentityId, generatedOrRetrievedIdentityId, IdentityId, _a, _b, AccessKeyId, Expiration, SecretKey, SessionToken, primaryIdentityId;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this._getGuestIdentityId()];\n case 1:\n guestIdentityId = _c.sent();\n if (!!guestIdentityId) return [3 /*break*/, 3];\n return [4 /*yield*/, cognitoClient.send(new GetIdCommand({\n IdentityPoolId: identityPoolId,\n Logins: logins,\n }))];\n case 2:\n IdentityId = (_c.sent()).IdentityId;\n generatedOrRetrievedIdentityId = IdentityId;\n _c.label = 3;\n case 3: return [4 /*yield*/, cognitoClient.send(new GetCredentialsForIdentityCommand({\n IdentityId: guestIdentityId || generatedOrRetrievedIdentityId,\n Logins: logins,\n }))];\n case 4:\n _a = _c.sent(), _b = _a.Credentials, AccessKeyId = _b.AccessKeyId, Expiration = _b.Expiration, SecretKey = _b.SecretKey, SessionToken = _b.SessionToken, primaryIdentityId = _a.IdentityId;\n this._identityId = primaryIdentityId;\n if (!guestIdentityId) return [3 /*break*/, 6];\n // if guestIdentity is found and used by GetCredentialsForIdentity\n // it will be linked to the logins provided, and disqualified as an unauth identity\n logger.debug(\"The guest identity \" + guestIdentityId + \" has been successfully linked to the logins\");\n if (guestIdentityId === primaryIdentityId) {\n logger.debug(\"The guest identity \" + guestIdentityId + \" has become the primary identity\");\n }\n // remove it from local storage to avoid being used as a guest Identity by _setCredentialsForGuest\n return [4 /*yield*/, this._removeGuestIdentityId()];\n case 5:\n // remove it from local storage to avoid being used as a guest Identity by _setCredentialsForGuest\n _c.sent();\n _c.label = 6;\n case 6: \n // https://github.com/aws/aws-sdk-js-v3/blob/main/packages/credential-provider-cognito-identity/src/fromCognitoIdentity.ts#L40\n return [2 /*return*/, {\n accessKeyId: AccessKeyId,\n secretAccessKey: SecretKey,\n sessionToken: SessionToken,\n expiration: Expiration,\n identityId: primaryIdentityId,\n }];\n }\n });\n }); };\n var credentials = credentialsProvider().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw err;\n });\n }); });\n return this._loadCredentials(credentials, 'userPool', true, null);\n };\n CredentialsClass.prototype._loadCredentials = function (credentials, source, authenticated, info) {\n var _this = this;\n var that = this;\n return new Promise(function (res, rej) {\n credentials\n .then(function (credentials) { return __awaiter(_this, void 0, void 0, function () {\n var user, provider, token, expires_at, identity_id;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug('Load credentials successfully', credentials);\n if (this._identityId && !credentials.identityId) {\n credentials['identityId'] = this._identityId;\n }\n that._credentials = credentials;\n that._credentials.authenticated = authenticated;\n that._credentials_source = source;\n that._nextCredentialsRefresh = new Date().getTime() + CREDENTIALS_TTL;\n if (source === 'federated') {\n user = Object.assign({ id: this._credentials.identityId }, info.user);\n provider = info.provider, token = info.token, expires_at = info.expires_at, identity_id = info.identity_id;\n try {\n this._storage.setItem('aws-amplify-federatedInfo', JSON.stringify({\n provider: provider,\n token: token,\n user: user,\n expires_at: expires_at,\n identity_id: identity_id,\n }));\n }\n catch (e) {\n logger.debug('Failed to put federated info into auth storage', e);\n }\n }\n if (!(source === 'guest')) return [3 /*break*/, 2];\n return [4 /*yield*/, this._setGuestIdentityId(credentials.identityId)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n res(that._credentials);\n return [2 /*return*/];\n }\n });\n }); })\n .catch(function (err) {\n if (err) {\n logger.debug('Failed to load credentials', credentials);\n logger.debug('Error loading credentials', err);\n rej(err);\n return;\n }\n });\n });\n };\n CredentialsClass.prototype.set = function (params, source) {\n if (source === 'session') {\n return this._setCredentialsFromSession(params);\n }\n else if (source === 'federation') {\n return this._setCredentialsFromFederation(params);\n }\n else if (source === 'guest') {\n return this._setCredentialsForGuest();\n }\n else {\n logger.debug('no source specified for setting credentials');\n return Promise.reject('invalid source');\n }\n };\n CredentialsClass.prototype.clear = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this._credentials = null;\n this._credentials_source = null;\n logger.debug('removing aws-amplify-federatedInfo from storage');\n this._storage.removeItem('aws-amplify-federatedInfo');\n return [2 /*return*/];\n });\n });\n };\n /* operations on local stored guest identity */\n CredentialsClass.prototype._getGuestIdentityId = function () {\n return __awaiter(this, void 0, void 0, function () {\n var identityPoolId, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n identityPoolId = this._config.identityPoolId;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._storageSync];\n case 2:\n _a.sent();\n return [2 /*return*/, this._storage.getItem(this._getCognitoIdentityIdStorageKey(identityPoolId))];\n case 3:\n e_1 = _a.sent();\n logger.debug('Failed to get the cached guest identityId', e_1);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n CredentialsClass.prototype._setGuestIdentityId = function (identityId) {\n return __awaiter(this, void 0, void 0, function () {\n var identityPoolId, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n identityPoolId = this._config.identityPoolId;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._storageSync];\n case 2:\n _a.sent();\n this._storage.setItem(this._getCognitoIdentityIdStorageKey(identityPoolId), identityId);\n return [3 /*break*/, 4];\n case 3:\n e_2 = _a.sent();\n logger.debug('Failed to cache guest identityId', e_2);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n CredentialsClass.prototype._removeGuestIdentityId = function () {\n return __awaiter(this, void 0, void 0, function () {\n var identityPoolId;\n return __generator(this, function (_a) {\n identityPoolId = this._config.identityPoolId;\n logger.debug(\"removing \" + this._getCognitoIdentityIdStorageKey(identityPoolId) + \" from storage\");\n this._storage.removeItem(this._getCognitoIdentityIdStorageKey(identityPoolId));\n return [2 /*return*/];\n });\n });\n };\n /**\n * Compact version of credentials\n * @param {Object} credentials\n * @return {Object} - Credentials\n */\n CredentialsClass.prototype.shear = function (credentials) {\n return {\n accessKeyId: credentials.accessKeyId,\n sessionToken: credentials.sessionToken,\n secretAccessKey: credentials.secretAccessKey,\n identityId: credentials.identityId,\n authenticated: credentials.authenticated,\n };\n };\n return CredentialsClass;\n}());\nexport { CredentialsClass };\nexport var Credentials = new CredentialsClass(null);\nAmplify.register(Credentials);\n/**\n * @deprecated use named import\n */\nexport default Credentials;\n//# sourceMappingURL=Credentials.js.map","/**\n * Date & time utility functions to abstract the `aws-sdk` away from users.\n * (v2 => v3 modularization is a breaking change)\n *\n * @see https://github.com/aws/aws-sdk-js/blob/6edf586dcc1de7fe8fbfbbd9a0d2b1847921e6e1/lib/util.js#L262\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n// Comment - TODO: remove\nvar FIVE_MINUTES_IN_MS = 1000 * 60 * 5;\nexport var DateUtils = {\n /**\n * Milliseconds to offset the date to compensate for clock skew between device & services\n */\n clockOffset: 0,\n getDateWithClockOffset: function () {\n if (DateUtils.clockOffset) {\n return new Date(new Date().getTime() + DateUtils.clockOffset);\n }\n else {\n return new Date();\n }\n },\n /**\n * @returns {number} Clock offset in milliseconds\n */\n getClockOffset: function () {\n return DateUtils.clockOffset;\n },\n getHeaderStringFromDate: function (date) {\n if (date === void 0) { date = DateUtils.getDateWithClockOffset(); }\n return date.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n },\n getDateFromHeaderString: function (header) {\n var _a = __read(header.match(/^(\\d{4})(\\d{2})(\\d{2})T(\\d{2})(\\d{2})(\\d{2}).+/), 7), year = _a[1], month = _a[2], day = _a[3], hour = _a[4], minute = _a[5], second = _a[6];\n return new Date(Date.UTC(Number(year), Number(month) - 1, Number(day), Number(hour), Number(minute), Number(second)));\n },\n isClockSkewed: function (serverDate) {\n // API gateway permits client calls that are off by no more than ±5 minutes\n return (Math.abs(serverDate.getTime() - DateUtils.getDateWithClockOffset().getTime()) >= FIVE_MINUTES_IN_MS);\n },\n isClockSkewError: function (error) {\n if (!error.response || !error.response.headers) {\n return false;\n }\n var headers = error.response.headers;\n return Boolean(['BadRequestException', 'InvalidSignatureException'].includes(headers['x-amzn-errortype']) &&\n (headers.date || headers.Date));\n },\n /**\n * @param {number} offset Clock offset in milliseconds\n */\n setClockOffset: function (offset) {\n DateUtils.clockOffset = offset;\n },\n};\n//# sourceMappingURL=DateUtils.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar dataMemory = {};\n/** @class */\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n }\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 MemoryStorage.setItem = function (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 MemoryStorage.getItem = function (key) {\n return Object.prototype.hasOwnProperty.call(dataMemory, key)\n ? dataMemory[key]\n : undefined;\n };\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {string} value - value that was deleted\n */\n MemoryStorage.removeItem = function (key) {\n return delete dataMemory[key];\n };\n /**\n * This is used to clear the storage\n * @returns {string} nothing\n */\n MemoryStorage.clear = function () {\n dataMemory = {};\n return dataMemory;\n };\n return MemoryStorage;\n}());\nexport { MemoryStorage };\nvar StorageHelper = /** @class */ (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.amplify.test-ls', 1);\n this.storageWindow.removeItem('aws.amplify.test-ls');\n }\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 StorageHelper.prototype.getStorage = function () {\n return this.storageWindow;\n };\n return StorageHelper;\n}());\nexport { StorageHelper };\n/**\n * @deprecated use named import\n */\nexport default StorageHelper;\n//# sourceMappingURL=index.js.map","/*\n * Copyright 2018-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n/**\n * This Symbol is used to reference an internal-only PubSub provider that\n * is used for AppSync/GraphQL subscriptions in the API category.\n */\nvar hasSymbol = typeof Symbol !== 'undefined' && typeof Symbol.for === 'function';\n/**\n * @deprecated Unused, all usecases have migrated to INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER\n */\nexport var INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER = hasSymbol\n ? Symbol.for('INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER')\n : '@@INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER';\nexport var INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER = hasSymbol\n ? Symbol.for('INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER')\n : '@@INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER';\nexport var USER_AGENT_HEADER = 'x-amz-user-agent';\n//# sourceMappingURL=constants.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ConsoleLogger as Logger } from './Logger';\nimport { Sha256 as jsSha256 } from '@aws-crypto/sha256-js';\nimport { toHex } from '@aws-sdk/util-hex-encoding';\nimport { parse, format } from 'url';\nimport { DateUtils } from './Util';\nvar logger = new Logger('Signer');\nvar DEFAULT_ALGORITHM = 'AWS4-HMAC-SHA256';\nvar IOT_SERVICE_NAME = 'iotdevicegateway';\nvar encrypt = function (key, src) {\n var hash = new jsSha256(key);\n hash.update(src);\n return hash.digestSync();\n};\nvar hash = function (src) {\n var arg = src || '';\n var hash = new jsSha256();\n hash.update(arg);\n return toHex(hash.digestSync());\n};\n/**\n * @private\n * RFC 3986 compliant version of encodeURIComponent\n */\nvar escape_RFC3986 = function (component) {\n return component.replace(/[!'()*]/g, function (c) {\n return ('%' +\n c\n .charCodeAt(0)\n .toString(16)\n .toUpperCase());\n });\n};\n/**\n * @private\n * Create canonical query string\n *\n */\nvar canonical_query = function (query) {\n if (!query || query.length === 0) {\n return '';\n }\n return query\n .split('&')\n .map(function (e) {\n var key_val = e.split('=');\n if (key_val.length === 1) {\n return e;\n }\n else {\n var reencoded_val = escape_RFC3986(key_val[1]);\n return key_val[0] + '=' + reencoded_val;\n }\n })\n .sort(function (a, b) {\n var key_a = a.split('=')[0];\n var key_b = b.split('=')[0];\n if (key_a === key_b) {\n return a < b ? -1 : 1;\n }\n else {\n return key_a < key_b ? -1 : 1;\n }\n })\n .join('&');\n};\n/**\n* @private\n* Create canonical headers\n*\n
\nCanonicalHeaders =\n CanonicalHeadersEntry0 + CanonicalHeadersEntry1 + ... + CanonicalHeadersEntryN\nCanonicalHeadersEntry =\n Lowercase(HeaderName) + ':' + Trimall(HeaderValue) + '\\n'\n\n*/\nvar canonical_headers = function (headers) {\n if (!headers || Object.keys(headers).length === 0) {\n return '';\n }\n return (Object.keys(headers)\n .map(function (key) {\n return {\n key: key.toLowerCase(),\n value: headers[key] ? headers[key].trim().replace(/\\s+/g, ' ') : '',\n };\n })\n .sort(function (a, b) {\n return a.key < b.key ? -1 : 1;\n })\n .map(function (item) {\n return item.key + ':' + item.value;\n })\n .join('\\n') + '\\n');\n};\n/**\n * List of header keys included in the canonical headers.\n * @access private\n */\nvar signed_headers = function (headers) {\n return Object.keys(headers)\n .map(function (key) {\n return key.toLowerCase();\n })\n .sort()\n .join(';');\n};\n/**\n* @private\n* Create canonical request\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html|Create a Canonical Request}\n*\n
\nCanonicalRequest =\n HTTPRequestMethod + '\\n' +\n CanonicalURI + '\\n' +\n CanonicalQueryString + '\\n' +\n CanonicalHeaders + '\\n' +\n SignedHeaders + '\\n' +\n HexEncode(Hash(RequestPayload))\n\n*/\nvar canonical_request = function (request) {\n var url_info = parse(request.url);\n return [\n request.method || '/',\n encodeURIComponent(url_info.pathname).replace(/%2F/gi, '/'),\n canonical_query(url_info.query),\n canonical_headers(request.headers),\n signed_headers(request.headers),\n hash(request.data),\n ].join('\\n');\n};\nvar parse_service_info = function (request) {\n var url_info = parse(request.url), host = url_info.host;\n var matched = host.match(/([^\\.]+)\\.(?:([^\\.]*)\\.)?amazonaws\\.com$/);\n var parsed = (matched || []).slice(1, 3);\n if (parsed[1] === 'es') {\n // Elastic Search\n parsed = parsed.reverse();\n }\n return {\n service: request.service || parsed[0],\n region: request.region || parsed[1],\n };\n};\nvar credential_scope = function (d_str, region, service) {\n return [d_str, region, service, 'aws4_request'].join('/');\n};\n/**\n* @private\n* Create a string to sign\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html|Create String to Sign}\n*\n
\nStringToSign =\n Algorithm + \\n +\n RequestDateTime + \\n +\n CredentialScope + \\n +\n HashedCanonicalRequest\n\n*/\nvar string_to_sign = function (algorithm, canonical_request, dt_str, scope) {\n return [algorithm, dt_str, scope, hash(canonical_request)].join('\\n');\n};\n/**\n* @private\n* Create signing key\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html|Calculate Signature}\n*\n
\nkSecret = your secret access key\nkDate = HMAC(\"AWS4\" + kSecret, Date)\nkRegion = HMAC(kDate, Region)\nkService = HMAC(kRegion, Service)\nkSigning = HMAC(kService, \"aws4_request\")\n\n*/\nvar get_signing_key = function (secret_key, d_str, service_info) {\n logger.debug(service_info);\n var k = 'AWS4' + secret_key, k_date = encrypt(k, d_str), k_region = encrypt(k_date, service_info.region), k_service = encrypt(k_region, service_info.service), k_signing = encrypt(k_service, 'aws4_request');\n return k_signing;\n};\nvar get_signature = function (signing_key, str_to_sign) {\n return toHex(encrypt(signing_key, str_to_sign));\n};\n/**\n * @private\n * Create authorization header\n * Refer to\n * {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html|Add the Signing Information}\n */\nvar get_authorization_header = function (algorithm, access_key, scope, signed_headers, signature) {\n return [\n algorithm + ' ' + 'Credential=' + access_key + '/' + scope,\n 'SignedHeaders=' + signed_headers,\n 'Signature=' + signature,\n ].join(', ');\n};\nvar Signer = /** @class */ (function () {\n function Signer() {\n }\n /**\n * Sign a HTTP request, add 'Authorization' header to request param\n * @method sign\n * @memberof Signer\n * @static\n *\n * @param {object} request - HTTP request object\n
\n request: {\n method: GET | POST | PUT ...\n url: ...,\n headers: {\n header1: ...\n },\n data: data\n }\n\n * @param {object} access_info - AWS access credential info\n
\n access_info: {\n access_key: ...,\n secret_key: ...,\n session_token: ...\n }\n\n * @param {object} [service_info] - AWS service type and region, optional,\n * if not provided then parse out from url\n
\n service_info: {\n service: ...,\n region: ...\n }\n\n *\n * @returns {object} Signed HTTP request\n */\n Signer.sign = function (request, access_info, service_info) {\n if (service_info === void 0) { service_info = null; }\n request.headers = request.headers || {};\n // datetime string and date string\n var dt = DateUtils.getDateWithClockOffset(), dt_str = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, ''), d_str = dt_str.substr(0, 8);\n var url_info = parse(request.url);\n request.headers['host'] = url_info.host;\n request.headers['x-amz-date'] = dt_str;\n if (access_info.session_token) {\n request.headers['X-Amz-Security-Token'] = access_info.session_token;\n }\n // Task 1: Create a Canonical Request\n var request_str = canonical_request(request);\n logger.debug(request_str);\n // Task 2: Create a String to Sign\n var serviceInfo = service_info || parse_service_info(request), scope = credential_scope(d_str, serviceInfo.region, serviceInfo.service), str_to_sign = string_to_sign(DEFAULT_ALGORITHM, request_str, dt_str, scope);\n // Task 3: Calculate the Signature\n var signing_key = get_signing_key(access_info.secret_key, d_str, serviceInfo), signature = get_signature(signing_key, str_to_sign);\n // Task 4: Adding the Signing information to the Request\n var authorization_header = get_authorization_header(DEFAULT_ALGORITHM, access_info.access_key, scope, signed_headers(request.headers), signature);\n request.headers['Authorization'] = authorization_header;\n return request;\n };\n Signer.signUrl = function (urlOrRequest, accessInfo, serviceInfo, expiration) {\n var urlToSign = typeof urlOrRequest === 'object' ? urlOrRequest.url : urlOrRequest;\n var method = typeof urlOrRequest === 'object' ? urlOrRequest.method : 'GET';\n var body = typeof urlOrRequest === 'object' ? urlOrRequest.body : undefined;\n var now = DateUtils.getDateWithClockOffset()\n .toISOString()\n .replace(/[:\\-]|\\.\\d{3}/g, '');\n var today = now.substr(0, 8);\n // Intentionally discarding search\n var _a = parse(urlToSign, true, true), search = _a.search, parsedUrl = __rest(_a, [\"search\"]);\n var host = parsedUrl.host;\n var signedHeaders = { host: host };\n var _b = serviceInfo || parse_service_info({ url: format(parsedUrl) }), region = _b.region, service = _b.service;\n var credentialScope = credential_scope(today, region, service);\n // IoT service does not allow the session token in the canonical request\n // https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html\n var sessionTokenRequired = accessInfo.session_token && service !== IOT_SERVICE_NAME;\n var queryParams = __assign(__assign(__assign({ 'X-Amz-Algorithm': DEFAULT_ALGORITHM, 'X-Amz-Credential': [accessInfo.access_key, credentialScope].join('/'), 'X-Amz-Date': now.substr(0, 16) }, (sessionTokenRequired\n ? { 'X-Amz-Security-Token': \"\" + accessInfo.session_token }\n : {})), (expiration ? { 'X-Amz-Expires': \"\" + expiration } : {})), { 'X-Amz-SignedHeaders': Object.keys(signedHeaders).join(',') });\n var canonicalRequest = canonical_request({\n method: method,\n url: format(__assign(__assign({}, parsedUrl), { query: __assign(__assign({}, parsedUrl.query), queryParams) })),\n headers: signedHeaders,\n data: body,\n });\n var stringToSign = string_to_sign(DEFAULT_ALGORITHM, canonicalRequest, now, credentialScope);\n var signing_key = get_signing_key(accessInfo.secret_key, today, {\n region: region,\n service: service,\n });\n var signature = get_signature(signing_key, stringToSign);\n var additionalQueryParams = __assign({ 'X-Amz-Signature': signature }, (accessInfo.session_token && {\n 'X-Amz-Security-Token': accessInfo.session_token,\n }));\n var result = format({\n protocol: parsedUrl.protocol,\n slashes: true,\n hostname: parsedUrl.hostname,\n port: parsedUrl.port,\n pathname: parsedUrl.pathname,\n query: __assign(__assign(__assign({}, parsedUrl.query), queryParams), additionalQueryParams),\n });\n return result;\n };\n return Signer;\n}());\nexport { Signer };\n/**\n * @deprecated use per-function import\n */\nexport default Signer;\n//# sourceMappingURL=Signer.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { ConsoleLogger as Logger } from './Logger';\nvar logger = new Logger('Hub');\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\n typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nfunction isLegacyCallback(callback) {\n return callback.onHubCapsule !== undefined;\n}\nvar HubClass = /** @class */ (function () {\n function HubClass(name) {\n this.listeners = [];\n this.patterns = [];\n this.protectedChannels = [\n 'core',\n 'auth',\n 'api',\n 'analytics',\n 'interactions',\n 'pubsub',\n 'storage',\n 'ui',\n 'xr',\n ];\n this.name = name;\n }\n // Note - Need to pass channel as a reference for removal to work and not anonymous function\n HubClass.prototype.remove = function (channel, listener) {\n if (channel instanceof RegExp) {\n var pattern_1 = this.patterns.find(function (_a) {\n var pattern = _a.pattern;\n return pattern.source === channel.source;\n });\n if (!pattern_1) {\n logger.warn(\"No listeners for \" + channel);\n return;\n }\n this.patterns = __spread(this.patterns.filter(function (x) { return x !== pattern_1; }));\n }\n else {\n var holder = this.listeners[channel];\n if (!holder) {\n logger.warn(\"No listeners for \" + channel);\n return;\n }\n this.listeners[channel] = __spread(holder.filter(function (_a) {\n var callback = _a.callback;\n return callback !== listener;\n }));\n }\n };\n HubClass.prototype.dispatch = function (channel, payload, source, ampSymbol) {\n if (source === void 0) { source = ''; }\n if (this.protectedChannels.indexOf(channel) > -1) {\n var hasAccess = ampSymbol === AMPLIFY_SYMBOL;\n if (!hasAccess) {\n logger.warn(\"WARNING: \" + channel + \" is protected and dispatching on it can have unintended consequences\");\n }\n }\n var capsule = {\n channel: channel,\n payload: __assign({}, payload),\n source: source,\n patternInfo: [],\n };\n try {\n this._toListeners(capsule);\n }\n catch (e) {\n logger.error(e);\n }\n };\n HubClass.prototype.listen = function (channel, callback, listenerName) {\n var _this = this;\n if (listenerName === void 0) { listenerName = 'noname'; }\n var cb;\n // Check for legacy onHubCapsule callback for backwards compatability\n if (isLegacyCallback(callback)) {\n logger.warn(\"WARNING onHubCapsule is Deprecated. Please pass in a callback.\");\n cb = callback.onHubCapsule.bind(callback);\n }\n else if (typeof callback !== 'function') {\n throw new Error('No callback supplied to Hub');\n }\n else {\n cb = callback;\n }\n if (channel instanceof RegExp) {\n this.patterns.push({\n pattern: channel,\n callback: cb,\n });\n }\n else {\n var holder = this.listeners[channel];\n if (!holder) {\n holder = [];\n this.listeners[channel] = holder;\n }\n holder.push({\n name: listenerName,\n callback: cb,\n });\n }\n return function () {\n _this.remove(channel, cb);\n };\n };\n HubClass.prototype._toListeners = function (capsule) {\n var channel = capsule.channel, payload = capsule.payload;\n var holder = this.listeners[channel];\n if (holder) {\n holder.forEach(function (listener) {\n logger.debug(\"Dispatching to \" + channel + \" with \", payload);\n try {\n listener.callback(capsule);\n }\n catch (e) {\n logger.error(e);\n }\n });\n }\n if (this.patterns.length > 0) {\n if (!payload.message) {\n logger.warn(\"Cannot perform pattern matching without a message key\");\n return;\n }\n var payloadStr_1 = payload.message;\n this.patterns.forEach(function (pattern) {\n var match = payloadStr_1.match(pattern.pattern);\n if (match) {\n var _a = __read(match), groups = _a.slice(1);\n var dispatchingCapsule = __assign(__assign({}, capsule), { patternInfo: groups });\n try {\n pattern.callback(dispatchingCapsule);\n }\n catch (e) {\n logger.error(e);\n }\n }\n });\n }\n };\n return HubClass;\n}());\nexport { HubClass };\n/*We export a __default__ instance of HubClass to use it as a\npseudo Singleton for the main messaging bus, however you can still create\nyour own instance of HubClass() for a separate \"private bus\" of events.*/\nexport var Hub = new HubClass('__default__');\n/**\n * @deprecated use named import\n */\nexport default Hub;\n//# sourceMappingURL=Hub.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger } from '../Logger';\nvar logger = new Logger('I18n');\n/**\n * Language transition class\n */\nvar I18n = /** @class */ (function () {\n /**\n * @constructor\n * Initialize with configurations\n * @param {Object} options\n */\n function I18n(options) {\n /**\n * @private\n */\n this._options = null;\n /**\n * @private\n */\n this._lang = null;\n /**\n * @private\n */\n this._dict = {};\n this._options = Object.assign({}, options);\n this._lang = this._options.language;\n if (!this._lang &&\n typeof window !== 'undefined' &&\n window &&\n window.navigator) {\n this._lang = window.navigator.language;\n }\n logger.debug(this._lang);\n }\n /**\n * @method\n * Explicitly setting language\n * @param {String} lang\n */\n I18n.prototype.setLanguage = function (lang) {\n this._lang = lang;\n };\n /**\n * @method\n * Get value\n * @param {String} key\n * @param {String} defVal - Default value\n */\n I18n.prototype.get = function (key, defVal) {\n if (defVal === void 0) { defVal = undefined; }\n if (!this._lang) {\n return typeof defVal !== 'undefined' ? defVal : key;\n }\n var lang = this._lang;\n var val = this.getByLanguage(key, lang);\n if (val) {\n return val;\n }\n if (lang.indexOf('-') > 0) {\n val = this.getByLanguage(key, lang.split('-')[0]);\n }\n if (val) {\n return val;\n }\n return typeof defVal !== 'undefined' ? defVal : key;\n };\n /**\n * @method\n * Get value according to specified language\n * @param {String} key\n * @param {String} language - Specified langurage to be used\n * @param {String} defVal - Default value\n */\n I18n.prototype.getByLanguage = function (key, language, defVal) {\n if (defVal === void 0) { defVal = null; }\n if (!language) {\n return defVal;\n }\n var lang_dict = this._dict[language];\n if (!lang_dict) {\n return defVal;\n }\n return lang_dict[key];\n };\n /**\n * @method\n * Add vocabularies for one language\n * @param {String} language - Language of the dictionary\n * @param {Object} vocabularies - Object that has key-value as dictionary entry\n */\n I18n.prototype.putVocabulariesForLanguage = function (language, vocabularies) {\n var lang_dict = this._dict[language];\n if (!lang_dict) {\n lang_dict = this._dict[language] = {};\n }\n Object.assign(lang_dict, vocabularies);\n };\n /**\n * @method\n * Add vocabularies for one language\n * @param {Object} vocabularies - Object that has language as key,\n * vocabularies of each language as value\n */\n I18n.prototype.putVocabularies = function (vocabularies) {\n var _this = this;\n Object.keys(vocabularies).map(function (key) {\n _this.putVocabulariesForLanguage(key, vocabularies[key]);\n });\n };\n return I18n;\n}());\nexport { I18n };\n//# sourceMappingURL=I18n.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { I18n as I18nClass } from './I18n';\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { Amplify } from '../Amplify';\nvar logger = new Logger('I18n');\nvar _config = null;\nvar _i18n = null;\n/**\n * Export I18n APIs\n */\nvar I18n = /** @class */ (function () {\n function I18n() {\n }\n /**\n * @static\n * @method\n * Configure I18n part\n * @param {Object} config - Configuration of the I18n\n */\n I18n.configure = function (config) {\n logger.debug('configure I18n');\n if (!config) {\n return _config;\n }\n _config = Object.assign({}, _config, config.I18n || config);\n I18n.createInstance();\n return _config;\n };\n I18n.getModuleName = function () {\n return 'I18n';\n };\n /**\n * @static\n * @method\n * Create an instance of I18n for the library\n */\n I18n.createInstance = function () {\n logger.debug('create I18n instance');\n if (_i18n) {\n return;\n }\n _i18n = new I18nClass(_config);\n };\n /**\n * @static @method\n * Explicitly setting language\n * @param {String} lang\n */\n I18n.setLanguage = function (lang) {\n I18n.checkConfig();\n return _i18n.setLanguage(lang);\n };\n /**\n * @static @method\n * Get value\n * @param {String} key\n * @param {String} defVal - Default value\n */\n I18n.get = function (key, defVal) {\n if (!I18n.checkConfig()) {\n return typeof defVal === 'undefined' ? key : defVal;\n }\n return _i18n.get(key, defVal);\n };\n /**\n * @static\n * @method\n * Add vocabularies for one language\n * @param {String} langurage - Language of the dictionary\n * @param {Object} vocabularies - Object that has key-value as dictionary entry\n */\n I18n.putVocabulariesForLanguage = function (language, vocabularies) {\n I18n.checkConfig();\n return _i18n.putVocabulariesForLanguage(language, vocabularies);\n };\n /**\n * @static\n * @method\n * Add vocabularies for one language\n * @param {Object} vocabularies - Object that has language as key,\n * vocabularies of each language as value\n */\n I18n.putVocabularies = function (vocabularies) {\n I18n.checkConfig();\n return _i18n.putVocabularies(vocabularies);\n };\n I18n.checkConfig = function () {\n if (!_i18n) {\n _i18n = new I18nClass(_config);\n }\n return true;\n };\n return I18n;\n}());\nexport { I18n };\nAmplify.register(I18n);\n/**\n * @deprecated use named import\n */\nexport default I18n;\n//# sourceMappingURL=index.js.map","/**\n * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nimport { Amplify } from '../Amplify';\n/**\n * Provides a means to registering a service worker in the browser\n * and communicating with it via postMessage events.\n * https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/\n *\n * postMessage events are currently not supported in all browsers. See:\n * https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API\n *\n * At the minmum this class will register the service worker and listen\n * and attempt to dispatch messages on state change and record analytics\n * events based on the service worker lifecycle.\n */\nvar ServiceWorkerClass = /** @class */ (function () {\n function ServiceWorkerClass() {\n // The AWS Amplify logger\n this._logger = new Logger('ServiceWorker');\n }\n Object.defineProperty(ServiceWorkerClass.prototype, \"serviceWorker\", {\n /**\n * Get the currently active service worker\n */\n get: function () {\n return this._serviceWorker;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Register the service-worker.js file in the browser\n * Make sure the service-worker.js is part of the build\n * for example with Angular, modify the angular-cli.json file\n * and add to \"assets\" array \"service-worker.js\"\n * @param {string} - (optional) Service worker file. Defaults to \"/service-worker.js\"\n * @param {string} - (optional) The service worker scope. Defaults to \"/\"\n * - API Doc: https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register\n * @returns {Promise}\n *\t- resolve(ServiceWorkerRegistration)\n *\t- reject(Error)\n **/\n ServiceWorkerClass.prototype.register = function (filePath, scope) {\n var _this = this;\n if (filePath === void 0) { filePath = '/service-worker.js'; }\n if (scope === void 0) { scope = '/'; }\n this._logger.debug(\"registering \" + filePath);\n this._logger.debug(\"registering service worker with scope \" + scope);\n return new Promise(function (resolve, reject) {\n if (navigator && 'serviceWorker' in navigator) {\n navigator.serviceWorker\n .register(filePath, {\n scope: scope,\n })\n .then(function (registration) {\n if (registration.installing) {\n _this._serviceWorker = registration.installing;\n }\n else if (registration.waiting) {\n _this._serviceWorker = registration.waiting;\n }\n else if (registration.active) {\n _this._serviceWorker = registration.active;\n }\n _this._registration = registration;\n _this._setupListeners();\n _this._logger.debug(\"Service Worker Registration Success: \" + registration);\n return resolve(registration);\n })\n .catch(function (error) {\n _this._logger.debug(\"Service Worker Registration Failed \" + error);\n return reject(error);\n });\n }\n else {\n return reject(new Error('Service Worker not available'));\n }\n });\n };\n /**\n * Enable web push notifications. If not subscribed, a new subscription will\n * be created and registered.\n * \tTest Push Server: https://web-push-codelab.glitch.me/\n * \tPush Server Libraries: https://github.com/web-push-libs/\n * \tAPI Doc: https://developers.google.com/web/fundamentals/codelabs/push-notifications/\n * @param publicKey\n * @returns {Promise}\n * \t- resolve(PushSubscription)\n * - reject(Error)\n */\n ServiceWorkerClass.prototype.enablePush = function (publicKey) {\n var _this = this;\n if (!this._registration)\n throw new Error('Service Worker not registered');\n this._publicKey = publicKey;\n return new Promise(function (resolve, reject) {\n if (browserOrNode().isBrowser) {\n _this._registration.pushManager.getSubscription().then(function (subscription) {\n if (subscription) {\n _this._subscription = subscription;\n _this._logger.debug(\"User is subscribed to push: \" + JSON.stringify(subscription));\n resolve(subscription);\n }\n else {\n _this._logger.debug(\"User is NOT subscribed to push\");\n return _this._registration.pushManager\n .subscribe({\n userVisibleOnly: true,\n applicationServerKey: _this._urlB64ToUint8Array(publicKey),\n })\n .then(function (subscription) {\n _this._subscription = subscription;\n _this._logger.debug(\"User subscribed: \" + JSON.stringify(subscription));\n resolve(subscription);\n })\n .catch(function (error) {\n _this._logger.error(error);\n });\n }\n });\n }\n else {\n return reject(new Error('Service Worker not available'));\n }\n });\n };\n /**\n * Convert a base64 encoded string to a Uint8 array for the push server key\n * @param base64String\n */\n ServiceWorkerClass.prototype._urlB64ToUint8Array = function (base64String) {\n var padding = '='.repeat((4 - (base64String.length % 4)) % 4);\n var base64 = (base64String + padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n var rawData = window.atob(base64);\n var outputArray = new Uint8Array(rawData.length);\n for (var i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n };\n /**\n * Send a message to the service worker. The service worker needs\n * to implement `self.addEventListener('message') to handle the\n * message. This ***currently*** does not work in Safari or IE.\n * @param {object | string} - An arbitrary JSON object or string message to send to the service worker\n *\t- see: https://developer.mozilla.org/en-US/docs/Web/API/Transferable\n * @returns {Promise}\n **/\n ServiceWorkerClass.prototype.send = function (message) {\n if (this._serviceWorker) {\n this._serviceWorker.postMessage(typeof message === 'object' ? JSON.stringify(message) : message);\n }\n };\n /**\n * Listen for service worker state change and message events\n * https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/state\n **/\n ServiceWorkerClass.prototype._setupListeners = function () {\n var _this = this;\n this._serviceWorker.addEventListener('statechange', function (event) {\n var currentState = _this._serviceWorker.state;\n _this._logger.debug(\"ServiceWorker statechange: \" + currentState);\n if (Amplify.Analytics && typeof Amplify.Analytics.record === 'function') {\n Amplify.Analytics.record({\n name: 'ServiceWorker',\n attributes: {\n state: currentState,\n },\n });\n }\n });\n this._serviceWorker.addEventListener('message', function (event) {\n _this._logger.debug(\"ServiceWorker message event: \" + event);\n });\n };\n return ServiceWorkerClass;\n}());\nexport { ServiceWorkerClass };\n/**\n * @deprecated use named import\n */\nexport default ServiceWorkerClass;\n//# sourceMappingURL=ServiceWorker.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { Amplify } from './Amplify';\nimport { Platform } from './Platform';\nexport { AmplifyClass } from './Amplify';\nexport { ClientDevice } from './ClientDevice';\nexport { ConsoleLogger, ConsoleLogger as Logger } from './Logger';\nexport * from './Errors';\nexport { Hub } from './Hub';\nexport { I18n } from './I18n';\nexport * from './JS';\nexport { Signer } from './Signer';\nexport * from './Parser';\nexport * from './Providers';\nexport { FacebookOAuth, GoogleOAuth } from './OAuthHelper';\nexport * from './RNComponents';\nexport { Credentials, CredentialsClass } from './Credentials';\nexport { ServiceWorker } from './ServiceWorker';\nexport { StorageHelper, MemoryStorage } from './StorageHelper';\nexport { UniversalStorage } from './UniversalStorage';\nexport { Platform, getAmplifyUserAgent } from './Platform';\nexport * from './constants';\nexport var Constants = {\n userAgent: Platform.userAgent,\n};\nexport * from './constants';\nexport * from './Util';\nexport { Amplify };\n/**\n * @deprecated use named import\n */\nexport default Amplify;\n//# sourceMappingURL=index.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { ConsoleLogger as Logger } from './Logger';\nvar logger = new Logger('Parser');\nexport var parseMobileHubConfig = function (config) {\n var amplifyConfig = {};\n // Analytics\n if (config['aws_mobile_analytics_app_id']) {\n var Analytics = {\n AWSPinpoint: {\n appId: config['aws_mobile_analytics_app_id'],\n region: config['aws_mobile_analytics_app_region'],\n },\n };\n amplifyConfig.Analytics = Analytics;\n }\n // Auth\n if (config['aws_cognito_identity_pool_id'] || config['aws_user_pools_id']) {\n amplifyConfig.Auth = {\n userPoolId: config['aws_user_pools_id'],\n userPoolWebClientId: config['aws_user_pools_web_client_id'],\n region: config['aws_cognito_region'],\n identityPoolId: config['aws_cognito_identity_pool_id'],\n identityPoolRegion: config['aws_cognito_region'],\n mandatorySignIn: config['aws_mandatory_sign_in'] === 'enable',\n };\n }\n // Storage\n var storageConfig;\n if (config['aws_user_files_s3_bucket']) {\n storageConfig = {\n AWSS3: {\n bucket: config['aws_user_files_s3_bucket'],\n region: config['aws_user_files_s3_bucket_region'],\n dangerouslyConnectToHttpEndpointForTesting: config['aws_user_files_s3_dangerously_connect_to_http_endpoint_for_testing'],\n },\n };\n }\n else {\n storageConfig = config ? config.Storage || config : {};\n }\n // Logging\n if (config['Logging']) {\n amplifyConfig.Logging = __assign(__assign({}, config['Logging']), { region: config['aws_project_region'] });\n }\n // Geo\n if (config['geo']) {\n amplifyConfig.Geo = Object.assign({}, config.geo);\n if (config.geo['amazon_location_service']) {\n amplifyConfig.Geo = {\n AmazonLocationService: config.geo['amazon_location_service'],\n };\n }\n }\n amplifyConfig.Analytics = Object.assign({}, amplifyConfig.Analytics, config.Analytics);\n amplifyConfig.Auth = Object.assign({}, amplifyConfig.Auth, config.Auth);\n amplifyConfig.Storage = Object.assign({}, storageConfig);\n amplifyConfig.Logging = Object.assign({}, amplifyConfig.Logging, config.Logging);\n logger.debug('parse config', config, 'to amplifyconfig', amplifyConfig);\n return amplifyConfig;\n};\n/**\n * @deprecated use per-function export\n */\nvar Parser = /** @class */ (function () {\n function Parser() {\n }\n Parser.parseMobilehubConfig = parseMobileHubConfig;\n return Parser;\n}());\nexport { Parser };\n/**\n * @deprecated use per-function export\n */\nexport default Parser;\n//# sourceMappingURL=Parser.js.map","import Cookies from 'universal-cookie';\nimport { browserOrNode } from '../JS';\nvar isBrowser = browserOrNode().isBrowser;\nvar UniversalStorage = /** @class */ (function () {\n function UniversalStorage(context) {\n if (context === void 0) { context = {}; }\n this.cookies = new Cookies();\n this.store = isBrowser ? window.localStorage : Object.create(null);\n this.cookies = context.req\n ? new Cookies(context.req.headers.cookie)\n : new Cookies();\n Object.assign(this.store, this.cookies.getAll());\n }\n Object.defineProperty(UniversalStorage.prototype, \"length\", {\n get: function () {\n return Object.entries(this.store).length;\n },\n enumerable: true,\n configurable: true\n });\n UniversalStorage.prototype.clear = function () {\n var _this = this;\n Array.from(new Array(this.length))\n .map(function (_, i) { return _this.key(i); })\n .forEach(function (key) { return _this.removeItem(key); });\n };\n UniversalStorage.prototype.getItem = function (key) {\n return this.getLocalItem(key);\n };\n UniversalStorage.prototype.getLocalItem = function (key) {\n return Object.prototype.hasOwnProperty.call(this.store, key)\n ? this.store[key]\n : null;\n };\n UniversalStorage.prototype.getUniversalItem = function (key) {\n return this.cookies.get(key);\n };\n UniversalStorage.prototype.key = function (index) {\n return Object.keys(this.store)[index];\n };\n UniversalStorage.prototype.removeItem = function (key) {\n this.removeLocalItem(key);\n this.removeUniversalItem(key);\n };\n UniversalStorage.prototype.removeLocalItem = function (key) {\n delete this.store[key];\n };\n UniversalStorage.prototype.removeUniversalItem = function (key) {\n this.cookies.remove(key, {\n path: '/',\n });\n };\n UniversalStorage.prototype.setItem = function (key, value) {\n this.setLocalItem(key, value);\n // keys take the shape:\n // 1. `${ProviderPrefix}.${userPoolClientId}.${username}.${tokenType}\n // 2. `${ProviderPrefix}.${userPoolClientId}.LastAuthUser\n var tokenType = key.split('.').pop();\n switch (tokenType) {\n // LastAuthUser is needed for computing other key names\n case 'LastAuthUser':\n // accessToken is required for CognitoUserSession\n case 'accessToken':\n // refreshToken originates on the client, but SSR pages won't fail when this expires\n // Note: the new `accessToken` will also be refreshed on the client (since Amplify doesn't set server-side cookies)\n case 'refreshToken':\n // Required for CognitoUserSession\n case 'idToken':\n isBrowser\n ? this.setUniversalItem(key, value)\n : this.setLocalItem(key, value);\n // userData is used when `Auth.currentAuthenticatedUser({ bypassCache: false })`.\n // Can be persisted to speed up calls to `Auth.currentAuthenticatedUser()`\n // case 'userData':\n // Ignoring clockDrift on the server for now, but needs testing\n // case 'clockDrift':\n }\n };\n UniversalStorage.prototype.setLocalItem = function (key, value) {\n this.store[key] = value;\n };\n UniversalStorage.prototype.setUniversalItem = function (key, value) {\n this.cookies.set(key, value, {\n path: '/',\n // `httpOnly` cannot be set via JavaScript: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#JavaScript_access_using_Document.cookie\n sameSite: true,\n // Allow unsecure requests to http://localhost:3000/ when in development.\n secure: window.location.hostname === 'localhost' ? false : true,\n });\n };\n return UniversalStorage;\n}());\nexport { UniversalStorage };\n//# sourceMappingURL=index.js.map","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { ConsoleLogger as LoggerClass } from './Logger';\nvar logger = new LoggerClass('Amplify');\nvar AmplifyClass = /** @class */ (function () {\n function AmplifyClass() {\n // Everything that is `register`ed is tracked here\n this._components = [];\n this._config = {};\n // All modules (with `getModuleName()`) are stored here for dependency injection\n this._modules = {};\n // for backward compatibility to avoid breaking change\n // if someone is using like Amplify.Auth\n this.Auth = null;\n this.Analytics = null;\n this.API = null;\n this.Credentials = null;\n this.Storage = null;\n this.I18n = null;\n this.Cache = null;\n this.PubSub = null;\n this.Interactions = null;\n this.Pushnotification = null;\n this.UI = null;\n this.XR = null;\n this.Predictions = null;\n this.DataStore = null;\n this.Geo = null;\n this.Logger = LoggerClass;\n this.ServiceWorker = null;\n }\n AmplifyClass.prototype.register = function (comp) {\n logger.debug('component registered in amplify', comp);\n this._components.push(comp);\n if (typeof comp.getModuleName === 'function') {\n this._modules[comp.getModuleName()] = comp;\n this[comp.getModuleName()] = comp;\n }\n else {\n logger.debug('no getModuleName method for component', comp);\n }\n // Finally configure this new component(category) loaded\n // With the new modularization changes in Amplify V3, all the Amplify\n // component are not loaded/registered right away but when they are\n // imported (and hence instantiated) in the client's app. This ensures\n // that all new components imported get correctly configured with the\n // configuration that Amplify.configure() was called with.\n comp.configure(this._config);\n };\n AmplifyClass.prototype.configure = function (config) {\n var _this = this;\n if (!config)\n return this._config;\n this._config = Object.assign(this._config, config);\n logger.debug('amplify config', this._config);\n // Dependency Injection via property-setting.\n // This avoids introducing a public method/interface/setter that's difficult to remove later.\n // Plus, it reduces `if` statements within the `constructor` and `configure` of each module\n Object.entries(this._modules).forEach(function (_a) {\n var _b = __read(_a, 2), Name = _b[0], comp = _b[1];\n // e.g. Auth.*\n Object.keys(comp).forEach(function (property) {\n // e.g. Auth[\"Credentials\"] = this._modules[\"Credentials\"] when set\n if (_this._modules[property]) {\n comp[property] = _this._modules[property];\n }\n });\n });\n this._components.map(function (comp) {\n comp.configure(_this._config);\n });\n return this._config;\n };\n AmplifyClass.prototype.addPluggable = function (pluggable) {\n if (pluggable &&\n pluggable['getCategory'] &&\n typeof pluggable['getCategory'] === 'function') {\n this._components.map(function (comp) {\n if (comp['addPluggable'] &&\n typeof comp['addPluggable'] === 'function') {\n comp.addPluggable(pluggable);\n }\n });\n }\n };\n return AmplifyClass;\n}());\nexport { AmplifyClass };\nexport var Amplify = new AmplifyClass();\n/**\n * @deprecated use named import\n */\nexport default Amplify;\n//# sourceMappingURL=Amplify.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar MIME_MAP = [\n { type: 'text/plain', ext: 'txt' },\n { type: 'text/html', ext: 'html' },\n { type: 'text/javascript', ext: 'js' },\n { type: 'text/css', ext: 'css' },\n { type: 'text/csv', ext: 'csv' },\n { type: 'text/yaml', ext: 'yml' },\n { type: 'text/yaml', ext: 'yaml' },\n { type: 'text/calendar', ext: 'ics' },\n { type: 'text/calendar', ext: 'ical' },\n { type: 'image/apng', ext: 'apng' },\n { type: 'image/bmp', ext: 'bmp' },\n { type: 'image/gif', ext: 'gif' },\n { type: 'image/x-icon', ext: 'ico' },\n { type: 'image/x-icon', ext: 'cur' },\n { type: 'image/jpeg', ext: 'jpg' },\n { type: 'image/jpeg', ext: 'jpeg' },\n { type: 'image/jpeg', ext: 'jfif' },\n { type: 'image/jpeg', ext: 'pjp' },\n { type: 'image/jpeg', ext: 'pjpeg' },\n { type: 'image/png', ext: 'png' },\n { type: 'image/svg+xml', ext: 'svg' },\n { type: 'image/tiff', ext: 'tif' },\n { type: 'image/tiff', ext: 'tiff' },\n { type: 'image/webp', ext: 'webp' },\n { type: 'application/json', ext: 'json' },\n { type: 'application/xml', ext: 'xml' },\n { type: 'application/x-sh', ext: 'sh' },\n { type: 'application/zip', ext: 'zip' },\n { type: 'application/x-rar-compressed', ext: 'rar' },\n { type: 'application/x-tar', ext: 'tar' },\n { type: 'application/x-bzip', ext: 'bz' },\n { type: 'application/x-bzip2', ext: 'bz2' },\n { type: 'application/pdf', ext: 'pdf' },\n { type: 'application/java-archive', ext: 'jar' },\n { type: 'application/msword', ext: 'doc' },\n { type: 'application/vnd.ms-excel', ext: 'xls' },\n { type: 'application/vnd.ms-excel', ext: 'xlsx' },\n { type: 'message/rfc822', ext: 'eml' },\n];\nexport var isEmpty = function (obj) {\n if (obj === void 0) { obj = {}; }\n return Object.keys(obj).length === 0;\n};\nexport var sortByField = function (list, field, dir) {\n if (!list || !list.sort) {\n return false;\n }\n var dirX = dir && dir === 'desc' ? -1 : 1;\n list.sort(function (a, b) {\n var a_val = a[field];\n var b_val = b[field];\n if (typeof b_val === 'undefined') {\n return typeof a_val === 'undefined' ? 0 : 1 * dirX;\n }\n if (typeof a_val === 'undefined') {\n return -1 * dirX;\n }\n if (a_val < b_val) {\n return -1 * dirX;\n }\n if (a_val > b_val) {\n return 1 * dirX;\n }\n return 0;\n });\n return true;\n};\nexport var objectLessAttributes = function (obj, less) {\n var ret = Object.assign({}, obj);\n if (less) {\n if (typeof less === 'string') {\n delete ret[less];\n }\n else {\n less.forEach(function (attr) {\n delete ret[attr];\n });\n }\n }\n return ret;\n};\nexport var filenameToContentType = function (filename, defVal) {\n if (defVal === void 0) { defVal = 'application/octet-stream'; }\n var name = filename.toLowerCase();\n var filtered = MIME_MAP.filter(function (mime) { return name.endsWith('.' + mime.ext); });\n return filtered.length > 0 ? filtered[0].type : defVal;\n};\nexport var isTextFile = function (contentType) {\n var type = contentType.toLowerCase();\n if (type.startsWith('text/')) {\n return true;\n }\n return ('application/json' === type ||\n 'application/xml' === type ||\n 'application/sh' === type);\n};\nexport var generateRandomString = function () {\n var result = '';\n var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n for (var i = 32; i > 0; i -= 1) {\n result += chars[Math.floor(Math.random() * chars.length)];\n }\n return result;\n};\nexport var makeQuerablePromise = function (promise) {\n if (promise.isResolved)\n return promise;\n var isPending = true;\n var isRejected = false;\n var isFullfilled = false;\n var result = promise.then(function (data) {\n isFullfilled = true;\n isPending = false;\n return data;\n }, function (e) {\n isRejected = true;\n isPending = false;\n throw e;\n });\n result.isFullfilled = function () { return isFullfilled; };\n result.isPending = function () { return isPending; };\n result.isRejected = function () { return isRejected; };\n return result;\n};\nexport var isWebWorker = function () {\n if (typeof self === 'undefined') {\n return false;\n }\n var selfContext = self;\n return typeof selfContext.WorkerGlobalScope !== 'undefined' &&\n self instanceof selfContext.WorkerGlobalScope;\n};\nexport var browserOrNode = function () {\n var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n var isNode = typeof process !== 'undefined' &&\n process.versions != null &&\n process.versions.node != null;\n return {\n isBrowser: isBrowser,\n isNode: isNode,\n };\n};\n/**\n * transfer the first letter of the keys to lowercase\n * @param {Object} obj - the object need to be transferred\n * @param {Array} whiteListForItself - whitelist itself from being transferred\n * @param {Array} whiteListForChildren - whitelist its children keys from being transferred\n */\nexport var transferKeyToLowerCase = function (obj, whiteListForItself, whiteListForChildren) {\n if (whiteListForItself === void 0) { whiteListForItself = []; }\n if (whiteListForChildren === void 0) { whiteListForChildren = []; }\n if (!isStrictObject(obj))\n return obj;\n var ret = {};\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n var transferedKey = whiteListForItself.includes(key)\n ? key\n : key[0].toLowerCase() + key.slice(1);\n ret[transferedKey] = whiteListForChildren.includes(key)\n ? obj[key]\n : transferKeyToLowerCase(obj[key], whiteListForItself, whiteListForChildren);\n }\n }\n return ret;\n};\n/**\n * transfer the first letter of the keys to lowercase\n * @param {Object} obj - the object need to be transferred\n * @param {Array} whiteListForItself - whitelist itself from being transferred\n * @param {Array} whiteListForChildren - whitelist its children keys from being transferred\n */\nexport var transferKeyToUpperCase = function (obj, whiteListForItself, whiteListForChildren) {\n if (whiteListForItself === void 0) { whiteListForItself = []; }\n if (whiteListForChildren === void 0) { whiteListForChildren = []; }\n if (!isStrictObject(obj))\n return obj;\n var ret = {};\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n var transferredKey = whiteListForItself.includes(key)\n ? key\n : key[0].toUpperCase() + key.slice(1);\n ret[transferredKey] = whiteListForChildren.includes(key)\n ? obj[key]\n : transferKeyToUpperCase(obj[key], whiteListForItself, whiteListForChildren);\n }\n }\n return ret;\n};\n/**\n * Return true if the object is a strict object\n * which means it's not Array, Function, Number, String, Boolean or Null\n * @param obj the Object\n */\nexport var isStrictObject = function (obj) {\n return (obj instanceof Object &&\n !(obj instanceof Array) &&\n !(obj instanceof Function) &&\n !(obj instanceof Number) &&\n !(obj instanceof String) &&\n !(obj instanceof Boolean));\n};\n/**\n * @deprecated use per-function imports\n */\nvar JS = /** @class */ (function () {\n function JS() {\n }\n JS.isEmpty = isEmpty;\n JS.sortByField = sortByField;\n JS.objectLessAttributes = objectLessAttributes;\n JS.filenameToContentType = filenameToContentType;\n JS.isTextFile = isTextFile;\n JS.generateRandomString = generateRandomString;\n JS.makeQuerablePromise = makeQuerablePromise;\n JS.isWebWorker = isWebWorker;\n JS.browserOrNode = browserOrNode;\n JS.transferKeyToLowerCase = transferKeyToLowerCase;\n JS.transferKeyToUpperCase = transferKeyToUpperCase;\n JS.isStrictObject = isStrictObject;\n return JS;\n}());\nexport { JS };\n/**\n * @deprecated use per-function imports\n */\nexport default JS;\n//# sourceMappingURL=JS.js.map","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n// Logging constants\nvar AWS_CLOUDWATCH_BASE_BUFFER_SIZE = 26;\nvar AWS_CLOUDWATCH_MAX_BATCH_EVENT_SIZE = 1048576;\nvar AWS_CLOUDWATCH_MAX_EVENT_SIZE = 256000;\nvar AWS_CLOUDWATCH_CATEGORY = 'Logging';\nvar AWS_CLOUDWATCH_PROVIDER_NAME = 'AWSCloudWatch';\nvar NO_CREDS_ERROR_STRING = 'No credentials';\nvar RETRY_ERROR_CODES = [\n 'ResourceNotFoundException',\n 'InvalidSequenceTokenException',\n];\nexport { AWS_CLOUDWATCH_BASE_BUFFER_SIZE, AWS_CLOUDWATCH_CATEGORY, AWS_CLOUDWATCH_MAX_BATCH_EVENT_SIZE, AWS_CLOUDWATCH_MAX_EVENT_SIZE, AWS_CLOUDWATCH_PROVIDER_NAME, NO_CREDS_ERROR_STRING, RETRY_ERROR_CODES, };\n//# sourceMappingURL=Constants.js.map","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { AWS_CLOUDWATCH_CATEGORY } from '../Util/Constants';\nvar LOG_LEVELS = {\n VERBOSE: 1,\n DEBUG: 2,\n INFO: 3,\n WARN: 4,\n ERROR: 5,\n};\nexport var LOG_TYPE;\n(function (LOG_TYPE) {\n LOG_TYPE[\"DEBUG\"] = \"DEBUG\";\n LOG_TYPE[\"ERROR\"] = \"ERROR\";\n LOG_TYPE[\"INFO\"] = \"INFO\";\n LOG_TYPE[\"WARN\"] = \"WARN\";\n LOG_TYPE[\"VERBOSE\"] = \"VERBOSE\";\n})(LOG_TYPE || (LOG_TYPE = {}));\n/**\n * Write logs\n * @class Logger\n */\nvar ConsoleLogger = /** @class */ (function () {\n /**\n * @constructor\n * @param {string} name - Name of the logger\n */\n function ConsoleLogger(name, level) {\n if (level === void 0) { level = LOG_TYPE.WARN; }\n this.name = name;\n this.level = level;\n this._pluggables = [];\n }\n ConsoleLogger.prototype._padding = function (n) {\n return n < 10 ? '0' + n : '' + n;\n };\n ConsoleLogger.prototype._ts = function () {\n var dt = new Date();\n return ([this._padding(dt.getMinutes()), this._padding(dt.getSeconds())].join(':') +\n '.' +\n dt.getMilliseconds());\n };\n ConsoleLogger.prototype.configure = function (config) {\n if (!config)\n return this._config;\n this._config = config;\n return this._config;\n };\n /**\n * Write log\n * @method\n * @memeberof Logger\n * @param {LOG_TYPE|string} type - log type, default INFO\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype._log = function (type) {\n var e_1, _a;\n var msg = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n msg[_i - 1] = arguments[_i];\n }\n var logger_level_name = this.level;\n if (ConsoleLogger.LOG_LEVEL) {\n logger_level_name = ConsoleLogger.LOG_LEVEL;\n }\n if (typeof window !== 'undefined' && window.LOG_LEVEL) {\n logger_level_name = window.LOG_LEVEL;\n }\n var logger_level = LOG_LEVELS[logger_level_name];\n var type_level = LOG_LEVELS[type];\n if (!(type_level >= logger_level)) {\n // Do nothing if type is not greater than or equal to logger level (handle undefined)\n return;\n }\n var log = console.log.bind(console);\n if (type === LOG_TYPE.ERROR && console.error) {\n log = console.error.bind(console);\n }\n if (type === LOG_TYPE.WARN && console.warn) {\n log = console.warn.bind(console);\n }\n var prefix = \"[\" + type + \"] \" + this._ts() + \" \" + this.name;\n var message = '';\n if (msg.length === 1 && typeof msg[0] === 'string') {\n message = prefix + \" - \" + msg[0];\n log(message);\n }\n else if (msg.length === 1) {\n message = prefix + \" \" + msg[0];\n log(prefix, msg[0]);\n }\n else if (typeof msg[0] === 'string') {\n var obj = msg.slice(1);\n if (obj.length === 1) {\n obj = obj[0];\n }\n message = prefix + \" - \" + msg[0] + \" \" + obj;\n log(prefix + \" - \" + msg[0], obj);\n }\n else {\n message = prefix + \" \" + msg;\n log(prefix, msg);\n }\n try {\n for (var _b = __values(this._pluggables), _c = _b.next(); !_c.done; _c = _b.next()) {\n var plugin = _c.value;\n var logEvent = { message: message, timestamp: Date.now() };\n plugin.pushLogs([logEvent]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n /**\n * Write General log. Default to INFO\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.log = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spread([LOG_TYPE.INFO], msg));\n };\n /**\n * Write INFO log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.info = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spread([LOG_TYPE.INFO], msg));\n };\n /**\n * Write WARN log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.warn = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spread([LOG_TYPE.WARN], msg));\n };\n /**\n * Write ERROR log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.error = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spread([LOG_TYPE.ERROR], msg));\n };\n /**\n * Write DEBUG log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.debug = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spread([LOG_TYPE.DEBUG], msg));\n };\n /**\n * Write VERBOSE log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.verbose = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spread([LOG_TYPE.VERBOSE], msg));\n };\n ConsoleLogger.prototype.addPluggable = function (pluggable) {\n if (pluggable && pluggable.getCategoryName() === AWS_CLOUDWATCH_CATEGORY) {\n this._pluggables.push(pluggable);\n pluggable.configure(this._config);\n }\n };\n ConsoleLogger.prototype.listPluggables = function () {\n return this._pluggables;\n };\n ConsoleLogger.LOG_LEVEL = null;\n return ConsoleLogger;\n}());\nexport { ConsoleLogger };\n//# sourceMappingURL=ConsoleLogger.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { StorageHelper } from '@aws-amplify/core';\n/**\n * Default cache config\n */\nexport var defaultConfig = {\n keyPrefix: 'aws-amplify-cache',\n capacityInBytes: 1048576,\n itemMaxSize: 210000,\n defaultTTL: 259200000,\n defaultPriority: 5,\n warningThreshold: 0.8,\n // the storage helper will check if localStorage exists,\n // if not, will use a in-memory object instead\n storage: new StorageHelper().getStorage(),\n};\n/**\n * return the byte size of the string\n * @param str\n */\nexport function getByteLength(str) {\n var ret = 0;\n ret = str.length;\n for (var i = str.length; i >= 0; i -= 1) {\n var charCode = str.charCodeAt(i);\n if (charCode > 0x7f && charCode <= 0x7ff) {\n ret += 1;\n }\n else if (charCode > 0x7ff && charCode <= 0xffff) {\n ret += 2;\n }\n // trail surrogate\n if (charCode >= 0xdc00 && charCode <= 0xdfff) {\n i -= 1;\n }\n }\n return ret;\n}\n/**\n * get current time\n */\nexport function getCurrTime() {\n var currTime = new Date();\n return currTime.getTime();\n}\n/**\n * check if passed value is an integer\n */\nexport function isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n return _isInteger(value);\n}\nfunction _isInteger(value) {\n return (typeof value === 'number' && isFinite(value) && Math.floor(value) === value);\n}\n/**\n * provide an object as the in-memory cache\n */\nvar store = {};\nvar CacheObject = /** @class */ (function () {\n function CacheObject() {\n }\n CacheObject.clear = function () {\n store = {};\n };\n CacheObject.getItem = function (key) {\n return store[key] || null;\n };\n CacheObject.setItem = function (key, value) {\n store[key] = value;\n };\n CacheObject.removeItem = function (key) {\n delete store[key];\n };\n return CacheObject;\n}());\nexport { CacheObject };\n//# sourceMappingURL=CacheUtils.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { defaultConfig, getCurrTime } from './Utils';\nimport { StorageCache } from './StorageCache';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('Cache');\n/**\n * Customized storage based on the SessionStorage or LocalStorage with LRU implemented\n */\nvar BrowserStorageCacheClass = /** @class */ (function (_super) {\n __extends(BrowserStorageCacheClass, _super);\n /**\n * initialize the cache\n * @param config - the configuration of the cache\n */\n function BrowserStorageCacheClass(config) {\n var _this = this;\n var cacheConfig = config\n ? Object.assign({}, defaultConfig, config)\n : defaultConfig;\n _this = _super.call(this, cacheConfig) || this;\n _this.config.storage = cacheConfig.storage;\n _this.getItem = _this.getItem.bind(_this);\n _this.setItem = _this.setItem.bind(_this);\n _this.removeItem = _this.removeItem.bind(_this);\n return _this;\n }\n /**\n * decrease current size of the cache\n *\n * @private\n * @param amount - the amount of the cache size which needs to be decreased\n */\n BrowserStorageCacheClass.prototype._decreaseCurSizeInBytes = function (amount) {\n var curSize = this.getCacheCurSize();\n this.config.storage.setItem(this.cacheCurSizeKey, (curSize - amount).toString());\n };\n /**\n * increase current size of the cache\n *\n * @private\n * @param amount - the amount of the cache szie which need to be increased\n */\n BrowserStorageCacheClass.prototype._increaseCurSizeInBytes = function (amount) {\n var curSize = this.getCacheCurSize();\n this.config.storage.setItem(this.cacheCurSizeKey, (curSize + amount).toString());\n };\n /**\n * update the visited time if item has been visited\n *\n * @private\n * @param item - the item which need to be refreshed\n * @param prefixedKey - the key of the item\n *\n * @return the refreshed item\n */\n BrowserStorageCacheClass.prototype._refreshItem = function (item, prefixedKey) {\n item.visitedTime = getCurrTime();\n this.config.storage.setItem(prefixedKey, JSON.stringify(item));\n return item;\n };\n /**\n * check wether item is expired\n *\n * @private\n * @param key - the key of the item\n *\n * @return true if the item is expired.\n */\n BrowserStorageCacheClass.prototype._isExpired = function (key) {\n var text = this.config.storage.getItem(key);\n var item = JSON.parse(text);\n if (getCurrTime() >= item.expires) {\n return true;\n }\n return false;\n };\n /**\n * delete item from cache\n *\n * @private\n * @param prefixedKey - the key of the item\n * @param size - optional, the byte size of the item\n */\n BrowserStorageCacheClass.prototype._removeItem = function (prefixedKey, size) {\n var itemSize = size\n ? size\n : JSON.parse(this.config.storage.getItem(prefixedKey)).byteSize;\n this._decreaseCurSizeInBytes(itemSize);\n // remove the cache item\n this.config.storage.removeItem(prefixedKey);\n };\n /**\n * put item into cache\n *\n * @private\n * @param prefixedKey - the key of the item\n * @param itemData - the value of the item\n * @param itemSizeInBytes - the byte size of the item\n */\n BrowserStorageCacheClass.prototype._setItem = function (prefixedKey, item) {\n // update the cache size\n this._increaseCurSizeInBytes(item.byteSize);\n try {\n this.config.storage.setItem(prefixedKey, JSON.stringify(item));\n }\n catch (setItemErr) {\n // if failed, we need to rollback the cache size\n this._decreaseCurSizeInBytes(item.byteSize);\n logger.error(\"Failed to set item \" + setItemErr);\n }\n };\n /**\n * total space needed when poping out items\n *\n * @private\n * @param itemSize\n *\n * @return total space needed\n */\n BrowserStorageCacheClass.prototype._sizeToPop = function (itemSize) {\n var spaceItemNeed = this.getCacheCurSize() + itemSize - this.config.capacityInBytes;\n var cacheThresholdSpace = (1 - this.config.warningThreshold) * this.config.capacityInBytes;\n return spaceItemNeed > cacheThresholdSpace\n ? spaceItemNeed\n : cacheThresholdSpace;\n };\n /**\n * see whether cache is full\n *\n * @private\n * @param itemSize\n *\n * @return true if cache is full\n */\n BrowserStorageCacheClass.prototype._isCacheFull = function (itemSize) {\n return itemSize + this.getCacheCurSize() > this.config.capacityInBytes;\n };\n /**\n * scan the storage and find out all the keys owned by this cache\n * also clean the expired keys while scanning\n *\n * @private\n *\n * @return array of keys\n */\n BrowserStorageCacheClass.prototype._findValidKeys = function () {\n var keys = [];\n var keyInCache = [];\n // get all keys in Storage\n for (var i = 0; i < this.config.storage.length; i += 1) {\n keyInCache.push(this.config.storage.key(i));\n }\n // find those items which belong to our cache and also clean those expired items\n for (var i = 0; i < keyInCache.length; i += 1) {\n var key = keyInCache[i];\n if (key.indexOf(this.config.keyPrefix) === 0 &&\n key !== this.cacheCurSizeKey) {\n if (this._isExpired(key)) {\n this._removeItem(key);\n }\n else {\n keys.push(key);\n }\n }\n }\n return keys;\n };\n /**\n * get all the items we have, sort them by their priority,\n * if priority is same, sort them by their last visited time\n * pop out items from the low priority (5 is the lowest)\n *\n * @private\n * @param keys - all the keys in this cache\n * @param sizeToPop - the total size of the items which needed to be poped out\n */\n BrowserStorageCacheClass.prototype._popOutItems = function (keys, sizeToPop) {\n var items = [];\n var remainedSize = sizeToPop;\n // get the items from Storage\n for (var i = 0; i < keys.length; i += 1) {\n var val = this.config.storage.getItem(keys[i]);\n if (val != null) {\n var item = JSON.parse(val);\n items.push(item);\n }\n }\n // first compare priority\n // then compare visited time\n items.sort(function (a, b) {\n if (a.priority > b.priority) {\n return -1;\n }\n else if (a.priority < b.priority) {\n return 1;\n }\n else {\n if (a.visitedTime < b.visitedTime) {\n return -1;\n }\n else\n return 1;\n }\n });\n for (var i = 0; i < items.length; i += 1) {\n // pop out items until we have enough room for new item\n this._removeItem(items[i].key, items[i].byteSize);\n remainedSize -= items[i].byteSize;\n if (remainedSize <= 0) {\n return;\n }\n }\n };\n /**\n * Set item into cache. You can put number, string, boolean or object.\n * The cache will first check whether has the same key.\n * If it has, it will delete the old item and then put the new item in\n * The cache will pop out items if it is full\n * You can specify the cache item options. The cache will abort and output a warning:\n * If the key is invalid\n * If the size of the item exceeds itemMaxSize.\n * If the value is undefined\n * If incorrect cache item configuration\n * If error happened with browser storage\n *\n * @param key - the key of the item\n * @param value - the value of the item\n * @param {Object} [options] - optional, the specified meta-data\n */\n BrowserStorageCacheClass.prototype.setItem = function (key, value, options) {\n logger.log(\"Set item: key is \" + key + \", value is \" + value + \" with options: \" + options);\n var prefixedKey = this.config.keyPrefix + key;\n // invalid keys\n if (prefixedKey === this.config.keyPrefix ||\n prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return;\n }\n if (typeof value === 'undefined') {\n logger.warn(\"The value of item should not be undefined!\");\n return;\n }\n var cacheItemOptions = {\n priority: options && options.priority !== undefined\n ? options.priority\n : this.config.defaultPriority,\n expires: options && options.expires !== undefined\n ? options.expires\n : this.config.defaultTTL + getCurrTime(),\n };\n if (cacheItemOptions.priority < 1 || cacheItemOptions.priority > 5) {\n logger.warn(\"Invalid parameter: priority due to out or range. It should be within 1 and 5.\");\n return;\n }\n var item = this.fillCacheItem(prefixedKey, value, cacheItemOptions);\n // check wether this item is too big;\n if (item.byteSize > this.config.itemMaxSize) {\n logger.warn(\"Item with key: \" + key + \" you are trying to put into is too big!\");\n return;\n }\n try {\n // first look into the storage, if it exists, delete it.\n var val = this.config.storage.getItem(prefixedKey);\n if (val) {\n this._removeItem(prefixedKey, JSON.parse(val).byteSize);\n }\n // check whether the cache is full\n if (this._isCacheFull(item.byteSize)) {\n var validKeys = this._findValidKeys();\n // check again and then pop out items\n if (this._isCacheFull(item.byteSize)) {\n var sizeToPop = this._sizeToPop(item.byteSize);\n this._popOutItems(validKeys, sizeToPop);\n }\n }\n // put item in the cache\n // may failed due to storage full\n this._setItem(prefixedKey, item);\n }\n catch (e) {\n logger.warn(\"setItem failed! \" + e);\n }\n };\n /**\n * Get item from cache. It will return null if item doesn’t exist or it has been expired.\n * If you specified callback function in the options,\n * then the function will be executed if no such item in the cache\n * and finally put the return value into cache.\n * Please make sure the callback function will return the value you want to put into the cache.\n * The cache will abort output a warning:\n * If the key is invalid\n * If error happened with browser storage\n *\n * @param key - the key of the item\n * @param {Object} [options] - the options of callback function\n *\n * @return - return the value of the item\n */\n BrowserStorageCacheClass.prototype.getItem = function (key, options) {\n logger.log(\"Get item: key is \" + key + \" with options \" + options);\n var ret = null;\n var prefixedKey = this.config.keyPrefix + key;\n if (prefixedKey === this.config.keyPrefix ||\n prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return null;\n }\n try {\n ret = this.config.storage.getItem(prefixedKey);\n if (ret != null) {\n if (this._isExpired(prefixedKey)) {\n // if expired, remove that item and return null\n this._removeItem(prefixedKey, JSON.parse(ret).byteSize);\n ret = null;\n }\n else {\n // if not expired, great, return the value and refresh it\n var item = JSON.parse(ret);\n item = this._refreshItem(item, prefixedKey);\n return item.data;\n }\n }\n if (options && options.callback !== undefined) {\n var val = options.callback();\n if (val !== null) {\n this.setItem(key, val, options);\n }\n return val;\n }\n return null;\n }\n catch (e) {\n logger.warn(\"getItem failed! \" + e);\n return null;\n }\n };\n /**\n * remove item from the cache\n * The cache will abort output a warning:\n * If error happened with browser storage\n * @param key - the key of the item\n */\n BrowserStorageCacheClass.prototype.removeItem = function (key) {\n logger.log(\"Remove item: key is \" + key);\n var prefixedKey = this.config.keyPrefix + key;\n if (prefixedKey === this.config.keyPrefix ||\n prefixedKey === this.cacheCurSizeKey) {\n return;\n }\n try {\n var val = this.config.storage.getItem(prefixedKey);\n if (val) {\n this._removeItem(prefixedKey, JSON.parse(val).byteSize);\n }\n }\n catch (e) {\n logger.warn(\"removeItem failed! \" + e);\n }\n };\n /**\n * clear the entire cache\n * The cache will abort output a warning:\n * If error happened with browser storage\n */\n BrowserStorageCacheClass.prototype.clear = function () {\n logger.log(\"Clear Cache\");\n var keysToRemove = [];\n for (var i = 0; i < this.config.storage.length; i += 1) {\n var key = this.config.storage.key(i);\n if (key.indexOf(this.config.keyPrefix) === 0) {\n keysToRemove.push(key);\n }\n }\n try {\n for (var i = 0; i < keysToRemove.length; i += 1) {\n this.config.storage.removeItem(keysToRemove[i]);\n }\n }\n catch (e) {\n logger.warn(\"clear failed! \" + e);\n }\n };\n /**\n * Return all the keys in the cache.\n *\n * @return - all keys in the cache\n */\n BrowserStorageCacheClass.prototype.getAllKeys = function () {\n var keys = [];\n for (var i = 0; i < this.config.storage.length; i += 1) {\n var key = this.config.storage.key(i);\n if (key.indexOf(this.config.keyPrefix) === 0 &&\n key !== this.cacheCurSizeKey) {\n keys.push(key.substring(this.config.keyPrefix.length));\n }\n }\n return keys;\n };\n /**\n * return the current size of the cache\n *\n * @return - current size of the cache\n */\n BrowserStorageCacheClass.prototype.getCacheCurSize = function () {\n var ret = this.config.storage.getItem(this.cacheCurSizeKey);\n if (!ret) {\n this.config.storage.setItem(this.cacheCurSizeKey, '0');\n ret = '0';\n }\n return Number(ret);\n };\n /**\n * Return a new instance of cache with customized configuration.\n * @param config - the customized configuration\n *\n * @return - new instance of Cache\n */\n BrowserStorageCacheClass.prototype.createInstance = function (config) {\n if (!config.keyPrefix || config.keyPrefix === defaultConfig.keyPrefix) {\n logger.error('invalid keyPrefix, setting keyPrefix with timeStamp');\n config.keyPrefix = getCurrTime.toString();\n }\n return new BrowserStorageCacheClass(config);\n };\n return BrowserStorageCacheClass;\n}(StorageCache));\nexport { BrowserStorageCacheClass };\nexport var BrowserStorageCache = new BrowserStorageCacheClass();\n/**\n * @deprecated use named import\n */\nexport default BrowserStorageCache;\n//# sourceMappingURL=BrowserStorageCache.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { getCurrTime, getByteLength, defaultConfig, isInteger } from './Utils';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('StorageCache');\n/**\n * Initialization of the cache\n *\n */\nvar StorageCache = /** @class */ (function () {\n /**\n * Initialize the cache\n * @param config - the configuration of the cache\n */\n function StorageCache(config) {\n this.config = Object.assign({}, config);\n this.cacheCurSizeKey = this.config.keyPrefix + 'CurSize';\n this.checkConfig();\n }\n StorageCache.prototype.getModuleName = function () {\n return 'Cache';\n };\n StorageCache.prototype.checkConfig = function () {\n // check configuration\n if (!isInteger(this.config.capacityInBytes)) {\n logger.error('Invalid parameter: capacityInBytes. It should be an Integer. Setting back to default.');\n this.config.capacityInBytes = defaultConfig.capacityInBytes;\n }\n if (!isInteger(this.config.itemMaxSize)) {\n logger.error('Invalid parameter: itemMaxSize. It should be an Integer. Setting back to default.');\n this.config.itemMaxSize = defaultConfig.itemMaxSize;\n }\n if (!isInteger(this.config.defaultTTL)) {\n logger.error('Invalid parameter: defaultTTL. It should be an Integer. Setting back to default.');\n this.config.defaultTTL = defaultConfig.defaultTTL;\n }\n if (!isInteger(this.config.defaultPriority)) {\n logger.error('Invalid parameter: defaultPriority. It should be an Integer. Setting back to default.');\n this.config.defaultPriority = defaultConfig.defaultPriority;\n }\n if (this.config.itemMaxSize > this.config.capacityInBytes) {\n logger.error('Invalid parameter: itemMaxSize. It should be smaller than capacityInBytes. Setting back to default.');\n this.config.itemMaxSize = defaultConfig.itemMaxSize;\n }\n if (this.config.defaultPriority > 5 || this.config.defaultPriority < 1) {\n logger.error('Invalid parameter: defaultPriority. It should be between 1 and 5. Setting back to default.');\n this.config.defaultPriority = defaultConfig.defaultPriority;\n }\n if (Number(this.config.warningThreshold) > 1 ||\n Number(this.config.warningThreshold) < 0) {\n logger.error('Invalid parameter: warningThreshold. It should be between 0 and 1. Setting back to default.');\n this.config.warningThreshold = defaultConfig.warningThreshold;\n }\n // set 5MB limit\n var cacheLimit = 5 * 1024 * 1024;\n if (this.config.capacityInBytes > cacheLimit) {\n logger.error('Cache Capacity should be less than 5MB. Setting back to default. Setting back to default.');\n this.config.capacityInBytes = defaultConfig.capacityInBytes;\n }\n };\n /**\n * produce a JSON object with meta-data and data value\n * @param value - the value of the item\n * @param options - optional, the specified meta-data\n *\n * @return - the item which has the meta-data and the value\n */\n StorageCache.prototype.fillCacheItem = function (key, value, options) {\n var ret = {\n key: key,\n data: value,\n timestamp: getCurrTime(),\n visitedTime: getCurrTime(),\n priority: options.priority,\n expires: options.expires,\n type: typeof value,\n byteSize: 0,\n };\n ret.byteSize = getByteLength(JSON.stringify(ret));\n // for accurate size\n ret.byteSize = getByteLength(JSON.stringify(ret));\n return ret;\n };\n /**\n * set cache with customized configuration\n * @param config - customized configuration\n *\n * @return - the current configuration\n */\n StorageCache.prototype.configure = function (config) {\n if (!config) {\n return this.config;\n }\n if (config.keyPrefix) {\n logger.warn(\"Don't try to configure keyPrefix!\");\n }\n this.config = Object.assign({}, this.config, config, config.Cache);\n this.checkConfig();\n return this.config;\n };\n return StorageCache;\n}());\nexport { StorageCache };\n/**\n * @deprecated use named import\n */\nexport default StorageCache;\n//# sourceMappingURL=StorageCache.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { Amplify } from '@aws-amplify/core';\nimport { BrowserStorageCache } from './BrowserStorageCache';\nimport { InMemoryCache } from './InMemoryCache';\nexport { BrowserStorageCache, InMemoryCache };\n/**\n * @deprecated use named import\n */\nexport default BrowserStorageCache;\nAmplify.register(BrowserStorageCache);\n//# sourceMappingURL=index.js.map"],"sourceRoot":""}