{"version":3,"sources":["webpack:///./node_modules/@aws-amplify/core/lib-esm/Logger/ConsoleLogger.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Amplify.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/ClientDevice/browser.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/ClientDevice/index.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/Signer.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Parser.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/StorageHelper/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Credentials.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/RNComponents/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/ServiceWorker/ServiceWorker.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Platform/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/JS.js","webpack:///./node_modules/@aws-amplify/core/lib/constants.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/Utils/CacheUtils.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/Utils/CacheList.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/StorageCache.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/BrowserStorageCache.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/InMemoryCache.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/index.js"],"names":["__spreadArrays","s","i","il","arguments","length","r","Array","k","a","j","jl","LOG_LEVELS","VERBOSE","DEBUG","INFO","WARN","ERROR","ConsoleLogger","name","level","this","prototype","_padding","n","_ts","dt","Date","getMinutes","getSeconds","join","getMilliseconds","_log","type","msg","_i","logger_level_name","LOG_LEVEL","window","logger_level","type_level","log","console","bind","error","warn","prefix","obj","slice","apply","info","debug","verbose","logger","Amplify","register","comp","_components","push","getModuleName","configure","config","_this","_config","Object","assign","map","addPluggable","pluggable","Auth","Analytics","API","Storage","I18n","Cache","PubSub","Interactions","Pushnotification","UI","XR","Predictions","Logger","ServiceWorker","clientInfo","browserClientInfo","nav","navigator","platform","product","vendor","userAgent","language","browserType","timezone","browserTimezone","make","model","version","appVersion","dimension","width","height","innerWidth","innerHeight","tzMatch","exec","toString","operaMatch","ieMatch","cfMatch","sMatch","awkMatch","anyMatch","ClientDevice","__assign","t","p","hasOwnProperty","call","AMPLIFY_SYMBOL","Symbol","for","isLegacyCallback","callback","undefined","onHubCapsule","HubClass","listeners","patterns","protectedChannels","remove","channel","listener","RegExp","pattern_1","find","_a","pattern","source","filter","x","holder","dispatch","payload","ampSymbol","indexOf","hasAccess","capsule","patternInfo","_toListeners","e","listen","listenerName","cb","Error","forEach","message","payloadStr_1","match","groups","dispatchingCapsule","Hub","options","_options","_lang","_dict","setLanguage","lang","get","key","defVal","val","getByLanguage","split","lang_dict","putVocabulariesForLanguage","vocabularies","putVocabularies","keys","_i18n","createInstance","checkConfig","__rest","getOwnPropertySymbols","propertyIsEnumerable","url","crypto","DEFAULT_ALGORITHM","IOT_SERVICE_NAME","encrypt","src","encoding","lib","createHmac","update","digest","hash","arg","createHash","escape_RFC3986","component","replace","c","charCodeAt","toUpperCase","canonical_query","query","key_val","reencoded_val","sort","b","key_a","key_b","canonical_headers","headers","toLowerCase","value","trim","item","signed_headers","canonical_request","request","url_info","parse","method","encodeURIComponent","pathname","data","parse_service_info","host","matched","parsed","reverse","service","region","credential_scope","d_str","string_to_sign","algorithm","dt_str","scope","get_signing_key","secret_key","service_info","k_date","k_region","k_service","k_signing","get_signature","signing_key","str_to_sign","get_authorization_header","access_key","signature","Signer","sign","access_info","toISOString","substr","session_token","request_str","serviceInfo","authorization_header","signUrl","urlOrRequest","accessInfo","expiration","urlToSign","body","now","today","parsedUrl","search","signedHeaders","_b","format","credentialScope","sessionTokenRequired","queryParams","canonicalRequest","stringToSign","additionalQueryParams","result","protocol","slashes","hostname","port","Parser","parseMobilehubConfig","storageConfig","amplifyConfig","AWSPinpoint","appId","userPoolId","userPoolWebClientId","identityPoolId","mandatorySignIn","AWSS3","bucket","dangerouslyConnectToHttpEndpointForTesting","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","Promise","reject","fulfilled","step","next","rejected","done","then","__generator","f","y","g","_","label","sent","trys","ops","verb","iterator","v","op","TypeError","pop","waitForInit","res","rej","JS","browserOrNode","isBrowser","ga","auth2","setTimeout","GoogleOAuth","initialized","refreshGoogleToken","_refreshGoogleTokenImpl","getAuthInstance","googleAuth","googleUser","currentUser","isSignedIn","reloadAuthResponse","authResponse","id_token","expires_at","profile","getBasicProfile","getEmail","getName","token","catch","err","fb","FacebookOAuth","refreshFacebookToken","_refreshFacebookTokenImpl","getLoginStatus","fbResponse","response","accessToken","expiresIn","date","getTime","dataMemory","MemoryStorage","setItem","getItem","removeItem","clear","StorageHelper","storageWindow","localStorage","exception","getStorage","Credentials","_gettingCredPromise","_refreshHandlers","getCredSource","_credentials_source","refreshHandlers","_storage","storage","_storageSync","_pickupCredentials","isPending","credentials","makeQuerablePromise","_setCredentialsFromAWS","_keepAlive","cred","_credentials","_isExpired","currentUserCredentials","refreshFederatedToken","federatedInfo","provider","user","identity_id","that","_setCredentialsFromFederation","ts","delta","expired","expireTime","_setCredentialsForGuest","attempted","identityId","e_1","CognitoIdentityCredentials","IdentityPoolId","IdentityId","_loadCredentials","newCredentials","code","clearCachedId","params","domains","google","facebook","amazon","developer","domain","logins","Logins","_setCredentialsFromSession","session","idToken","getIdToken","getJwtToken","authenticated","e_2","id","JSON","stringify","priority","set","shear","accessKeyId","sessionToken","secretAccessKey","instance","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","padding","repeat","base64","rawData","atob","outputArray","Uint8Array","send","postMessage","addEventListener","event","currentState","state","record","attributes","packageInfo","Platform","isReactNative","Constants","customUserAgent","MIME_MAP","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","Math","floor","random","promise","isResolved","isRejected","isFullfilled","document","isNode","process","versions","node","transferKeyToLowerCase","whiteListForItself","whiteListForChildren","isStrictObject","transferedKey","includes","transferKeyToUpperCase","Function","Number","String","Boolean","exports","hasSymbol","INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER","defaultConfig","keyPrefix","capacityInBytes","itemMaxSize","defaultTTL","defaultPriority","warningThreshold","getByteLength","str","charCode","getCurrTime","currTime","isInteger","_isInteger","isFinite","store","CacheObject","DoubleLinkedNode","keyVal","prevNode","nextNode","CacheList","head","tail","hashtable","insertNodeToHead","tmp","removeNode","refresh","insertItem","getLastItem","removedItem","getSize","containsKey","clearList","getKeys","isHeadNode","isTailNode","StorageCache","cacheCurSizeKey","cacheLimit","fillCacheItem","timestamp","visitedTime","expires","byteSize","__extends","extendStatics","d","setPrototypeOf","__proto__","__","constructor","create","_super","BrowserStorageCache","cacheConfig","_decreaseCurSizeInBytes","amount","curSize","getCacheCurSize","_increaseCurSizeInBytes","_refreshItem","prefixedKey","text","_removeItem","size","itemSize","_setItem","setItemErr","_sizeToPop","spaceItemNeed","cacheThresholdSpace","_isCacheFull","_findValidKeys","keyInCache","_popOutItems","sizeToPop","items","remainedSize","cacheItemOptions","validKeys","keysToRemove","getAllKeys","substring","InMemoryCache","cacheList","curSizeInBytes","maxPriority","listIdx","presentKeyPrio","cacheListIdx","popedItemKey"],"mappings":"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","file":"js/chunk-vendors~d2201248.a3837ff3.js","sourcesContent":["/*\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 __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar LOG_LEVELS = {\n VERBOSE: 1,\n DEBUG: 2,\n INFO: 3,\n WARN: 4,\n ERROR: 5,\n};\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 = 'WARN'; }\n this.name = name;\n this.level = level;\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 /**\n * Write log\n * @method\n * @memeberof Logger\n * @param {string} type - log type, default INFO\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype._log = function (type) {\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 === 'ERROR' && console.error) {\n log = console.error.bind(console);\n }\n if (type === 'WARN' && console.warn) {\n log = console.warn.bind(console);\n }\n var prefix = \"[\" + type + \"] \" + this._ts() + \" \" + this.name;\n if (msg.length === 1 && typeof msg[0] === 'string') {\n log(prefix + \" - \" + msg[0]);\n }\n else if (msg.length === 1) {\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 log(prefix + \" - \" + msg[0], obj);\n }\n else {\n log(prefix, msg);\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, __spreadArrays(['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, __spreadArrays(['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, __spreadArrays(['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, __spreadArrays(['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, __spreadArrays(['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, __spreadArrays(['VERBOSE'], msg));\n };\n ConsoleLogger.LOG_LEVEL = null;\n return ConsoleLogger;\n}());\nexport { ConsoleLogger };\n//# sourceMappingURL=ConsoleLogger.js.map","import { ConsoleLogger as LoggerClass } from './Logger';\nvar logger = new LoggerClass('Amplify');\nvar Amplify = /** @class */ (function () {\n function Amplify() {\n }\n Amplify.register = function (comp) {\n logger.debug('component registered in amplify', comp);\n this._components.push(comp);\n if (typeof comp.getModuleName === 'function') {\n Amplify[comp.getModuleName()] = comp;\n }\n else {\n logger.debug('no getModuleName method for component', comp);\n }\n };\n Amplify.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 this._components.map(function (comp) {\n comp.configure(_this._config);\n });\n return this._config;\n };\n Amplify.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 Amplify._components = [];\n Amplify._config = {};\n // for backward compatibility to avoid breaking change\n // if someone is using like Amplify.Auth\n Amplify.Auth = null;\n Amplify.Analytics = null;\n Amplify.API = null;\n Amplify.Storage = null;\n Amplify.I18n = null;\n Amplify.Cache = null;\n Amplify.PubSub = null;\n Amplify.Interactions = null;\n Amplify.Pushnotification = null;\n Amplify.UI = null;\n Amplify.XR = null;\n Amplify.Predictions = null;\n Amplify.Logger = LoggerClass;\n Amplify.ServiceWorker = null;\n return Amplify;\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 */\nimport { ConsoleLogger as Logger } from '../Logger';\nvar logger = new Logger('ClientDevice_Browser');\nexport function clientInfo() {\n if (typeof window === 'undefined') {\n return {};\n }\n return browserClientInfo();\n}\nfunction browserClientInfo() {\n if (typeof window === 'undefined') {\n logger.warn('No window object available to get browser client info');\n return {};\n }\n var nav = window.navigator;\n if (!nav) {\n logger.warn('No navigator object available to get browser client info');\n return {};\n }\n var platform = nav.platform, product = nav.product, vendor = nav.vendor, userAgent = nav.userAgent, language = nav.language;\n var type = browserType(userAgent);\n var timezone = browserTimezone();\n return {\n platform: platform,\n make: product || vendor,\n model: type.type,\n version: type.version,\n appVersion: [type.type, type.version].join('/'),\n language: language,\n timezone: timezone,\n };\n}\nexport function dimension() {\n if (typeof window === 'undefined') {\n logger.warn('No window object available to get browser client info');\n return { width: 320, height: 320 };\n }\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n}\nfunction browserTimezone() {\n var tzMatch = /\\(([A-Za-z\\s].*)\\)/.exec(new Date().toString());\n return tzMatch ? tzMatch[1] || '' : '';\n}\nfunction browserType(userAgent) {\n var operaMatch = /.+(Opera[\\s[A-Z]*|OPR[\\sA-Z]*)\\/([0-9\\.]+).*/i.exec(userAgent);\n if (operaMatch) {\n return { type: operaMatch[1], version: operaMatch[2] };\n }\n var ieMatch = /.+(Trident|Edge)\\/([0-9\\.]+).*/i.exec(userAgent);\n if (ieMatch) {\n return { type: ieMatch[1], version: ieMatch[2] };\n }\n var cfMatch = /.+(Chrome|Firefox|FxiOS)\\/([0-9\\.]+).*/i.exec(userAgent);\n if (cfMatch) {\n return { type: cfMatch[1], version: cfMatch[2] };\n }\n var sMatch = /.+(Safari)\\/([0-9\\.]+).*/i.exec(userAgent);\n if (sMatch) {\n return { type: sMatch[1], version: sMatch[2] };\n }\n var awkMatch = /.+(AppleWebKit)\\/([0-9\\.]+).*/i.exec(userAgent);\n if (awkMatch) {\n return { type: awkMatch[1], version: awkMatch[2] };\n }\n var anyMatch = /.*([A-Z]+)\\/([0-9\\.]+).*/i.exec(userAgent);\n if (anyMatch) {\n return { type: anyMatch[1], version: anyMatch[2] };\n }\n return { type: '', version: '' };\n}\n//# sourceMappingURL=browser.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 * as Browser from './browser';\nvar ClientDevice = /** @class */ (function () {\n function ClientDevice() {\n }\n ClientDevice.clientInfo = function () {\n return Browser.clientInfo();\n };\n ClientDevice.dimension = function () {\n return Browser.dimension();\n };\n return ClientDevice;\n}());\nexport default ClientDevice;\n//# sourceMappingURL=index.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 __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\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 '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 = __spreadArrays(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] = __spreadArrays(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 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 };\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 groups = match.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\npsuedo Singleton for the main messaging bus, however you can still create\nyour own instance of HubClass() for a separate \"private bus\" of events.*/\nvar Hub = new HubClass('__default__');\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} langurage - 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}());\nAmplify.register(I18n);\nexport default I18n;\n//# sourceMappingURL=index.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 { AWS } from './Facet';\nvar logger = new Logger('Signer'), url = require('url'), crypto = AWS['util'].crypto;\nvar DEFAULT_ALGORITHM = 'AWS4-HMAC-SHA256';\nvar IOT_SERVICE_NAME = 'iotdevicegateway';\nvar encrypt = function (key, src, encoding) {\n return crypto.lib\n .createHmac('sha256', key)\n .update(src, 'utf8')\n .digest(encoding);\n};\nvar hash = function (src) {\n var arg = src || '';\n return crypto\n .createHash('sha256')\n .update(arg, 'utf8')\n .digest('hex');\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 = url.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 = url.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 encrypt(signing_key, str_to_sign, 'hex');\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};\n/**\n * AWS request signer.\n * Refer to {@link http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html|Signature Version 4}\n *\n * @class Signer\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 = new Date(), dt_str = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, ''), d_str = dt_str.substr(0, 8);\n var url_info = url.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 = new Date().toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n var today = now.substr(0, 8);\n // Intentionally discarding search\n var _a = url.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: 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: 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 = url.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 default Signer;\n//# sourceMappingURL=Signer.js.map","import { ConsoleLogger as Logger } from './Logger';\nvar logger = new Logger('Parser');\nvar Parser = /** @class */ (function () {\n function Parser() {\n }\n Parser.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 var 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 mandatorySignIn: config['aws_mandatory_sign_in'] === 'enable' ? true : false,\n };\n amplifyConfig.Auth = Auth;\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 amplifyConfig.Analytics = Object.assign({}, amplifyConfig.Analytics, config.Analytics);\n amplifyConfig.Auth = Object.assign({}, amplifyConfig.Auth, config.Auth);\n amplifyConfig.Storage = Object.assign({}, storageConfig);\n logger.debug('parse config', config, 'to amplifyconfig', amplifyConfig);\n return amplifyConfig;\n };\n return Parser;\n}());\nexport default Parser;\n//# sourceMappingURL=Parser.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 JS from '../JS';\nvar logger = new Logger('CognitoCredentials');\nvar waitForInit = new Promise(function (res, rej) {\n if (!JS.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 (JS.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 console.log('google Auth undefiend');\n rej('google Auth undefiend');\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.reloadAuthResponse().then(function (authResponse) {\n var id_token = authResponse.id_token, expires_at = authResponse.expires_at;\n var profile = googleUser.getBasicProfile();\n var user = {\n email: profile.getEmail(),\n name: profile.getName(),\n };\n res({ token: id_token, expires_at: expires_at });\n });\n }\n else {\n rej('User is not signed in with Google');\n }\n })\n .catch(function (err) {\n logger.debug('Failed to refresh google token', err);\n rej('Failed to refresh google token');\n });\n });\n };\n return GoogleOAuth;\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 JS from '../JS';\nvar logger = new Logger('CognitoCredentials');\nvar waitForInit = new Promise(function (res, rej) {\n if (!JS.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 (JS.browserOrNode().isBrowser)\n fb = window['FB'];\n if (!fb) {\n logger.debug('no fb sdk available');\n return Promise.reject('no fb sdk available');\n }\n return new Promise(function (res, rej) {\n fb.getLoginStatus(function (fbResponse) {\n if (!fbResponse || !fbResponse.authResponse) {\n logger.debug('no response from facebook when refreshing the jwt token');\n rej('no response from facebook when refreshing the jwt token');\n }\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 logger.debug('the jwtToken is undefined');\n rej('the jwtToken is undefined');\n }\n res({ token: accessToken, expires_at: expires_at });\n }, { scope: 'public_profile,email' });\n });\n };\n return FacebookOAuth;\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 GoogleOAuthClass from './GoogleOAuth';\nimport FacebookOAuthClass from './FacebookOAuth';\nvar GoogleOAuth = new GoogleOAuthClass();\nvar FacebookOAuth = new FacebookOAuthClass();\nexport { GoogleOAuth, FacebookOAuth };\n//# sourceMappingURL=index.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 default StorageHelper;\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 { AWS } from './Facet';\nimport JS from './JS';\nimport { FacebookOAuth, GoogleOAuth } from './OAuthHelper';\nimport Amplify from './Amplify';\nvar logger = new Logger('Credentials');\nvar Credentials = /** @class */ (function () {\n function Credentials(config) {\n this._gettingCredPromise = null;\n this._refreshHandlers = {};\n this.configure(config);\n this._refreshHandlers['google'] = GoogleOAuth.refreshGoogleToken;\n this._refreshHandlers['facebook'] = FacebookOAuth.refreshFacebookToken;\n }\n Credentials.prototype.getCredSource = function () {\n return this._credentials_source;\n };\n Credentials.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 Credentials.prototype.get = function () {\n logger.debug('getting credentials');\n return this._pickupCredentials();\n };\n Credentials.prototype._pickupCredentials = function () {\n logger.debug('picking up credentials');\n if (!this._gettingCredPromise || !this._gettingCredPromise.isPending()) {\n logger.debug('getting new cred promise');\n if (AWS.config &&\n AWS.config.credentials &&\n AWS.config.credentials instanceof AWS.Credentials) {\n this._gettingCredPromise = JS.makeQuerablePromise(this._setCredentialsFromAWS());\n }\n else {\n this._gettingCredPromise = JS.makeQuerablePromise(this._keepAlive());\n }\n }\n else {\n logger.debug('getting old cred promise');\n }\n return this._gettingCredPromise;\n };\n Credentials.prototype._keepAlive = function () {\n logger.debug('checking if credentials exists and not expired');\n var cred = this._credentials;\n if (cred && !this._isExpired(cred)) {\n logger.debug('credentials not changed and not expired, directly return');\n return Promise.resolve(cred);\n }\n logger.debug('need to get a new credential or refresh the existing one');\n if (Amplify.Auth &&\n typeof Amplify.Auth.currentUserCredentials === 'function') {\n return Amplify.Auth.currentUserCredentials();\n }\n else {\n return Promise.reject('No Auth module registered in Amplify');\n }\n };\n Credentials.prototype.refreshFederatedToken = function (federatedInfo) {\n var _this = this;\n logger.debug('Getting federated credentials');\n var provider = federatedInfo.provider, user = federatedInfo.user;\n var token = federatedInfo.token;\n var expires_at = federatedInfo.expires_at;\n var identity_id = federatedInfo.identity_id;\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 that._refreshHandlers[provider]()\n .then(function (data) {\n logger.debug('refresh federated token sucessfully', data);\n token = data.token;\n identity_id = data.identity_id;\n expires_at = data.expires_at;\n return that._setCredentialsFromFederation({\n provider: provider,\n token: token,\n user: user,\n identity_id: identity_id,\n expires_at: expires_at,\n });\n })\n .catch(function (e) {\n logger.debug('refresh federated token failed', e);\n _this.clear();\n return Promise.reject('refreshing federation token failed: ' + e);\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 Credentials.prototype._isExpired = function (credentials) {\n if (!credentials) {\n logger.debug('no credentials for expiration check');\n return true;\n }\n logger.debug('is this credentials expired?', credentials);\n var ts = new Date().getTime();\n var delta = 10 * 60 * 1000; // 10 minutes\n var expired = credentials.expired, expireTime = credentials.expireTime;\n if (!expired && expireTime > ts + delta) {\n return false;\n }\n return true;\n };\n Credentials.prototype._setCredentialsForGuest = function () {\n return __awaiter(this, void 0, void 0, function () {\n var attempted, _a, identityPoolId, region, mandatorySignIn, identityId, e_1, credentials, that;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n attempted = false;\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 Federated Identity pool provided');\n return [2 /*return*/, Promise.reject('No Cognito Federated Identity pool provided')];\n }\n identityId = undefined;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._storageSync];\n case 2:\n _b.sent();\n identityId = this._storage.getItem('CognitoIdentityId-' + identityPoolId);\n return [3 /*break*/, 4];\n case 3:\n e_1 = _b.sent();\n logger.debug('Failed to get the cached identityId', e_1);\n return [3 /*break*/, 4];\n case 4:\n credentials = new AWS.CognitoIdentityCredentials({\n IdentityPoolId: identityPoolId,\n IdentityId: identityId ? identityId : undefined,\n }, {\n region: region,\n });\n that = this;\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 newCredentials;\n return __generator(this, function (_a) {\n // If identity id is deleted in the console, we make one attempt to recreate it\n // and remove existing id from cache.\n if (e.code === 'ResourceNotFoundException' &&\n e.message === \"Identity '\" + identityId + \"' not found.\" &&\n !attempted) {\n attempted = true;\n logger.debug('Failed to load guest credentials');\n this._storage.removeItem('CognitoIdentityId-' + identityPoolId);\n credentials.clearCachedId();\n newCredentials = new AWS.CognitoIdentityCredentials({\n IdentityPoolId: identityPoolId,\n IdentityId: undefined,\n }, {\n region: region,\n });\n return [2 /*return*/, this._loadCredentials(newCredentials, 'guest', false, null)];\n }\n else {\n return [2 /*return*/, e];\n }\n return [2 /*return*/];\n });\n }); })];\n }\n });\n });\n };\n Credentials.prototype._setCredentialsFromAWS = function () {\n var credentials = AWS.config.credentials;\n logger.debug('setting credentials from aws');\n var that = this;\n if (credentials instanceof AWS.Credentials) {\n return Promise.resolve(credentials);\n }\n else {\n logger.debug('AWS.config.credentials is not an instance of AWS Credentials');\n return Promise.reject('AWS.config.credentials is not an instance of AWS Credentials');\n }\n };\n Credentials.prototype._setCredentialsFromFederation = function (params) {\n var provider = params.provider, token = params.token, identity_id = params.identity_id, user = params.user, expires_at = params.expires_at;\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 var credentials = new AWS.CognitoIdentityCredentials({\n IdentityPoolId: identityPoolId,\n IdentityId: identity_id,\n Logins: logins,\n }, {\n region: region,\n });\n return this._loadCredentials(credentials, 'federated', true, params);\n };\n Credentials.prototype._setCredentialsFromSession = function (session) {\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 var key = 'cognito-idp.' + region + '.amazonaws.com/' + userPoolId;\n var logins = {};\n logins[key] = idToken;\n var credentials = new AWS.CognitoIdentityCredentials({\n IdentityPoolId: identityPoolId,\n Logins: logins,\n }, {\n region: region,\n });\n return this._loadCredentials(credentials, 'userPool', true, null);\n };\n Credentials.prototype._loadCredentials = function (credentials, source, authenticated, info) {\n var _this = this;\n var that = this;\n var identityPoolId = this._config.identityPoolId;\n return new Promise(function (res, rej) {\n credentials.get(function (err) { return __awaiter(_this, void 0, void 0, function () {\n var user, provider, token, expires_at, identity_id, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (err) {\n logger.debug('Failed to load credentials', credentials);\n rej(err);\n return [2 /*return*/];\n }\n logger.debug('Load credentials successfully', credentials);\n that._credentials = credentials;\n that._credentials.authenticated = authenticated;\n that._credentials_source = source;\n if (!(source === 'federated')) return [3 /*break*/, 3];\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 if (!(Amplify.Cache && typeof Amplify.Cache.setItem === 'function')) return [3 /*break*/, 2];\n return [4 /*yield*/, Amplify.Cache.setItem('federatedInfo', {\n provider: provider,\n token: token,\n user: user,\n expires_at: expires_at,\n identity_id: identity_id,\n }, { priority: 1 })];\n case 1:\n _a.sent();\n return [3 /*break*/, 3];\n case 2:\n logger.debug('No Cache module registered in Amplify');\n _a.label = 3;\n case 3:\n if (!(source === 'guest')) return [3 /*break*/, 7];\n _a.label = 4;\n case 4:\n _a.trys.push([4, 6, , 7]);\n return [4 /*yield*/, this._storageSync];\n case 5:\n _a.sent();\n this._storage.setItem('CognitoIdentityId-' + identityPoolId, credentials.identityId);\n return [3 /*break*/, 7];\n case 6:\n e_2 = _a.sent();\n logger.debug('Failed to cache identityId', e_2);\n return [3 /*break*/, 7];\n case 7:\n res(that._credentials);\n return [2 /*return*/];\n }\n });\n }); });\n });\n };\n Credentials.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 Credentials.prototype.clear = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, identityPoolId, region, credentials;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this._config, identityPoolId = _a.identityPoolId, region = _a.region;\n if (identityPoolId) {\n credentials = new AWS.CognitoIdentityCredentials({\n IdentityPoolId: identityPoolId,\n }, {\n region: region,\n });\n credentials.clearCachedId();\n }\n this._credentials = null;\n this._credentials_source = null;\n this._storage.removeItem('aws-amplify-federatedInfo');\n if (!(Amplify.Cache && typeof Amplify.Cache.setItem === 'function')) return [3 /*break*/, 2];\n return [4 /*yield*/, Amplify.Cache.removeItem('federatedInfo')];\n case 1:\n _b.sent();\n return [3 /*break*/, 3];\n case 2:\n logger.debug('No Cache module registered in Amplify');\n _b.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Compact version of credentials\n * @param {Object} credentials\n * @return {Object} - Credentials\n */\n Credentials.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 Credentials;\n}());\nexport { Credentials };\nvar instance = new Credentials(null);\nexport default instance;\n//# sourceMappingURL=Credentials.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 JS from '../JS';\nimport MemoryStorage from '../StorageHelper';\nvar Linking = {};\nvar AppState = {\n addEventListener: function (action, handler) {\n return;\n },\n};\n// if not in react native, just use local storage\nvar AsyncStorage = JS.browserOrNode().isBrowser\n ? new MemoryStorage().getStorage()\n : undefined;\nexport { Linking, AppState, AsyncStorage };\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 JS 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 (JS.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 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 */\nvar packageInfo = require('../../package.json');\nvar Platform = {\n userAgent: \"aws-amplify/\" + packageInfo.version + \" 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 = \"aws-amplify/\" + packageInfo.version + \" react-native\";\n Platform.isReactNative = true;\n break;\n default:\n Platform.userAgent = \"aws-amplify/\" + packageInfo.version + \" js\";\n Platform.isReactNative = false;\n break;\n }\n}\nexport default Platform;\n//# sourceMappingURL=index.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 { AWS } from './Facet';\nimport { ConsoleLogger as Logger } from './Logger';\nimport Amplify from './Amplify';\nexport * from './Facet';\nexport { default as ClientDevice } from './ClientDevice';\nexport { ConsoleLogger, ConsoleLogger as Logger } from './Logger';\nexport * from './Errors';\nexport { default as Hub } from './Hub';\nexport { default as I18n } from './I18n';\nexport { default as JS } from './JS';\nexport { default as Signer } from './Signer';\nexport { default as Parser } from './Parser';\nexport { FacebookOAuth, GoogleOAuth } from './OAuthHelper';\nexport * from './RNComponents';\nexport { default as Credentials } from './Credentials';\nexport { default as ServiceWorker } from './ServiceWorker';\nexport { default as StorageHelper, MemoryStorage } from './StorageHelper';\nexport { default as Platform } from './Platform';\nimport Platform from './Platform';\nexport var Constants = {\n userAgent: Platform.userAgent,\n};\nexport default Amplify;\nvar logger = new Logger('Core');\nif (AWS['util']) {\n AWS['util'].userAgent = function () {\n return Constants.userAgent;\n };\n}\nelse if (AWS.config) {\n AWS.config.update({ customUserAgent: Constants.userAgent });\n}\nelse {\n logger.warn('No AWS.config');\n}\n//# sourceMappingURL=index.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/png', ext: 'png' },\n { type: 'image/gif', ext: 'gif' },\n { type: 'image/jpeg', ext: 'jpg' },\n { type: 'image/jpeg', ext: 'jpeg' },\n { type: 'image/bmp', ext: 'bmp' },\n { type: 'image/x-icon', ext: 'ico' },\n { type: 'image/tiff', ext: 'tif' },\n { type: 'image/tiff', ext: 'tiff' },\n { type: 'image/svg+xml', ext: 'svg' },\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];\nvar JS = /** @class */ (function () {\n function JS() {\n }\n JS.isEmpty = function (obj) {\n return Object.keys(obj).length === 0;\n };\n JS.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 };\n JS.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 };\n JS.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 };\n JS.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 };\n /**\n * generate random string\n */\n JS.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 };\n JS.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 () {\n return isFullfilled;\n };\n result.isPending = function () {\n return isPending;\n };\n result.isRejected = function () {\n return isRejected;\n };\n return result;\n };\n JS.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 */\n JS.transferKeyToLowerCase = function (obj, whiteListForItself, whiteListForChildren) {\n if (whiteListForItself === void 0) { whiteListForItself = []; }\n if (whiteListForChildren === void 0) { whiteListForChildren = []; }\n if (!JS.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 : JS.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 */\n JS.transferKeyToUpperCase = function (obj, whiteListForItself, whiteListForChildren) {\n if (whiteListForItself === void 0) { whiteListForItself = []; }\n if (whiteListForChildren === void 0) { whiteListForChildren = []; }\n if (!JS.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].toUpperCase() + key.slice(1);\n ret[transferedKey] = whiteListForChildren.includes(key)\n ? obj[key]\n : JS.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 */\n JS.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 return JS;\n}());\nexport default JS;\n//# sourceMappingURL=JS.js.map","\"use strict\";\n/*\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 */\nObject.defineProperty(exports, \"__esModule\", { value: true });\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';\nexports.INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER = hasSymbol\n ? Symbol.for('INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER')\n : '@@INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER';\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 */\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 DoubleLinkedNode = /** @class */ (function () {\n function DoubleLinkedNode(keyVal) {\n this.key = keyVal ? keyVal : '';\n this.prevNode = null;\n this.nextNode = null;\n }\n return DoubleLinkedNode;\n}());\n/**\n * double linked list plus a hash table inside\n * each key in the cache stored as a node in the list\n * recently visited node will be rotated to the head\n * so the Last Recently Visited node will be at the tail\n *\n * @member head - dummy head of the linked list\n * @member tail - dummy tail of the linked list\n * @member hashtable - the hashtable which maps cache key to list node\n * @member length - length of the list\n */\nvar CacheList = /** @class */ (function () {\n /**\n * initialization\n */\n function CacheList() {\n this.head = new DoubleLinkedNode();\n this.tail = new DoubleLinkedNode();\n this.hashtable = {};\n this.length = 0;\n this.head.nextNode = this.tail;\n this.tail.prevNode = this.head;\n }\n /**\n * insert node to the head of the list\n *\n * @param node\n */\n CacheList.prototype.insertNodeToHead = function (node) {\n var tmp = this.head.nextNode;\n this.head.nextNode = node;\n node.nextNode = tmp;\n node.prevNode = this.head;\n tmp.prevNode = node;\n this.length = this.length + 1;\n };\n /**\n * remove node\n *\n * @param node\n */\n CacheList.prototype.removeNode = function (node) {\n node.prevNode.nextNode = node.nextNode;\n node.nextNode.prevNode = node.prevNode;\n node.prevNode = null;\n node.nextNode = null;\n this.length = this.length - 1;\n };\n /**\n * @return true if list is empty\n */\n CacheList.prototype.isEmpty = function () {\n return this.length === 0;\n };\n /**\n * refresh node so it is rotated to the head\n *\n * @param key - key of the node\n */\n CacheList.prototype.refresh = function (key) {\n var node = this.hashtable[key];\n this.removeNode(node);\n this.insertNodeToHead(node);\n };\n /**\n * insert new node to the head and add it in the hashtable\n *\n * @param key - the key of the node\n */\n CacheList.prototype.insertItem = function (key) {\n var node = new DoubleLinkedNode(key);\n this.hashtable[key] = node;\n this.insertNodeToHead(node);\n };\n /**\n * @return the LAST Recently Visited key\n */\n CacheList.prototype.getLastItem = function () {\n return this.tail.prevNode.key;\n };\n /**\n * remove the cache key from the list and hashtable\n * @param key - the key of the node\n */\n CacheList.prototype.removeItem = function (key) {\n var removedItem = this.hashtable[key];\n this.removeNode(removedItem);\n delete this.hashtable[key];\n };\n /**\n * @return length of the list\n */\n CacheList.prototype.getSize = function () {\n return this.length;\n };\n /**\n * @return true if the key is in the hashtable\n * @param key\n */\n CacheList.prototype.containsKey = function (key) {\n return key in this.hashtable;\n };\n /**\n * clean up the list and hashtable\n */\n CacheList.prototype.clearList = function () {\n for (var _i = 0, _a = Object.keys(this.hashtable); _i < _a.length; _i++) {\n var key = _a[_i];\n if (this.hashtable.hasOwnProperty(key)) {\n delete this.hashtable[key];\n }\n }\n this.head.nextNode = this.tail;\n this.tail.prevNode = this.head;\n this.length = 0;\n };\n /**\n * @return all keys in the hashtable\n */\n CacheList.prototype.getKeys = function () {\n return Object.keys(this.hashtable);\n };\n /**\n * mainly for test\n *\n * @param key\n * @return true if key is the head node\n */\n CacheList.prototype.isHeadNode = function (key) {\n var node = this.hashtable[key];\n return node.prevNode === this.head;\n };\n /**\n * mainly for test\n *\n * @param key\n * @return true if key is the tail node\n */\n CacheList.prototype.isTailNode = function (key) {\n var node = this.hashtable[key];\n return node.nextNode === this.tail;\n };\n return CacheList;\n}());\nexport default CacheList;\n//# sourceMappingURL=CacheList.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 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 */\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 BrowserStorageCache = /** @class */ (function (_super) {\n __extends(BrowserStorageCache, _super);\n /**\n * initialize the cache\n * @param config - the configuration of the cache\n */\n function BrowserStorageCache(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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache.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 BrowserStorageCache(config);\n };\n return BrowserStorageCache;\n}(StorageCache));\nexport { BrowserStorageCache };\nvar instance = new BrowserStorageCache();\nexport default instance;\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 */\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 { CacheList, defaultConfig, getCurrTime, CacheObject } from './Utils';\nimport StorageCache from './StorageCache';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('InMemoryCache');\n/**\n * Customized in-memory cache with LRU implemented\n * @member cacheObj - object which store items\n * @member cacheList - list of keys in the cache with LRU\n * @member curSizeInBytes - current size of the cache\n * @member maxPriority - max of the priority\n * @member cacheSizeLimit - the limit of cache size\n */\nvar InMemoryCache = /** @class */ (function (_super) {\n __extends(InMemoryCache, _super);\n /**\n * initialize the cache\n *\n * @param config - the configuration of the cache\n */\n function InMemoryCache(config) {\n var _this = this;\n var cacheConfig = config\n ? Object.assign({}, defaultConfig, config)\n : defaultConfig;\n _this = _super.call(this, cacheConfig) || this;\n logger.debug('now we start!');\n _this.cacheList = [];\n _this.curSizeInBytes = 0;\n _this.maxPriority = 5;\n _this.getItem = _this.getItem.bind(_this);\n _this.setItem = _this.setItem.bind(_this);\n _this.removeItem = _this.removeItem.bind(_this);\n // initialize list for every priority\n for (var i = 0; i < _this.maxPriority; i += 1) {\n _this.cacheList[i] = new CacheList();\n }\n return _this;\n }\n /**\n * decrease current size of the cache\n *\n * @param amount - the amount of the cache size which needs to be decreased\n */\n InMemoryCache.prototype._decreaseCurSizeInBytes = function (amount) {\n this.curSizeInBytes -= amount;\n };\n /**\n * increase current size of the cache\n *\n * @param amount - the amount of the cache szie which need to be increased\n */\n InMemoryCache.prototype._increaseCurSizeInBytes = function (amount) {\n this.curSizeInBytes += amount;\n };\n /**\n * check whether item is expired\n *\n * @param key - the key of the item\n *\n * @return true if the item is expired.\n */\n InMemoryCache.prototype._isExpired = function (key) {\n var text = CacheObject.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 * @param prefixedKey - the key of the item\n * @param listIdx - indicates which cache list the key belongs to\n */\n InMemoryCache.prototype._removeItem = function (prefixedKey, listIdx) {\n // delete the key from the list\n this.cacheList[listIdx].removeItem(prefixedKey);\n // decrease the current size of the cache\n this._decreaseCurSizeInBytes(JSON.parse(CacheObject.getItem(prefixedKey)).byteSize);\n // finally remove the item from memory\n CacheObject.removeItem(prefixedKey);\n };\n /**\n * put item into cache\n *\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 * @param listIdx - indicates which cache list the key belongs to\n */\n InMemoryCache.prototype._setItem = function (prefixedKey, item, listIdx) {\n // insert the key into the list\n this.cacheList[listIdx].insertItem(prefixedKey);\n // increase the current size of the cache\n this._increaseCurSizeInBytes(item.byteSize);\n // finally add the item into memory\n CacheObject.setItem(prefixedKey, JSON.stringify(item));\n };\n /**\n * see whether cache is full\n *\n * @param itemSize\n *\n * @return true if cache is full\n */\n InMemoryCache.prototype._isCacheFull = function (itemSize) {\n return this.curSizeInBytes + itemSize > this.config.capacityInBytes;\n };\n /**\n * check whether the cache contains the key\n *\n * @param key\n */\n InMemoryCache.prototype.containsKey = function (key) {\n var prefixedKey = this.config.keyPrefix + key;\n for (var i = 0; i < this.maxPriority; i += 1) {\n if (this.cacheList[i].containsKey(prefixedKey)) {\n return i + 1;\n }\n }\n return -1;\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 options - optional, the specified meta-data\n *\n * @throws if the item is too big which exceeds the limit of single item size\n * @throws if the key is invalid\n */\n InMemoryCache.prototype.setItem = function (key, value, 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 // if key already in the cache, then delete it.\n var presentKeyPrio = this.containsKey(key);\n if (presentKeyPrio !== -1) {\n this._removeItem(prefixedKey, presentKeyPrio - 1);\n }\n // pop out items in the cache when cache is full based on LRU\n // first start from lowest priority cache list\n var cacheListIdx = this.maxPriority - 1;\n while (this._isCacheFull(item.byteSize) && cacheListIdx >= 0) {\n if (!this.cacheList[cacheListIdx].isEmpty()) {\n var popedItemKey = this.cacheList[cacheListIdx].getLastItem();\n this._removeItem(popedItemKey, cacheListIdx);\n }\n else {\n cacheListIdx -= 1;\n }\n }\n this._setItem(prefixedKey, item, Number(item.priority) - 1);\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 *\n * @param key - the key of the item\n * @param options - the options of callback function\n */\n InMemoryCache.prototype.getItem = function (key, 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 // check whether it's in the cachelist\n var presentKeyPrio = this.containsKey(key);\n if (presentKeyPrio !== -1) {\n if (this._isExpired(prefixedKey)) {\n // if expired, remove that item and return null\n this._removeItem(prefixedKey, presentKeyPrio - 1);\n }\n else {\n // if not expired, great, return the value and refresh it\n ret = CacheObject.getItem(prefixedKey);\n var item = JSON.parse(ret);\n this.cacheList[item.priority - 1].refresh(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 /**\n * remove item from the cache\n *\n * @param key - the key of the item\n */\n InMemoryCache.prototype.removeItem = function (key) {\n var prefixedKey = this.config.keyPrefix + key;\n // check if the key is in the cache\n var presentKeyPrio = this.containsKey(key);\n if (presentKeyPrio !== -1) {\n this._removeItem(prefixedKey, presentKeyPrio - 1);\n }\n };\n /**\n * clear the entire cache\n */\n InMemoryCache.prototype.clear = function () {\n for (var i = 0; i < this.maxPriority; i += 1) {\n for (var _i = 0, _a = this.cacheList[i].getKeys(); _i < _a.length; _i++) {\n var key = _a[_i];\n this._removeItem(key, i);\n }\n }\n };\n /**\n * Return all the keys in the cache.\n */\n InMemoryCache.prototype.getAllKeys = function () {\n var keys = [];\n for (var i = 0; i < this.maxPriority; i += 1) {\n for (var _i = 0, _a = this.cacheList[i].getKeys(); _i < _a.length; _i++) {\n var key = _a[_i];\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 the current size of the cache\n */\n InMemoryCache.prototype.getCacheCurSize = function () {\n return this.curSizeInBytes;\n };\n /**\n * Return a new instance of cache with customized configuration.\n * @param config - the customized configuration\n */\n InMemoryCache.prototype.createInstance = function (config) {\n return new InMemoryCache(config);\n };\n return InMemoryCache;\n}(StorageCache));\nexport { InMemoryCache };\nvar instance = new InMemoryCache();\nexport default instance;\n//# sourceMappingURL=InMemoryCache.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 };\nexport default BrowserStorageCache;\nAmplify.register(BrowserStorageCache);\n//# sourceMappingURL=index.js.map"],"sourceRoot":""}