{"version":3,"sources":["webpack:///./node_modules/@aws-amplify/predictions/lib-esm/Providers/AmazonAIConvertPredictionsProvider.js","webpack:///./node_modules/@aws-amplify/predictions/lib-esm/types/Providers/AbstractConvertPredictionsProvider.js","webpack:///./node_modules/@aws-amplify/predictions/lib-esm/types/Predictions.js","webpack:///./node_modules/@aws-amplify/predictions/lib-esm/types/index.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/PubSubProvider.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/MqttOverWSProvider.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/AWSAppSyncProvider.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/AWSIotProvider.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/PubSub.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/interactions/lib-esm/Providers/InteractionsProvider.js","webpack:///./node_modules/@aws-amplify/interactions/lib-esm/Providers/AWSLexProvider.js","webpack:///./node_modules/@aws-amplify/interactions/lib-esm/Interactions.js","webpack:///./node_modules/@aws-amplify/interactions/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/storage/lib-esm/Providers/AWSS3Provider.js","webpack:///./node_modules/@aws-amplify/storage/lib-esm/Storage.js","webpack:///./node_modules/@aws-amplify/storage/lib-esm/index.js","webpack:///./node_modules/@aws-crypto/crc32/build/index.js","webpack:///./node_modules/@aws-amplify/xr/lib-esm/Providers/XRProvider.js","webpack:///./node_modules/@aws-amplify/xr/lib-esm/Errors.js","webpack:///./node_modules/@aws-amplify/xr/lib-esm/Providers/SumerianProvider.js","webpack:///./node_modules/@aws-amplify/xr/lib-esm/XR.js","webpack:///./node_modules/@aws-amplify/xr/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/ui/dist/aws-amplify-ui.js","webpack:///./node_modules/@aws-amplify/predictions/lib-esm/Predictions.js","webpack:///./node_modules/@aws-amplify/predictions/lib-esm/Providers/Utils.js","webpack:///./node_modules/@aws-amplify/predictions/lib-esm/Providers/IdentifyTextUtils.js","webpack:///./node_modules/@aws-amplify/predictions/lib-esm/Providers/AmazonAIIdentifyPredictionsProvider.js","webpack:///./node_modules/@aws-amplify/predictions/lib-esm/Providers/AmazonAIInterpretPredictionsProvider.js","webpack:///./node_modules/@aws-amplify/predictions/lib-esm/Providers/AmazonAIPredictionsProvider.js","webpack:///./node_modules/@aws-amplify/predictions/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/predictions/lib-esm/types/Providers/AbstractPredictionsProvider.js","webpack:///./node_modules/@aws-amplify/predictions/lib-esm/types/Providers/AbstractIdentifyPredictionsProvider.js","webpack:///./node_modules/@aws-amplify/predictions/lib-esm/types/Providers/AbstractInterpretPredictionsProvider.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","logger","eventBuilder","AmazonAIConvertPredictionsProvider","_super","_this","inputSampleRate","outputSampleRate","getProviderName","translateText","input","debug","res","rej","_a","_b","_c","_d","_e","sourceLanguage","_f","targetLanguage","_g","region","credentials","sourceLanguageCode","targetLanguageCode","_h","_config","defaults","get","source","language","translate","SourceLanguageCode","TargetLanguageCode","Text","text","err","data","TranslatedText","convertTextToSpeech","VoiceId","voiceId","speechGenerator","textToSpeech","synthesizeSpeech","OutputFormat","TextType","SampleRate","blob","Blob","AudioStream","type","ContentType","url","URL","createObjectURL","speech","audioStream","buffer","convertSpeechToText","languageCode","connection","fullText","err_1","err_2","transcription","openConnectionWithTranscribe","sendDataToTranscribe","raw","bytes","name","message","serializeDataFromTranscribe","decodedMessage","transcribeMessage","unmarshall","Buffer","from","transcribeMessageJson","JSON","parse","String","fromCharCode","headers","stringify","Message","Error","Transcript","Results","Alternatives","IsPartial","transcript","onmessage","onerror","errorEvent","onclose","closeEvent","trim","isArray","i","slice","sendEncodedDataToTranscribe","endFrameEventMessage","getAudioEventMessage","endFrameBinary","marshall","send","downsampledBuffer","downsampleBuffer","pcmEncodedBuffer","pcmEncode","audioEventMessage","binary","offset","ArrayBuffer","view","DataView","s","Math","max","min","setInt16","sampleRateRatio","newLength","round","Float32Array","offsetResult","offsetBuffer","nextOffsetBuffer","accum","count","userCredentials","access_key","secret_key","session_token","signedUrl","accessKeyId","secretAccessKey","sessionToken","generateTranscribeUrl","WebSocket","binaryType","onopen","join","signUrl","service","AbstractConvertPredictionsProvider","arguments","getCategory","convert","translateTextInput","textToSpeechInput","speechToTextInput","InterpretTextCategories","isIdentifyFromCollection","obj","key","keyId","isIdentifyCelebrities","isTranslateTextInput","isTextToSpeechInput","isSpeechToTextInput","isStorageSource","isFileSource","isBytesSource","isIdentifyTextInput","isIdentifyLabelsInput","isIdentifyEntitiesInput","isInterpretTextInput","__assign","assign","AbstractPubSubProvider","options","configure","config","defineProperty","enumerable","configurable","__rest","indexOf","getOwnPropertySymbols","propertyIsEnumerable","mqttTopicMatch","filter","topic","filterArray","split","topicArray","left","right","ClientsQueue","promises","Map","clientId","clientFactory","promise","set","keys","remove","delete","topicSymbol","MqttOverWSProvider","uuid","_clientsQueue","_topicObservers","_clientIdObservers","aws_pubsub_endpoint","aws_appsync_dangerously_connect_to_http_endpoint_for_testing","getTopicForValue","onDisconnect","errorCode","args","warn","forEach","observerForTopic","_observerTopic","observer","error","complete","newClient","client","onMessageArrived","destinationName","msg","payloadString","_onMessage","onConnectionLost","connect","useSSL","isSSLEnabled","mqttVersion","onSuccess","onFailure","clientsQueue","disconnect","isConnected","publish","topics","targetTopics","concat","endpoint","matchedTopicObservers_1","observerTopic","parsedMessage_1","observersForTopic","subscribe","Set","add","observersForClientId","e_1","unsubscribe","clear","size","__spreadArrays","il","r","k","a","j","jl","AWSAppSyncProvider","_topicClient","_topicAlias","_cleanUp","topicsForClient","entries","c","map","_cleanUpForTopic","has","obs","closed","mqttConnections","newSubscriptions","newAliases","alias","reduce","acc","elem","connectionInfoForTopic","find","all","undefined","values","some","origKey","val","SERVICE_NAME","AWSIoTProvider","aws_pubsub_region","serviceInfo","PubSub","_options","_pluggables","bind","_awsAppSyncProvider","getModuleName","opt","pluggable","addPluggable","getProviderByName","providerName","awsAppSyncProvider","getProviders","provider","providers","observables","observable","subscriptions","start","console","subscription","_instance","register","AbstractInteractionsProvider","AWSLexProvider","aws_lex","_botsCompleteCallback","responseCallback","botname","dialogState","setTimeout","slots","onComplete","sendMessage","params","update","botAlias","botName","inputText","userId","identityId","postText","contentType","inputStream","content","accept","postContent","callback","ErrorEvent","Interactions","bots","aws_bots_config","bots_config","bot","botProvider","AMPLIFY_SYMBOL","for","dispatchStorageEvent","track","event","attrs","metrics","dispatch","localTestingStorageEndpoint","AWSS3Provider","CATEGORY","PROVIDER_NAME","amplifyConfig","parseMobilehubConfig","Storage","bucket","credentialsOK","download","expires","prefix","final_key","s3","_ensureCredentials","_prefix","_createS3","Bucket","Key","getObject","method","fileSize","Number","Body","Expires","getSignedUrl","put","object","progressCallback","contentDisposition","cacheControl","metadata","tagging","serverSideEncryption","SSECustomerAlgorithm","SSECustomerKey","SSECustomerKeyMD5","SSEKMSKeyId","upload","CacheControl","ContentDisposition","Metadata","Tagging","ServerSideEncryption","on","progress","substr","deleteObject","list","path","final_path","Prefix","listObjects","Contents","item","eTag","ETag","lastModified","LastModified","Size","cred","shear","catch","level","customPrefix","privatePath","private","protectedPath","protected","publicPath","public","dangerouslyConnectToHttpEndpointForTesting","localTestingConfig","s3BucketEndpoint","s3ForcePathStyle","apiVersion","signatureVersion","DEFAULT_PROVIDER","StorageClass","getPluggable","removePluggable","storageKeysFromConfig","storageArrayKeys","isInStorageArrayKeys","x","checkConfigKeysFromArray","prov","vault","old_configure_1","vaultConfig","exports","tslib_1","crc32","Crc32","digest","checksum","data_1","__values","data_1_1","byte","lookupTable","e_1_1","return","Uint32Array","AbstractXRProvider","XRError","XRNoSceneConfiguredError","XRSceneNotFoundError","XRSceneNotLoadedError","XRNoDomElement","XRSceneLoadFailure","XRProviderNotConfigured","SUMERIAN_SERVICE_NAME","SumerianProvider","loadScript","scriptElement","document","createElement","src","addEventListener","head","appendChild","loadScene","sceneName","domElementId","sceneOptions","element","scene","sceneUrl","sceneId","sceneRegion","errorMsg","awsSDKConfigOverride","fetchOptions","accessInfo","request","apiResponse","apiResponseJson","sceneBundleData","sceneBundle","sceneBundleJson","error_1","publishParamOverrides","sceneLoadParams","sceneController","_i","warning","getElementById","getScene","sceneConfig","customUserAgent","userAgent","sign","fetch","json","status","bundleData","bootstrapperUrl","window","SumerianBootstrapper","isLoaded","sceneLoadWarnings","isSceneLoaded","scenes","getSceneController","isVRCapable","vrCapable","isVRPresentationActive","vrPresentationActive","enterVR","exitVR","isMuted","muted","setMuted","onSceneEvent","eventName","eventHandler","enableAudio","DEFAULT_PROVIDER_NAME","XR","_defaultProvider","module","o","l","m","toStringTag","__esModule","default","button","signInButton","googleSignInButton","signInButtonIcon","auth0SignInButton","facebookSignInButton","amazonSignInButton","oAuthSignInButton","signInButtonContent","formContainer","formSection","formField","formRow","hint","inputLabel","radio","navBar","navRight","nav","navItem","photoPickerButton","photoPlaceholder","photoPlaceholderIcon","container","actionRow","sectionHeader","sectionHeaderHint","sectionBody","sectionHeaderContent","sectionFooter","sectionFooterPrimaryContent","sectionFooterSecondaryContent","selectInput","strike","strikeContent","toast","toastClose","totpQrcode","sumerianSceneContainer","sumerianScene","loadingOverlay","loadingContainer","loadingLogo","loadingSceneName","loadingBar","loadingBarFill","sceneErrorText","sceneBar","sceneActions","actionButton","tooltip","actionIcon","autoShowTooltip","Predictions","_convertPluggables","_identifyPluggables","_interpretPluggables","pluggableAdded","implementsConvertPluggable","implementsIdentifyPluggable","implementsInterpretPluggable","configurePluggable","getAllProviders","predictionsConfig","predictions","interpret","pluggableToExecute","getPluggableToExecute","identify","pluggables","providerOptions","categoryConfig","toLowerCase","makeCamelCase","newObj","keysToRename","camelCaseKey","charAt","makeCamelCaseArray","objArr","blobToArrayBuffer","reader","FileReader","onload","_event","readAsArrayBuffer","getBoundingBox","geometry","BoundingBox","getPolygon","Polygon","categorizeRekognitionBlocks","blocks","response","words","lines","linesDetailed","block","Type","DetectedText","polygon","Geometry","boundingBox","page","categorizeTextractBlocks","tableBlocks","keyValueBlocks","blockMap","BlockType","Page","Id","selectionStatus","SelectionStatus","selections","selected","tableResponse_1","table","constructTable","tables","keyValueResponse_1","keyValue","EntityTypes","constructKeyValue","keyValues","tableMatrix","Relationships","tableRelation","Ids","cellId","cellBlock","row","RowIndex","col","ColumnIndex","extractContentsFromBlock","cell","rowSpan","RowSpan","columnSpan","ColumnSpan","rowSize","columnSize","rows","columns","keyBlock","valueSelected","keyText","valueText","keyValueRelation","contents","valueId","valueBlock","isSelected","relation","contentId","contentBlock","AmazonAIIdentifyPredictionsProvider","configureSource","storageConfig","parser","parsedURL","match","S3Object","Name","file","Bytes","identifyText","configFormat","inputDocument","format","featureTypes","textractParam_1","rekognitionParam","param","rekognition","textract","Document","Image","detectText","rekognitionErr","rekognitionData","rekognitionResponse","TextDetections","detectDocumentText","textractErr","textractData","Blocks","FeatureTypes","analyzeDocument","identifyLabels","inputImage","servicePromises","entityType","labels","detectLabels","detectModerationLabels","identifyResult","Labels","detectLabelData","boxes","Instances","boundingBoxes","confidence","Confidence","parents","Parents","ModerationLabels","unsafe","identifyEntities","celebrityDetectionEnabled","collectionIdConfig","maxFacesConfig","_j","_k","collectionId","_l","maxFaces","updatedParam","_m","maxEntities","entities","celebrityDetection","recognizeCelebrities","faces","CelebrityFaces","celebrity","Face","landmarks","Landmarks","pose","Pose","collection","CollectionId","MaxFaces","searchFacesByImage","FaceMatches","externalImageId","decodeExternalImageId","ExternalImageId","similarity","Similarity","detectFaces","FaceDetails","detail","attributeKeys","faceAttributes","Emotions","emotion","ageRange","AgeRange","attributes","replace","AmazonAIInterpretPredictionsProvider","interpretText","interpretTypeConfig","interpretType","_o","comprehend","doAll","languagePromise","languageDetectionParams","entitiesPromise","_p","entitiesDetectionParams","sentimentPromise","_q","sentimentParams","syntaxPromise","_r","syntaxParams","keyPhrasesPromise","LanguageCode","_s","keyPhrasesParams","results","_t","ALL","LANGUAGE","detectLanguage","ENTITIES","detectEntities","SENTIMENT","detectSentiment","SYNTAX","detectSyntax","KEY_PHRASES","detectKeyPhrases","textInterpretation","keyPhrases","sentiment","syntax","textEntities","KeyPhrases","code","SyntaxTokens","serializeSyntaxFromComprehend","tokens","PartOfSpeech","Tag","Sentiment","predominant","SentimentScore","Positive","positive","Negative","negative","Neutral","neutral","Mixed","mixed","Entities","serializeEntitiesFromComprehend","detectDominantLanguage","Languages","AmazonAIPredictionsProvider","convertProvider","identifyProvider","interpretProvider","AbstractPredictionsProvider","AbstractIdentifyPredictionsProvider","AbstractInterpretPredictionsProvider"],"mappings":"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Y,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,SAAY,WACpC,WAAY,WAAY,SAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,W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","file":"js/chunk-vendors~4b835b6b.1413a1b6.js","sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { AbstractConvertPredictionsProvider } from '../types/Providers/AbstractConvertPredictionsProvider';\nimport * as Translate from 'aws-sdk/clients/translate';\nimport * as TextToSpeech from 'aws-sdk/clients/polly';\nimport { isBytesSource, } from '../types';\nimport { Credentials, ConsoleLogger as Logger, Signer, } from '@aws-amplify/core';\nimport { EventStreamMarshaller, } from '@aws-sdk/eventstream-marshaller';\nimport { fromUtf8, toUtf8 } from '@aws-sdk/util-utf8-node';\nvar logger = new Logger('AmazonAIConvertPredictionsProvider');\nvar eventBuilder = new EventStreamMarshaller(toUtf8, fromUtf8);\nvar AmazonAIConvertPredictionsProvider = /** @class */ (function (_super) {\n __extends(AmazonAIConvertPredictionsProvider, _super);\n function AmazonAIConvertPredictionsProvider() {\n var _this = _super.call(this) || this;\n _this.inputSampleRate = 44100;\n _this.outputSampleRate = 16000;\n return _this;\n }\n AmazonAIConvertPredictionsProvider.prototype.getProviderName = function () {\n return 'AmazonAIConvertPredictionsProvider';\n };\n AmazonAIConvertPredictionsProvider.prototype.translateText = function (input) {\n var _this = this;\n logger.debug('Starting translation');\n return new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {\n var _a, _b, _c, _d, _e, sourceLanguage, _f, targetLanguage, _g, region, credentials, sourceLanguageCode, targetLanguageCode;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n _a = this._config.translateText, _b = _a === void 0 ? {} : _a, _c = _b.defaults, _d = _c === void 0 ? {} : _c, _e = _d.sourceLanguage, sourceLanguage = _e === void 0 ? '' : _e, _f = _d.targetLanguage, targetLanguage = _f === void 0 ? '' : _f, _g = _b.region, region = _g === void 0 ? '' : _g;\n if (!region) {\n return [2 /*return*/, rej('region not configured for transcription')];\n }\n return [4 /*yield*/, Credentials.get()];\n case 1:\n credentials = _h.sent();\n if (!credentials) {\n return [2 /*return*/, rej('No credentials')];\n }\n sourceLanguageCode = input.translateText.source.language || sourceLanguage;\n targetLanguageCode = input.translateText.targetLanguage || targetLanguage;\n if (!sourceLanguageCode || !targetLanguageCode) {\n return [2 /*return*/, rej('Please provide both source and target language')];\n }\n this.translate = new Translate({ region: region, credentials: credentials });\n this.translate.translateText({\n SourceLanguageCode: sourceLanguageCode,\n TargetLanguageCode: targetLanguageCode,\n Text: input.translateText.source.text,\n }, function (err, data) {\n logger.debug({ err: err, data: data });\n if (err) {\n return rej(err);\n }\n else {\n return res({\n text: data.TranslatedText,\n language: data.TargetLanguageCode,\n });\n }\n });\n return [2 /*return*/];\n }\n });\n }); });\n };\n AmazonAIConvertPredictionsProvider.prototype.convertTextToSpeech = function (input) {\n var _this = this;\n return new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {\n var credentials, _a, _b, _c, _d, VoiceId, _e, region, voiceId;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0: return [4 /*yield*/, Credentials.get()];\n case 1:\n credentials = _f.sent();\n if (!credentials) {\n return [2 /*return*/, rej('No credentials')];\n }\n _a = this._config.speechGenerator, _b = _a === void 0 ? {} : _a, _c = _b.defaults, _d = (_c === void 0 ? {} : _c).VoiceId, VoiceId = _d === void 0 ? '' : _d, _e = _b.region, region = _e === void 0 ? '' : _e;\n if (!input.textToSpeech.source) {\n return [2 /*return*/, rej('Source needs to be provided in the input')];\n }\n voiceId = input.textToSpeech.voiceId || VoiceId;\n if (!region) {\n return [2 /*return*/, rej('Region was undefined. Did you enable speech generator using amplify CLI?')];\n }\n if (!voiceId) {\n return [2 /*return*/, rej('VoiceId was undefined.')];\n }\n this.textToSpeech = new TextToSpeech({ region: region, credentials: credentials });\n this.textToSpeech.synthesizeSpeech({\n OutputFormat: 'mp3',\n Text: input.textToSpeech.source.text,\n VoiceId: voiceId,\n TextType: 'text',\n SampleRate: '24000',\n }, function (err, data) {\n if (err) {\n rej(err);\n }\n else {\n var blob = new Blob([data.AudioStream], {\n type: data.ContentType,\n });\n var url = URL.createObjectURL(blob);\n res({\n speech: { url: url },\n audioStream: data.AudioStream.buffer,\n text: input.textToSpeech.source.text,\n });\n }\n });\n return [2 /*return*/];\n }\n });\n }); });\n };\n AmazonAIConvertPredictionsProvider.prototype.convertSpeechToText = function (input) {\n var _this = this;\n return new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {\n var credentials, _a, _b, _c, _d, languageCode, _e, region, _f, source, _g, language, connection, fullText, err_1, err_2;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n _h.trys.push([0, 7, , 8]);\n logger.debug('starting transcription..');\n return [4 /*yield*/, Credentials.get()];\n case 1:\n credentials = _h.sent();\n if (!credentials) {\n return [2 /*return*/, rej('No credentials')];\n }\n _a = this._config.transcription, _b = _a === void 0 ? {} : _a, _c = _b.defaults, _d = (_c === void 0 ? {} : _c).language, languageCode = _d === void 0 ? '' : _d, _e = _b.region, region = _e === void 0 ? '' : _e;\n if (!region) {\n return [2 /*return*/, rej('region not configured for transcription')];\n }\n if (!languageCode) {\n return [2 /*return*/, rej('languageCode not configured or provided for transcription')];\n }\n _f = input.transcription, source = _f.source, _g = _f.language, language = _g === void 0 ? languageCode : _g;\n if (!isBytesSource(source)) return [3 /*break*/, 6];\n return [4 /*yield*/, this.openConnectionWithTranscribe({\n credentials: credentials,\n region: region,\n languageCode: language,\n })];\n case 2:\n connection = _h.sent();\n _h.label = 3;\n case 3:\n _h.trys.push([3, 5, , 6]);\n return [4 /*yield*/, this.sendDataToTranscribe({\n connection: connection,\n raw: source.bytes,\n })];\n case 4:\n fullText = _h.sent();\n return [2 /*return*/, res({\n transcription: {\n fullText: fullText,\n },\n })];\n case 5:\n err_1 = _h.sent();\n rej(err_1);\n return [3 /*break*/, 6];\n case 6: return [2 /*return*/, rej('Source types other than byte source are not supported.')];\n case 7:\n err_2 = _h.sent();\n return [2 /*return*/, rej(err_2.name + ': ' + err_2.message)];\n case 8: return [2 /*return*/];\n }\n });\n }); });\n };\n AmazonAIConvertPredictionsProvider.serializeDataFromTranscribe = function (message) {\n var decodedMessage = '';\n var transcribeMessage = eventBuilder.unmarshall(Buffer.from(message.data));\n var transcribeMessageJson = JSON.parse(String.fromCharCode.apply(String, transcribeMessage.body));\n if (transcribeMessage.headers[':message-type'].value === 'exception') {\n logger.debug('exception', JSON.stringify(transcribeMessageJson.Message, null, 2));\n throw new Error(transcribeMessageJson.Message);\n }\n else if (transcribeMessage.headers[':message-type'].value === 'event') {\n if (transcribeMessageJson.Transcript.Results.length > 0) {\n if (transcribeMessageJson.Transcript.Results[0].Alternatives.length > 0) {\n if (transcribeMessageJson.Transcript.Results[0].Alternatives[0]\n .Transcript.length > 0) {\n if (transcribeMessageJson.Transcript.Results[0].IsPartial === false) {\n decodedMessage =\n transcribeMessageJson.Transcript.Results[0].Alternatives[0]\n .Transcript + '\\n';\n logger.debug({ decodedMessage: decodedMessage });\n }\n else {\n logger.debug({\n transcript: transcribeMessageJson.Transcript.Results[0].Alternatives[0],\n });\n }\n }\n }\n }\n }\n return decodedMessage;\n };\n AmazonAIConvertPredictionsProvider.prototype.sendDataToTranscribe = function (_a) {\n var _this = this;\n var connection = _a.connection, raw = _a.raw;\n return new Promise(function (res, rej) {\n var fullText = '';\n connection.onmessage = function (message) {\n try {\n var decodedMessage = AmazonAIConvertPredictionsProvider.serializeDataFromTranscribe(message);\n if (decodedMessage) {\n fullText += decodedMessage + ' ';\n }\n }\n catch (err) {\n logger.debug(err);\n rej(err.message);\n }\n };\n connection.onerror = function (errorEvent) {\n logger.debug({ errorEvent: errorEvent });\n rej('failed to transcribe, network error');\n };\n connection.onclose = function (closeEvent) {\n logger.debug({ closeEvent: closeEvent });\n return res(fullText.trim());\n };\n logger.debug({ raw: raw });\n if (Array.isArray(raw)) {\n for (var i = 0; i < raw.length - 1023; i += 1024) {\n var data = raw.slice(i, i + 1024);\n _this.sendEncodedDataToTranscribe(connection, data);\n }\n }\n // sending end frame\n var endFrameEventMessage = _this.getAudioEventMessage(Buffer.from([]));\n var endFrameBinary = eventBuilder.marshall(endFrameEventMessage);\n connection.send(endFrameBinary);\n });\n };\n AmazonAIConvertPredictionsProvider.prototype.sendEncodedDataToTranscribe = function (connection, data) {\n var downsampledBuffer = this.downsampleBuffer({ buffer: data });\n var pcmEncodedBuffer = this.pcmEncode(downsampledBuffer);\n var audioEventMessage = this.getAudioEventMessage(Buffer.from(pcmEncodedBuffer));\n var binary = eventBuilder.marshall(audioEventMessage);\n connection.send(binary);\n };\n AmazonAIConvertPredictionsProvider.prototype.getAudioEventMessage = function (buffer) {\n var audioEventMessage = {\n body: buffer,\n headers: {\n ':message-type': {\n type: 'string',\n value: 'event',\n },\n ':event-type': {\n type: 'string',\n value: 'AudioEvent',\n },\n },\n };\n return audioEventMessage;\n };\n AmazonAIConvertPredictionsProvider.prototype.pcmEncode = function (input) {\n var offset = 0;\n var buffer = new ArrayBuffer(input.length * 2);\n var view = new DataView(buffer);\n for (var i = 0; i < input.length; i++, offset += 2) {\n var s = Math.max(-1, Math.min(1, input[i]));\n view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n }\n return buffer;\n };\n AmazonAIConvertPredictionsProvider.prototype.downsampleBuffer = function (_a) {\n var buffer = _a.buffer;\n if (this.outputSampleRate === this.inputSampleRate) {\n return buffer;\n }\n var sampleRateRatio = this.inputSampleRate / this.outputSampleRate;\n var newLength = Math.round(buffer.length / sampleRateRatio);\n var result = new Float32Array(newLength);\n var offsetResult = 0;\n var offsetBuffer = 0;\n while (offsetResult < result.length) {\n var nextOffsetBuffer = Math.round((offsetResult + 1) * sampleRateRatio);\n var accum = 0, count = 0;\n for (var i = offsetBuffer; i < nextOffsetBuffer && i < buffer.length; i++) {\n accum += buffer[i];\n count++;\n }\n result[offsetResult] = accum / count;\n offsetResult++;\n offsetBuffer = nextOffsetBuffer;\n }\n return result;\n };\n AmazonAIConvertPredictionsProvider.prototype.openConnectionWithTranscribe = function (_a) {\n var _this = this;\n var userCredentials = _a.credentials, region = _a.region, languageCode = _a.languageCode;\n return new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {\n var access_key, secret_key, session_token, credentials, signedUrl, connection;\n return __generator(this, function (_a) {\n access_key = userCredentials.accessKeyId, secret_key = userCredentials.secretAccessKey, session_token = userCredentials.sessionToken;\n credentials = {\n access_key: access_key,\n secret_key: secret_key,\n session_token: session_token,\n };\n signedUrl = this.generateTranscribeUrl({\n credentials: credentials,\n region: region,\n languageCode: languageCode,\n });\n logger.debug('connecting...');\n connection = new WebSocket(signedUrl);\n connection.binaryType = 'arraybuffer';\n connection.onopen = function () {\n logger.debug('connected');\n res(connection);\n };\n return [2 /*return*/];\n });\n }); });\n };\n AmazonAIConvertPredictionsProvider.prototype.generateTranscribeUrl = function (_a) {\n var credentials = _a.credentials, region = _a.region, languageCode = _a.languageCode;\n var url = [\n \"wss://transcribestreaming.\" + region + \".amazonaws.com:8443\",\n '/stream-transcription-websocket?',\n \"media-encoding=pcm&\",\n \"sample-rate=16000&\",\n \"language-code=\" + languageCode,\n ].join('');\n var signedUrl = Signer.signUrl(url, credentials, { region: region, service: 'transcribe' }, 300);\n return signedUrl;\n };\n return AmazonAIConvertPredictionsProvider;\n}(AbstractConvertPredictionsProvider));\nexport default AmazonAIConvertPredictionsProvider;\n//# sourceMappingURL=AmazonAIConvertPredictionsProvider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isTranslateTextInput, isTextToSpeechInput, isSpeechToTextInput, } from '../Predictions';\nimport { AbstractPredictionsProvider } from '.';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('AbstractConvertPredictionsProvider');\nvar AbstractConvertPredictionsProvider = /** @class */ (function (_super) {\n __extends(AbstractConvertPredictionsProvider, _super);\n function AbstractConvertPredictionsProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AbstractConvertPredictionsProvider.prototype.getCategory = function () {\n return 'Convert';\n };\n AbstractConvertPredictionsProvider.prototype.convert = function (input) {\n if (isTranslateTextInput(input)) {\n logger.debug('translateText');\n return this.translateText(input);\n }\n else if (isTextToSpeechInput(input)) {\n logger.debug('textToSpeech');\n return this.convertTextToSpeech(input);\n }\n else if (isSpeechToTextInput(input)) {\n logger.debug('textToSpeech');\n return this.convertSpeechToText(input);\n }\n };\n AbstractConvertPredictionsProvider.prototype.translateText = function (translateTextInput) {\n throw new Error('convertText is not implemented by this provider');\n };\n AbstractConvertPredictionsProvider.prototype.convertTextToSpeech = function (textToSpeechInput) {\n throw new Error('convertTextToSpeech is not implemented by this provider');\n };\n AbstractConvertPredictionsProvider.prototype.convertSpeechToText = function (speechToTextInput) {\n throw new Error('convertSpeechToText is not implemented by this provider');\n };\n return AbstractConvertPredictionsProvider;\n}(AbstractPredictionsProvider));\nexport { AbstractConvertPredictionsProvider };\n//# sourceMappingURL=AbstractConvertPredictionsProvider.js.map","/**\n * Convert types\n */\nexport var InterpretTextCategories;\n(function (InterpretTextCategories) {\n InterpretTextCategories[\"ALL\"] = \"ALL\";\n InterpretTextCategories[\"LANGUAGE\"] = \"LANGUAGE\";\n InterpretTextCategories[\"ENTITIES\"] = \"ENTITIES\";\n InterpretTextCategories[\"SENTIMENT\"] = \"SENTIMENT\";\n InterpretTextCategories[\"SYNTAX\"] = \"SYNTAX\";\n InterpretTextCategories[\"KEY_PHRASES\"] = \"KEY_PHRASES\";\n})(InterpretTextCategories || (InterpretTextCategories = {}));\nexport function isIdentifyFromCollection(obj) {\n var key = 'collection';\n var keyId = 'collectionId';\n return obj && (obj.hasOwnProperty(key) || obj.hasOwnProperty(keyId));\n}\nexport function isIdentifyCelebrities(obj) {\n var key = 'celebrityDetection';\n return obj && obj.hasOwnProperty(key);\n}\nexport function isTranslateTextInput(obj) {\n var key = 'translateText';\n return obj && obj.hasOwnProperty(key);\n}\nexport function isTextToSpeechInput(obj) {\n var key = 'textToSpeech';\n return obj && obj.hasOwnProperty(key);\n}\nexport function isSpeechToTextInput(obj) {\n var key = 'transcription';\n return obj && obj.hasOwnProperty(key);\n}\nexport function isStorageSource(obj) {\n var key = 'key';\n return obj && obj.hasOwnProperty(key);\n}\nexport function isFileSource(obj) {\n var key = 'file';\n return obj && obj.hasOwnProperty(key);\n}\nexport function isBytesSource(obj) {\n var key = 'bytes';\n return obj && obj.hasOwnProperty(key);\n}\nexport function isIdentifyTextInput(obj) {\n var key = 'text';\n return obj && obj.hasOwnProperty(key);\n}\nexport function isIdentifyLabelsInput(obj) {\n var key = 'labels';\n return obj && obj.hasOwnProperty(key);\n}\nexport function isIdentifyEntitiesInput(obj) {\n var key = 'entities';\n return obj && obj.hasOwnProperty(key);\n}\nexport function isInterpretTextInput(obj) {\n var key = 'text';\n return obj && obj.hasOwnProperty(key);\n}\n//# sourceMappingURL=Predictions.js.map","export * from './Predictions';\n//# sourceMappingURL=index.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('AbstractPubSubProvider');\nvar AbstractPubSubProvider = /** @class */ (function () {\n function AbstractPubSubProvider(options) {\n if (options === void 0) { options = {}; }\n this._config = options;\n }\n AbstractPubSubProvider.prototype.configure = function (config) {\n if (config === void 0) { config = {}; }\n this._config = __assign(__assign({}, config), this._config);\n logger.debug(\"configure \" + this.getProviderName(), this._config);\n return this.options;\n };\n AbstractPubSubProvider.prototype.getCategory = function () {\n return 'PubSub';\n };\n Object.defineProperty(AbstractPubSubProvider.prototype, \"options\", {\n get: function () {\n return __assign({}, this._config);\n },\n enumerable: true,\n configurable: true\n });\n return AbstractPubSubProvider;\n}());\nexport { AbstractPubSubProvider };\n//# sourceMappingURL=PubSubProvider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __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};\n/*\n * Copyright 2017-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 * as Paho from 'paho-mqtt';\nimport { v4 as uuid } from 'uuid';\nimport * as Observable from 'zen-observable';\nimport { AbstractPubSubProvider } from './PubSubProvider';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('MqttOverWSProvider');\nexport function mqttTopicMatch(filter, topic) {\n var filterArray = filter.split('/');\n var length = filterArray.length;\n var topicArray = topic.split('/');\n for (var i = 0; i < length; ++i) {\n var left = filterArray[i];\n var right = topicArray[i];\n if (left === '#')\n return topicArray.length >= length;\n if (left !== '+' && left !== right)\n return false;\n }\n return length === topicArray.length;\n}\nvar ClientsQueue = /** @class */ (function () {\n function ClientsQueue() {\n this.promises = new Map();\n }\n ClientsQueue.prototype.get = function (clientId, clientFactory) {\n return __awaiter(this, void 0, void 0, function () {\n var promise;\n return __generator(this, function (_a) {\n promise = this.promises.get(clientId);\n if (promise) {\n return [2 /*return*/, promise];\n }\n promise = clientFactory(clientId);\n this.promises.set(clientId, promise);\n return [2 /*return*/, promise];\n });\n });\n };\n Object.defineProperty(ClientsQueue.prototype, \"allClients\", {\n get: function () {\n return Array.from(this.promises.keys());\n },\n enumerable: true,\n configurable: true\n });\n ClientsQueue.prototype.remove = function (clientId) {\n this.promises.delete(clientId);\n };\n return ClientsQueue;\n}());\nvar topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';\nvar MqttOverWSProvider = /** @class */ (function (_super) {\n __extends(MqttOverWSProvider, _super);\n function MqttOverWSProvider(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, __assign(__assign({}, options), { clientId: options.clientId || uuid() })) || this;\n _this._clientsQueue = new ClientsQueue();\n _this._topicObservers = new Map();\n _this._clientIdObservers = new Map();\n return _this;\n }\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientId\", {\n get: function () {\n return this.options.clientId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"endpoint\", {\n get: function () {\n return this.options.aws_pubsub_endpoint;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientsQueue\", {\n get: function () {\n return this._clientsQueue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"isSSLEnabled\", {\n get: function () {\n return !this.options\n .aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n },\n enumerable: true,\n configurable: true\n });\n MqttOverWSProvider.prototype.getTopicForValue = function (value) {\n return typeof value === 'object' && value[topicSymbol];\n };\n MqttOverWSProvider.prototype.getProviderName = function () {\n return 'MqttOverWSProvider';\n };\n MqttOverWSProvider.prototype.onDisconnect = function (_a) {\n var clientId = _a.clientId, errorCode = _a.errorCode, args = __rest(_a, [\"clientId\", \"errorCode\"]);\n if (errorCode !== 0) {\n logger.warn(clientId, JSON.stringify(__assign({ errorCode: errorCode }, args), null, 2));\n this._topicObservers.forEach(function (observerForTopic, _observerTopic) {\n observerForTopic.forEach(function (observer) {\n observer.error('Disconnected, error code: ' + errorCode);\n observer.complete();\n });\n });\n }\n this._topicObservers = new Map();\n };\n MqttOverWSProvider.prototype.newClient = function (_a) {\n var url = _a.url, clientId = _a.clientId;\n return __awaiter(this, void 0, void 0, function () {\n var client;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug('Creating new MQTT client', clientId);\n client = new Paho.Client(url, clientId);\n // client.trace = (args) => logger.debug(clientId, JSON.stringify(args, null, 2));\n client.onMessageArrived = function (_a) {\n var topic = _a.destinationName, msg = _a.payloadString;\n _this._onMessage(topic, msg);\n };\n client.onConnectionLost = function (_a) {\n var errorCode = _a.errorCode, args = __rest(_a, [\"errorCode\"]);\n _this.onDisconnect(__assign({ clientId: clientId, errorCode: errorCode }, args));\n };\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n client.connect({\n useSSL: _this.isSSLEnabled,\n mqttVersion: 3,\n onSuccess: function () { return resolve(client); },\n onFailure: reject,\n });\n })];\n case 1:\n _b.sent();\n return [2 /*return*/, client];\n }\n });\n });\n };\n MqttOverWSProvider.prototype.connect = function (clientId, options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.clientsQueue.get(clientId, function (clientId) {\n return _this.newClient(__assign(__assign({}, options), { clientId: clientId }));\n })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n MqttOverWSProvider.prototype.disconnect = function (clientId) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.clientsQueue.get(clientId, function () { return null; })];\n case 1:\n client = _a.sent();\n if (client && client.isConnected()) {\n client.disconnect();\n }\n this.clientsQueue.remove(clientId);\n return [2 /*return*/];\n }\n });\n });\n };\n MqttOverWSProvider.prototype.publish = function (topics, msg) {\n return __awaiter(this, void 0, void 0, function () {\n var targetTopics, message, url, client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n targetTopics = [].concat(topics);\n message = JSON.stringify(msg);\n return [4 /*yield*/, this.endpoint];\n case 1:\n url = _a.sent();\n return [4 /*yield*/, this.connect(this.clientId, { url: url })];\n case 2:\n client = _a.sent();\n logger.debug('Publishing to topic(s)', targetTopics.join(','), message);\n targetTopics.forEach(function (topic) { return client.send(topic, message); });\n return [2 /*return*/];\n }\n });\n });\n };\n MqttOverWSProvider.prototype._onMessage = function (topic, msg) {\n try {\n var matchedTopicObservers_1 = [];\n this._topicObservers.forEach(function (observerForTopic, observerTopic) {\n if (mqttTopicMatch(observerTopic, topic)) {\n matchedTopicObservers_1.push(observerForTopic);\n }\n });\n var parsedMessage_1 = JSON.parse(msg);\n if (typeof parsedMessage_1 === 'object') {\n parsedMessage_1[topicSymbol] = topic;\n }\n matchedTopicObservers_1.forEach(function (observersForTopic) {\n observersForTopic.forEach(function (observer) { return observer.next(parsedMessage_1); });\n });\n }\n catch (error) {\n logger.warn('Error handling message', error, msg);\n }\n };\n MqttOverWSProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n var targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n return new Observable(function (observer) {\n targetTopics.forEach(function (topic) {\n var observersForTopic = _this._topicObservers.get(topic);\n if (!observersForTopic) {\n observersForTopic = new Set();\n _this._topicObservers.set(topic, observersForTopic);\n }\n observersForTopic.add(observer);\n });\n // @ts-ignore\n var client;\n var _a = options.clientId, clientId = _a === void 0 ? _this.clientId : _a;\n var observersForClientId = _this._clientIdObservers.get(clientId);\n if (!observersForClientId) {\n observersForClientId = new Set();\n }\n observersForClientId.add(observer);\n _this._clientIdObservers.set(clientId, observersForClientId);\n (function () { return __awaiter(_this, void 0, void 0, function () {\n var _a, url, _b, e_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = options.url;\n if (!(_a === void 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.endpoint];\n case 1:\n _b = _c.sent();\n return [3 /*break*/, 3];\n case 2:\n _b = _a;\n _c.label = 3;\n case 3:\n url = _b;\n _c.label = 4;\n case 4:\n _c.trys.push([4, 6, , 7]);\n return [4 /*yield*/, this.connect(clientId, { url: url })];\n case 5:\n client = _c.sent();\n targetTopics.forEach(function (topic) {\n client.subscribe(topic);\n });\n return [3 /*break*/, 7];\n case 6:\n e_1 = _c.sent();\n observer.error(e_1);\n return [3 /*break*/, 7];\n case 7: return [2 /*return*/];\n }\n });\n }); })();\n return function () {\n logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n if (client) {\n _this._clientIdObservers.get(clientId).delete(observer);\n targetTopics.forEach(function (topic) {\n if (client.isConnected()) {\n client.unsubscribe(topic);\n }\n var observersForTopic = _this._topicObservers.get(topic) ||\n new Set();\n observersForTopic.forEach(function (observer) { return observer.complete(); });\n observersForTopic.clear();\n });\n if (_this._clientIdObservers.get(clientId).size === 0) {\n _this.disconnect(clientId);\n _this._clientIdObservers.delete(clientId);\n }\n }\n return null;\n };\n });\n };\n return MqttOverWSProvider;\n}(AbstractPubSubProvider));\nexport { MqttOverWSProvider };\n//# sourceMappingURL=MqttOverWSProvider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __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};\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 * as Observable from 'zen-observable';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { MqttOverWSProvider } from './MqttOverWSProvider';\nvar logger = new Logger('AWSAppSyncProvider');\nvar AWSAppSyncProvider = /** @class */ (function (_super) {\n __extends(AWSAppSyncProvider, _super);\n function AWSAppSyncProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._topicClient = new Map();\n _this._topicAlias = new Map();\n return _this;\n }\n Object.defineProperty(AWSAppSyncProvider.prototype, \"endpoint\", {\n get: function () {\n throw new Error('Not supported');\n },\n enumerable: true,\n configurable: true\n });\n AWSAppSyncProvider.prototype.getProviderName = function () {\n return 'AWSAppSyncProvider';\n };\n AWSAppSyncProvider.prototype.publish = function (topics, msg, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error('Operation not supported');\n });\n });\n };\n AWSAppSyncProvider.prototype._cleanUp = function (clientId) {\n var _this = this;\n var topicsForClient = Array.from(this._topicClient.entries())\n .filter(function (_a) {\n var c = _a[1];\n return c.clientId === clientId;\n })\n .map(function (_a) {\n var t = _a[0];\n return t;\n });\n topicsForClient.forEach(function (t) { return _this._cleanUpForTopic(t); });\n };\n AWSAppSyncProvider.prototype._cleanUpForTopic = function (topic) {\n this._topicClient.delete(topic);\n this._topicAlias.delete(topic);\n };\n AWSAppSyncProvider.prototype.onDisconnect = function (_a) {\n var _this = this;\n var clientId = _a.clientId, errorCode = _a.errorCode, args = __rest(_a, [\"clientId\", \"errorCode\"]);\n if (errorCode !== 0) {\n var topicsForClient = Array.from(this._topicClient.entries())\n .filter(function (_a) {\n var c = _a[1];\n return c.clientId === clientId;\n })\n .map(function (_a) {\n var t = _a[0];\n return t;\n });\n topicsForClient.forEach(function (topic) {\n if (_this._topicObservers.has(topic)) {\n _this._topicObservers.get(topic).forEach(function (obs) {\n if (!obs.closed) {\n obs.error(args);\n }\n });\n _this._topicObservers.delete(topic);\n }\n });\n this._cleanUp(clientId);\n }\n };\n AWSAppSyncProvider.prototype.disconnect = function (clientId) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.clientsQueue.get(clientId, function () { return null; })];\n case 1:\n client = _a.sent();\n return [4 /*yield*/, _super.prototype.disconnect.call(this, clientId)];\n case 2:\n _a.sent();\n this._cleanUp(clientId);\n return [2 /*return*/];\n }\n });\n });\n };\n AWSAppSyncProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n var result = new Observable(function (observer) {\n var targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n (function () { return __awaiter(_this, void 0, void 0, function () {\n var _a, mqttConnections, newSubscriptions, newAliases, map;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n // Add these topics to map\n targetTopics.forEach(function (t) {\n if (!_this._topicObservers.has(t)) {\n _this._topicObservers.set(t, new Set());\n }\n _this._topicObservers.get(t).add(observer);\n });\n _a = options.mqttConnections, mqttConnections = _a === void 0 ? [] : _a, newSubscriptions = options.newSubscriptions;\n newAliases = Object.entries(newSubscriptions).map(function (_a) {\n var alias = _a[0], v = _a[1];\n return [v.topic, alias];\n });\n // Merge new aliases with old ones\n this._topicAlias = new Map(__spreadArrays(Array.from(this._topicAlias.entries()), newAliases));\n map = Object.entries(targetTopics.reduce(function (acc, elem) {\n var connectionInfoForTopic = mqttConnections.find(function (c) { return c.topics.indexOf(elem) > -1; });\n if (connectionInfoForTopic) {\n var clientId = connectionInfoForTopic.client, url = connectionInfoForTopic.url;\n if (!acc[clientId]) {\n acc[clientId] = {\n url: url,\n topics: new Set(),\n };\n }\n acc[clientId].topics.add(elem);\n }\n return acc;\n }, {}));\n // reconnect everything we have in the map\n return [4 /*yield*/, Promise.all(map.map(function (_a) {\n var clientId = _a[0], _b = _a[1], url = _b.url, topics = _b.topics;\n return __awaiter(_this, void 0, void 0, function () {\n var client, err_1;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n client = null;\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.connect(clientId, {\n clientId: clientId,\n url: url,\n })];\n case 2:\n client = _c.sent();\n return [3 /*break*/, 4];\n case 3:\n err_1 = _c.sent();\n observer.error({ message: 'Failed to connect', error: err_1 });\n observer.complete();\n return [2 /*return*/, undefined];\n case 4:\n // subscribe to all topics for this client\n // store topic-client mapping\n topics.forEach(function (topic) {\n if (client.isConnected()) {\n client.subscribe(topic);\n _this._topicClient.set(topic, client);\n }\n });\n return [2 /*return*/, client];\n }\n });\n });\n }))];\n case 1:\n // reconnect everything we have in the map\n _b.sent();\n return [2 /*return*/];\n }\n });\n }); })();\n return function () {\n logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n targetTopics.forEach(function (t) {\n var client = _this._topicClient.get(t);\n if (client && client.isConnected()) {\n client.unsubscribe(t);\n _this._topicClient.delete(t);\n if (!Array.from(_this._topicClient.values()).some(function (c) { return c === client; })) {\n _this.disconnect(client.clientId);\n }\n }\n _this._topicObservers.delete(t);\n });\n };\n });\n return Observable.from(result).map(function (value) {\n var topic = _this.getTopicForValue(value);\n var alias = _this._topicAlias.get(topic);\n value.data = Object.entries(value.data).reduce(function (obj, _a) {\n var origKey = _a[0], val = _a[1];\n return ((obj[(alias || origKey)] = val), obj);\n }, {});\n return value;\n });\n };\n return AWSAppSyncProvider;\n}(MqttOverWSProvider));\nexport { AWSAppSyncProvider };\n//# sourceMappingURL=AWSAppSyncProvider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/*\n * Copyright 2017-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 { MqttOverWSProvider } from './MqttOverWSProvider';\nimport { Signer, Credentials } from '@aws-amplify/core';\nvar SERVICE_NAME = 'iotdevicegateway';\nvar AWSIoTProvider = /** @class */ (function (_super) {\n __extends(AWSIoTProvider, _super);\n function AWSIoTProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(AWSIoTProvider.prototype, \"region\", {\n get: function () {\n return this.options.aws_pubsub_region;\n },\n enumerable: true,\n configurable: true\n });\n AWSIoTProvider.prototype.getProviderName = function () {\n return 'AWSIoTProvider';\n };\n Object.defineProperty(AWSIoTProvider.prototype, \"endpoint\", {\n get: function () {\n var _this = this;\n return (function () { return __awaiter(_this, void 0, void 0, function () {\n var endpoint, serviceInfo, _a, access_key, secret_key, session_token, result;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n endpoint = this.options.aws_pubsub_endpoint;\n serviceInfo = {\n service: SERVICE_NAME,\n region: this.region,\n };\n return [4 /*yield*/, Credentials.get()];\n case 1:\n _a = _b.sent(), access_key = _a.accessKeyId, secret_key = _a.secretAccessKey, session_token = _a.sessionToken;\n result = Signer.signUrl(endpoint, { access_key: access_key, secret_key: secret_key, session_token: session_token }, serviceInfo);\n return [2 /*return*/, result];\n }\n });\n }); })();\n },\n enumerable: true,\n configurable: true\n });\n return AWSIoTProvider;\n}(MqttOverWSProvider));\nexport { AWSIoTProvider };\n//# sourceMappingURL=AWSIotProvider.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-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 */\n// import '../Common/Polyfills';\nimport * as Observable from 'zen-observable';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER } from '@aws-amplify/core/lib/constants';\nimport { AWSAppSyncProvider } from './Providers';\nvar logger = new Logger('PubSub');\nvar PubSub = /** @class */ (function () {\n /**\n * Initialize PubSub with AWS configurations\n *\n * @param {PubSubOptions} options - Configuration object for PubSub\n */\n function PubSub(options) {\n this._options = options;\n logger.debug('PubSub Options', this._options);\n this._pluggables = [];\n this.subscribe = this.subscribe.bind(this);\n }\n Object.defineProperty(PubSub.prototype, \"awsAppSyncProvider\", {\n /**\n * Lazy instantiate awsAppSyncProvider when it is required by the API category\n */\n get: function () {\n if (!this._awsAppSyncProvider) {\n this._awsAppSyncProvider = new AWSAppSyncProvider(this._options);\n }\n return this._awsAppSyncProvider;\n },\n enumerable: true,\n configurable: true\n });\n PubSub.prototype.getModuleName = function () {\n return 'PubSub';\n };\n /**\n * Configure PubSub part with configurations\n *\n * @param {PubSubOptions} config - Configuration for PubSub\n * @return {Object} - The current configuration\n */\n PubSub.prototype.configure = function (options) {\n var _this = this;\n var opt = options ? options.PubSub || options : {};\n logger.debug('configure PubSub', { opt: opt });\n this._options = Object.assign({}, this._options, opt);\n this._pluggables.map(function (pluggable) { return pluggable.configure(_this._options); });\n return this._options;\n };\n /**\n * add plugin into Analytics category\n * @param {Object} pluggable - an instance of the plugin\n */\n PubSub.prototype.addPluggable = function (pluggable) {\n return __awaiter(this, void 0, void 0, function () {\n var config;\n return __generator(this, function (_a) {\n if (pluggable && pluggable.getCategory() === 'PubSub') {\n this._pluggables.push(pluggable);\n config = pluggable.configure(this._options);\n return [2 /*return*/, config];\n }\n return [2 /*return*/];\n });\n });\n };\n PubSub.prototype.getProviderByName = function (providerName) {\n if (providerName === INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER) {\n return this.awsAppSyncProvider;\n }\n return this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === providerName; });\n };\n PubSub.prototype.getProviders = function (options) {\n if (options === void 0) { options = {}; }\n var providerName = options.provider;\n if (!providerName) {\n return this._pluggables;\n }\n var provider = this.getProviderByName(providerName);\n if (!provider) {\n throw new Error(\"Could not find provider named \" + providerName);\n }\n return [provider];\n };\n PubSub.prototype.publish = function (topics, msg, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.all(this.getProviders(options).map(function (provider) {\n return provider.publish(topics, msg, options);\n }))];\n });\n });\n };\n PubSub.prototype.subscribe = function (topics, options) {\n logger.debug('subscribe options', options);\n var providers = this.getProviders(options);\n return new Observable(function (observer) {\n var observables = providers.map(function (provider) { return ({\n provider: provider,\n observable: provider.subscribe(topics, options),\n }); });\n var subscriptions = observables.map(function (_a) {\n var provider = _a.provider, observable = _a.observable;\n return observable.subscribe({\n start: console.error,\n next: function (value) { return observer.next({ provider: provider, value: value }); },\n error: function (error) { return observer.error({ provider: provider, error: error }); },\n });\n });\n return function () {\n return subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); });\n };\n });\n };\n return PubSub;\n}());\nexport default PubSub;\n//# sourceMappingURL=PubSub.js.map","/*\n * Copyright 2017-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 PubSubClass from './PubSub';\nimport Amplify, { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('PubSub');\nvar _instance = null;\nif (!_instance) {\n logger.debug('Create PubSub Instance');\n _instance = new PubSubClass(null);\n}\nvar PubSub = _instance;\nAmplify.register(PubSub);\nexport default PubSub;\nexport * from './Providers/AWSIotProvider';\nexport { PubSubClass };\n//# sourceMappingURL=index.js.map","/*\n * Copyright 2017-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 */\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};\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('AbstractInteractionsProvider');\nvar AbstractInteractionsProvider = /** @class */ (function () {\n function AbstractInteractionsProvider(options) {\n if (options === void 0) { options = {}; }\n this._config = options;\n }\n AbstractInteractionsProvider.prototype.configure = function (config) {\n if (config === void 0) { config = {}; }\n this._config = __assign(__assign({}, this._config), config);\n logger.debug(\"configure \" + this.getProviderName(), this._config);\n return this.options;\n };\n AbstractInteractionsProvider.prototype.getCategory = function () {\n return 'Interactions';\n };\n Object.defineProperty(AbstractInteractionsProvider.prototype, \"options\", {\n get: function () {\n return __assign({}, this._config);\n },\n enumerable: true,\n configurable: true\n });\n return AbstractInteractionsProvider;\n}());\nexport { AbstractInteractionsProvider };\n//# sourceMappingURL=InteractionsProvider.js.map","/*\n * Copyright 2017-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 */\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})();\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 { AbstractInteractionsProvider } from './InteractionsProvider';\nimport * as LexRuntime from 'aws-sdk/clients/lexruntime';\nimport { ConsoleLogger as Logger, AWS, Credentials } from '@aws-amplify/core';\nvar logger = new Logger('AWSLexProvider');\nvar AWSLexProvider = /** @class */ (function (_super) {\n __extends(AWSLexProvider, _super);\n function AWSLexProvider(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, options) || this;\n _this.aws_lex = new LexRuntime({ region: _this._config.region });\n _this._botsCompleteCallback = {};\n return _this;\n }\n AWSLexProvider.prototype.getProviderName = function () {\n return 'AWSLexProvider';\n };\n AWSLexProvider.prototype.responseCallback = function (err, data, res, rej, botname) {\n var _this = this;\n if (err) {\n rej(err);\n return;\n }\n else {\n // Check if state is fulfilled to resolve onFullfilment promise\n logger.debug('postContent state', data.dialogState);\n if (data.dialogState === 'ReadyForFulfillment' ||\n data.dialogState === 'Fulfilled') {\n if (typeof this._botsCompleteCallback[botname] === 'function') {\n setTimeout(function () {\n return _this._botsCompleteCallback[botname](null, { slots: data.slots });\n }, 0);\n }\n if (this._config &&\n typeof this._config[botname].onComplete === 'function') {\n setTimeout(function () { return _this._config[botname].onComplete(null, { slots: data.slots }); }, 0);\n }\n }\n res(data);\n if (data.dialogState === 'Failed') {\n if (typeof this._botsCompleteCallback[botname] === 'function') {\n setTimeout(function () {\n return _this._botsCompleteCallback[botname]('Bot conversation failed');\n }, 0);\n }\n if (this._config &&\n typeof this._config[botname].onComplete === 'function') {\n setTimeout(function () { return _this._config[botname].onComplete('Bot conversation failed'); }, 0);\n }\n }\n }\n };\n AWSLexProvider.prototype.sendMessage = function (botname, message) {\n var _this = this;\n return new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {\n var credentials, params;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._config[botname]) {\n return [2 /*return*/, rej('Bot ' + botname + ' does not exist')];\n }\n return [4 /*yield*/, Credentials.get()];\n case 1:\n credentials = _a.sent();\n if (!credentials) {\n return [2 /*return*/, rej('No credentials')];\n }\n AWS.config.update({\n credentials: credentials,\n });\n this.aws_lex = new LexRuntime({\n region: this._config[botname].region,\n credentials: credentials,\n });\n if (typeof message === 'string') {\n params = {\n botAlias: this._config[botname].alias,\n botName: botname,\n inputText: message,\n userId: credentials.identityId,\n };\n logger.debug('postText to lex', message);\n this.aws_lex.postText(params, function (err, data) {\n _this.responseCallback(err, data, res, rej, botname);\n });\n }\n else {\n if (message.options['messageType'] === 'voice') {\n params = {\n botAlias: this._config[botname].alias,\n botName: botname,\n contentType: 'audio/x-l16; sample-rate=16000',\n inputStream: message.content,\n userId: credentials.identityId,\n accept: 'audio/mpeg',\n };\n }\n else {\n params = {\n botAlias: this._config[botname].alias,\n botName: botname,\n contentType: 'text/plain; charset=utf-8',\n inputStream: message.content,\n userId: credentials.identityId,\n accept: 'audio/mpeg',\n };\n }\n logger.debug('postContent to lex', message);\n this.aws_lex.postContent(params, function (err, data) {\n _this.responseCallback(err, data, res, rej, botname);\n });\n }\n return [2 /*return*/];\n }\n });\n }); });\n };\n AWSLexProvider.prototype.onComplete = function (botname, callback) {\n if (!this._config[botname]) {\n throw new ErrorEvent('Bot ' + botname + ' does not exist');\n }\n this._botsCompleteCallback[botname] = callback;\n };\n return AWSLexProvider;\n}(AbstractInteractionsProvider));\nexport { AWSLexProvider };\n//# sourceMappingURL=AWSLexProvider.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 '@aws-amplify/core';\nimport { AWSLexProvider } from './Providers';\nvar logger = new Logger('Interactions');\nvar Interactions = /** @class */ (function () {\n /**\n * Initialize PubSub with AWS configurations\n *\n * @param {InteractionsOptions} options - Configuration object for Interactions\n */\n function Interactions(options) {\n this._options = options;\n logger.debug('Interactions Options', this._options);\n this._pluggables = {};\n }\n Interactions.prototype.getModuleName = function () {\n return 'Interactions';\n };\n /**\n *\n * @param {InteractionsOptions} options - Configuration object for Interactions\n * @return {Object} - The current configuration\n */\n Interactions.prototype.configure = function (options) {\n var _this = this;\n var opt = options ? options.Interactions || options : {};\n logger.debug('configure Interactions', { opt: opt });\n this._options = __assign(__assign({ bots: {} }, opt), opt.Interactions);\n var aws_bots_config = this._options.aws_bots_config;\n var bots_config = this._options.bots;\n if (!Object.keys(bots_config).length && aws_bots_config) {\n // Convert aws_bots_config to bots object\n if (Array.isArray(aws_bots_config)) {\n aws_bots_config.forEach(function (bot) {\n _this._options.bots[bot.name] = bot;\n });\n }\n }\n // Check if AWSLex provider is already on pluggables\n if (!this._pluggables.AWSLexProvider &&\n bots_config &&\n Object.keys(bots_config)\n .map(function (key) { return bots_config[key]; })\n .find(function (bot) { return !bot.providerName || bot.providerName === 'AWSLexProvider'; })) {\n this._pluggables.AWSLexProvider = new AWSLexProvider();\n }\n Object.keys(this._pluggables).map(function (key) {\n _this._pluggables[key].configure(_this._options.bots);\n });\n return this._options;\n };\n Interactions.prototype.addPluggable = function (pluggable) {\n if (pluggable && pluggable.getCategory() === 'Interactions') {\n if (!this._pluggables[pluggable.getProviderName()]) {\n pluggable.configure(this._options.bots);\n this._pluggables[pluggable.getProviderName()] = pluggable;\n return;\n }\n else {\n throw new Error('Bot ' + pluggable.getProviderName() + ' already plugged');\n }\n }\n };\n Interactions.prototype.send = function (botname, message) {\n return __awaiter(this, void 0, void 0, function () {\n var botProvider;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._options.bots || !this._options.bots[botname]) {\n throw new Error('Bot ' + botname + ' does not exist');\n }\n botProvider = this._options.bots[botname].providerName || 'AWSLexProvider';\n if (!this._pluggables[botProvider]) {\n throw new Error('Bot ' +\n botProvider +\n ' does not have valid pluggin did you try addPluggable first?');\n }\n return [4 /*yield*/, this._pluggables[botProvider].sendMessage(botname, message)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Interactions.prototype.onComplete = function (botname, callback) {\n if (!this._options.bots || !this._options.bots[botname]) {\n throw new Error('Bot ' + botname + ' does not exist');\n }\n var botProvider = this._options.bots[botname].providerName || 'AWSLexProvider';\n if (!this._pluggables[botProvider]) {\n throw new Error('Bot ' +\n botProvider +\n ' does not have valid pluggin did you try addPluggable first?');\n }\n this._pluggables[botProvider].onComplete(botname, callback);\n };\n return Interactions;\n}());\nexport default Interactions;\n//# sourceMappingURL=Interactions.js.map","/*\n * Copyright 2017-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 InteractionsClass from './Interactions';\nimport Amplify, { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('Interactions');\nvar _instance = null;\nif (!_instance) {\n logger.debug('Create Interactions Instance');\n _instance = new InteractionsClass(null);\n}\nvar Interactions = _instance;\nAmplify.register(Interactions);\nexport default Interactions;\nexport * from './Providers/AWSLexProvider';\nexport { InteractionsClass };\n//# sourceMappingURL=index.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/*\n * Copyright 2017-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, Hub, Credentials, Parser, } from '@aws-amplify/core';\nimport * as S3 from 'aws-sdk/clients/s3';\nvar logger = new Logger('AWSS3Provider');\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\n typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nvar dispatchStorageEvent = function (track, event, attrs, metrics, message) {\n if (track) {\n Hub.dispatch('storage', {\n event: event,\n data: { attrs: attrs, metrics: metrics },\n message: message,\n }, 'Storage', AMPLIFY_SYMBOL);\n }\n};\nvar localTestingStorageEndpoint = 'http://localhost:20005';\n/**\n * Provide storage methods to use AWS S3\n */\nvar AWSS3Provider = /** @class */ (function () {\n /**\n * Initialize Storage with AWS configurations\n * @param {Object} config - Configuration object for storage\n */\n function AWSS3Provider(config) {\n this._config = config ? config : {};\n logger.debug('Storage Options', this._config);\n }\n /**\n * get the category of the plugin\n */\n AWSS3Provider.prototype.getCategory = function () {\n return AWSS3Provider.CATEGORY;\n };\n /**\n * get provider name of the plugin\n */\n AWSS3Provider.prototype.getProviderName = function () {\n return AWSS3Provider.PROVIDER_NAME;\n };\n /**\n * Configure Storage part with aws configuration\n * @param {Object} config - Configuration of the Storage\n * @return {Object} - Current configuration\n */\n AWSS3Provider.prototype.configure = function (config) {\n logger.debug('configure Storage', config);\n if (!config)\n return this._config;\n var amplifyConfig = Parser.parseMobilehubConfig(config);\n this._config = Object.assign({}, this._config, amplifyConfig.Storage);\n if (!this._config.bucket) {\n logger.debug('Do not have bucket yet');\n }\n return this._config;\n };\n /**\n * Get a presigned URL of the file or the object data when download:true\n *\n * @param {String} key - key of the object\n * @param {Object} [config] - { level : private|protected|public, download: true|false }\n * @return - A promise resolves to Amazon S3 presigned URL on success\n */\n AWSS3Provider.prototype.get = function (key, config) {\n return __awaiter(this, void 0, void 0, function () {\n var credentialsOK, opt, bucket, download, track, expires, prefix, final_key, s3, params;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _a.sent();\n if (!credentialsOK) {\n return [2 /*return*/, Promise.reject('No credentials')];\n }\n opt = Object.assign({}, this._config, config);\n bucket = opt.bucket, download = opt.download, track = opt.track, expires = opt.expires;\n prefix = this._prefix(opt);\n final_key = prefix + key;\n s3 = this._createS3(opt);\n logger.debug('get ' + key + ' from ' + final_key);\n params = {\n Bucket: bucket,\n Key: final_key,\n };\n if (download === true) {\n return [2 /*return*/, new Promise(function (res, rej) {\n s3.getObject(params, function (err, data) {\n if (err) {\n dispatchStorageEvent(track, 'download', {\n method: 'get',\n result: 'failed',\n }, null, \"Download failed with \" + err.message);\n rej(err);\n }\n else {\n dispatchStorageEvent(track, 'download', { method: 'get', result: 'success' }, { fileSize: Number(data.Body['length']) }, \"Download success for \" + key);\n res(data);\n }\n });\n })];\n }\n if (expires) {\n params.Expires = expires;\n }\n return [2 /*return*/, new Promise(function (res, rej) {\n try {\n var url = s3.getSignedUrl('getObject', params);\n dispatchStorageEvent(track, 'getSignedUrl', { method: 'get', result: 'success' }, null, \"Signed URL: \" + url);\n res(url);\n }\n catch (e) {\n logger.warn('get signed url error', e);\n dispatchStorageEvent(track, 'getSignedUrl', { method: 'get', result: 'failed' }, null, \"Could not get a signed URL for \" + key);\n rej(e);\n }\n })];\n }\n });\n });\n };\n /**\n * Put a file in S3 bucket specified to configure method\n * @param {String} key - key of the object\n * @param {Object} object - File to be put in Amazon S3 bucket\n * @param {Object} [config] - { level : private|protected|public, contentType: MIME Types,\n * progressCallback: function }\n * @return - promise resolves to object on success\n */\n AWSS3Provider.prototype.put = function (key, object, config) {\n return __awaiter(this, void 0, void 0, function () {\n var credentialsOK, opt, bucket, track, progressCallback, contentType, contentDisposition, cacheControl, expires, metadata, tagging, serverSideEncryption, SSECustomerAlgorithm, SSECustomerKey, SSECustomerKeyMD5, SSEKMSKeyId, type, prefix, final_key, s3, params, upload, data, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _a.sent();\n if (!credentialsOK) {\n return [2 /*return*/, Promise.reject('No credentials')];\n }\n opt = Object.assign({}, this._config, config);\n bucket = opt.bucket, track = opt.track, progressCallback = opt.progressCallback;\n contentType = opt.contentType, contentDisposition = opt.contentDisposition, cacheControl = opt.cacheControl, expires = opt.expires, metadata = opt.metadata, tagging = opt.tagging;\n serverSideEncryption = opt.serverSideEncryption, SSECustomerAlgorithm = opt.SSECustomerAlgorithm, SSECustomerKey = opt.SSECustomerKey, SSECustomerKeyMD5 = opt.SSECustomerKeyMD5, SSEKMSKeyId = opt.SSEKMSKeyId;\n type = contentType ? contentType : 'binary/octet-stream';\n prefix = this._prefix(opt);\n final_key = prefix + key;\n s3 = this._createS3(opt);\n logger.debug('put ' + key + ' to ' + final_key);\n params = {\n Bucket: bucket,\n Key: final_key,\n Body: object,\n ContentType: type,\n };\n if (cacheControl) {\n params.CacheControl = cacheControl;\n }\n if (contentDisposition) {\n params.ContentDisposition = contentDisposition;\n }\n if (expires) {\n params.Expires = expires;\n }\n if (metadata) {\n params.Metadata = metadata;\n }\n if (tagging) {\n params.Tagging = tagging;\n }\n if (serverSideEncryption) {\n params.ServerSideEncryption = serverSideEncryption;\n if (SSECustomerAlgorithm) {\n params.SSECustomerAlgorithm = SSECustomerAlgorithm;\n }\n if (SSECustomerKey) {\n params.SSECustomerKey = SSECustomerKey;\n }\n if (SSECustomerKeyMD5) {\n params.SSECustomerKeyMD5 = SSECustomerKeyMD5;\n }\n if (SSEKMSKeyId) {\n params.SSEKMSKeyId = SSEKMSKeyId;\n }\n }\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n upload = s3.upload(params).on('httpUploadProgress', function (progress) {\n if (progressCallback) {\n if (typeof progressCallback === 'function') {\n progressCallback(progress);\n }\n else {\n logger.warn('progressCallback should be a function, not a ' +\n typeof progressCallback);\n }\n }\n });\n return [4 /*yield*/, upload.promise()];\n case 3:\n data = _a.sent();\n logger.debug('upload result', data);\n dispatchStorageEvent(track, 'upload', { method: 'put', result: 'success' }, null, \"Upload success for \" + key);\n return [2 /*return*/, {\n key: data.Key.substr(prefix.length),\n }];\n case 4:\n e_1 = _a.sent();\n logger.warn('error uploading', e_1);\n dispatchStorageEvent(track, 'upload', { method: 'put', result: 'failed' }, null, \"Error uploading \" + key);\n throw e_1;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Remove the object for specified key\n * @param {String} key - key of the object\n * @param {Object} [config] - { level : private|protected|public }\n * @return - Promise resolves upon successful removal of the object\n */\n AWSS3Provider.prototype.remove = function (key, config) {\n return __awaiter(this, void 0, void 0, function () {\n var credentialsOK, opt, bucket, track, prefix, final_key, s3, params;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _a.sent();\n if (!credentialsOK) {\n return [2 /*return*/, Promise.reject('No credentials')];\n }\n opt = Object.assign({}, this._config, config);\n bucket = opt.bucket, track = opt.track;\n prefix = this._prefix(opt);\n final_key = prefix + key;\n s3 = this._createS3(opt);\n logger.debug('remove ' + key + ' from ' + final_key);\n params = {\n Bucket: bucket,\n Key: final_key,\n };\n return [2 /*return*/, new Promise(function (res, rej) {\n s3.deleteObject(params, function (err, data) {\n if (err) {\n dispatchStorageEvent(track, 'delete', { method: 'remove', result: 'failed' }, null, \"Deletion of \" + key + \" failed with \" + err);\n rej(err);\n }\n else {\n dispatchStorageEvent(track, 'delete', { method: 'remove', result: 'success' }, null, \"Deleted \" + key + \" successfully\");\n res(data);\n }\n });\n })];\n }\n });\n });\n };\n /**\n * List bucket objects relative to the level and prefix specified\n * @param {String} path - the path that contains objects\n * @param {Object} [config] - { level : private|protected|public }\n * @return - Promise resolves to list of keys for all objects in path\n */\n AWSS3Provider.prototype.list = function (path, config) {\n return __awaiter(this, void 0, void 0, function () {\n var credentialsOK, opt, bucket, track, prefix, final_path, s3, params;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _a.sent();\n if (!credentialsOK) {\n return [2 /*return*/, Promise.reject('No credentials')];\n }\n opt = Object.assign({}, this._config, config);\n bucket = opt.bucket, track = opt.track;\n prefix = this._prefix(opt);\n final_path = prefix + path;\n s3 = this._createS3(opt);\n logger.debug('list ' + path + ' from ' + final_path);\n params = {\n Bucket: bucket,\n Prefix: final_path,\n };\n return [2 /*return*/, new Promise(function (res, rej) {\n s3.listObjects(params, function (err, data) {\n if (err) {\n logger.warn('list error', err);\n dispatchStorageEvent(track, 'list', { method: 'list', result: 'failed' }, null, \"Listing items failed: \" + err.message);\n rej(err);\n }\n else {\n var list = data.Contents.map(function (item) {\n return {\n key: item.Key.substr(prefix.length),\n eTag: item.ETag,\n lastModified: item.LastModified,\n size: item.Size,\n };\n });\n dispatchStorageEvent(track, 'list', { method: 'list', result: 'success' }, null, list.length + \" items returned from list operation\");\n logger.debug('list', list);\n res(list);\n }\n });\n })];\n }\n });\n });\n };\n /**\n * @private\n */\n AWSS3Provider.prototype._ensureCredentials = function () {\n var _this = this;\n return Credentials.get()\n .then(function (credentials) {\n if (!credentials)\n return false;\n var cred = Credentials.shear(credentials);\n logger.debug('set credentials for storage', cred);\n _this._config.credentials = cred;\n return true;\n })\n .catch(function (err) {\n logger.warn('ensure credentials error', err);\n return false;\n });\n };\n /**\n * @private\n */\n AWSS3Provider.prototype._prefix = function (config) {\n var credentials = config.credentials, level = config.level;\n var customPrefix = config.customPrefix || {};\n var identityId = config.identityId || credentials.identityId;\n var privatePath = (customPrefix.private !== undefined ? customPrefix.private : 'private/') +\n identityId +\n '/';\n var protectedPath = (customPrefix.protected !== undefined\n ? customPrefix.protected\n : 'protected/') +\n identityId +\n '/';\n var publicPath = customPrefix.public !== undefined ? customPrefix.public : 'public/';\n switch (level) {\n case 'private':\n return privatePath;\n case 'protected':\n return protectedPath;\n default:\n return publicPath;\n }\n };\n /**\n * @private\n */\n AWSS3Provider.prototype._createS3 = function (config) {\n var bucket = config.bucket, region = config.region, credentials = config.credentials, dangerouslyConnectToHttpEndpointForTesting = config.dangerouslyConnectToHttpEndpointForTesting;\n var localTestingConfig = {};\n if (dangerouslyConnectToHttpEndpointForTesting) {\n localTestingConfig = {\n endpoint: localTestingStorageEndpoint,\n s3BucketEndpoint: true,\n s3ForcePathStyle: true,\n };\n }\n return new S3(__assign({ apiVersion: '2006-03-01', params: { Bucket: bucket }, signatureVersion: 'v4', region: region,\n credentials: credentials }, localTestingConfig));\n };\n AWSS3Provider.CATEGORY = 'Storage';\n AWSS3Provider.PROVIDER_NAME = 'AWSS3';\n return AWSS3Provider;\n}());\nexport default AWSS3Provider;\n//# sourceMappingURL=AWSS3Provider.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { ConsoleLogger as Logger, Parser } from '@aws-amplify/core';\nimport AWSS3Provider from './Providers/AWSS3Provider';\nvar logger = new Logger('StorageClass');\nvar DEFAULT_PROVIDER = 'AWSS3';\n/**\n * Provide storage methods to use AWS S3\n */\nvar StorageClass = /** @class */ (function () {\n /**\n * Initialize Storage\n * @param {Object} config - Configuration object for storage\n */\n function StorageClass() {\n this._config = {};\n this._pluggables = [];\n logger.debug('Storage Options', this._config);\n this.get = this.get.bind(this);\n this.put = this.put.bind(this);\n this.remove = this.remove.bind(this);\n this.list = this.list.bind(this);\n }\n StorageClass.prototype.getModuleName = function () {\n return 'Storage';\n };\n /**\n * add plugin into Storage category\n * @param {Object} pluggable - an instance of the plugin\n */\n StorageClass.prototype.addPluggable = function (pluggable) {\n if (pluggable && pluggable.getCategory() === 'Storage') {\n this._pluggables.push(pluggable);\n var config = {};\n config = pluggable.configure(this._config[pluggable.getProviderName()]);\n return config;\n }\n };\n /**\n * Get the plugin object\n * @param providerName - the name of the plugin\n */\n StorageClass.prototype.getPluggable = function (providerName) {\n var pluggable = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === providerName; });\n if (pluggable === undefined) {\n logger.debug('No plugin found with providerName', providerName);\n return null;\n }\n else\n return pluggable;\n };\n /**\n * Remove the plugin object\n * @param providerName - the name of the plugin\n */\n StorageClass.prototype.removePluggable = function (providerName) {\n this._pluggables = this._pluggables.filter(function (pluggable) { return pluggable.getProviderName() !== providerName; });\n return;\n };\n /**\n * Configure Storage\n * @param {Object} config - Configuration object for storage\n * @return {Object} - Current configuration\n */\n StorageClass.prototype.configure = function (config) {\n var _this = this;\n logger.debug('configure Storage');\n if (!config)\n return this._config;\n var amplifyConfig = Parser.parseMobilehubConfig(config);\n var storageKeysFromConfig = Object.keys(amplifyConfig.Storage);\n var storageArrayKeys = [\n 'bucket',\n 'region',\n 'level',\n 'track',\n 'customPrefix',\n 'serverSideEncryption',\n 'SSECustomerAlgorithm',\n 'SSECustomerKey',\n 'SSECustomerKeyMD5',\n 'SSEKMSKeyId',\n ];\n var isInStorageArrayKeys = function (k) {\n return storageArrayKeys.some(function (x) { return x === k; });\n };\n var checkConfigKeysFromArray = function (k) {\n return k.find(function (k) { return isInStorageArrayKeys(k); });\n };\n if (storageKeysFromConfig &&\n checkConfigKeysFromArray(storageKeysFromConfig) &&\n !amplifyConfig.Storage[DEFAULT_PROVIDER]) {\n amplifyConfig.Storage[DEFAULT_PROVIDER] = {};\n }\n Object.entries(amplifyConfig.Storage).map(function (_a) {\n var key = _a[0], value = _a[1];\n if (key && isInStorageArrayKeys(key) && value !== undefined) {\n amplifyConfig.Storage[DEFAULT_PROVIDER][key] = value;\n delete amplifyConfig.Storage[key];\n }\n });\n // only update new values for each provider\n Object.keys(amplifyConfig.Storage).forEach(function (providerName) {\n if (typeof amplifyConfig.Storage[providerName] !== 'string') {\n _this._config[providerName] = __assign(__assign({}, _this._config[providerName]), amplifyConfig.Storage[providerName]);\n }\n });\n this._pluggables.forEach(function (pluggable) {\n pluggable.configure(_this._config[pluggable.getProviderName()]);\n });\n if (this._pluggables.length === 0) {\n this.addPluggable(new AWSS3Provider());\n }\n return this._config;\n };\n /**\n * Get a presigned URL of the file or the object data when download:true\n *\n * @param {String} key - key of the object\n * @param {Object} [config] - { level : private|protected|public, download: true|false }\n * @return - A promise resolves to either a presigned url or the object\n */\n StorageClass.prototype.get = function (key, config) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, provider, prov;\n return __generator(this, function (_b) {\n _a = (config || {}).provider, provider = _a === void 0 ? DEFAULT_PROVIDER : _a;\n prov = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === provider; });\n if (prov === undefined) {\n logger.debug('No plugin found with providerName', provider);\n Promise.reject('No plugin found in Storage for the provider');\n }\n return [2 /*return*/, prov.get(key, config)];\n });\n });\n };\n /**\n * Put a file in storage bucket specified to configure method\n * @param {String} key - key of the object\n * @param {Object} object - File to be put in bucket\n * @param {Object} [config] - { level : private|protected|public, contentType: MIME Types,\n * progressCallback: function }\n * @return - promise resolves to object on success\n */\n StorageClass.prototype.put = function (key, object, config) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, provider, prov;\n return __generator(this, function (_b) {\n _a = (config || {}).provider, provider = _a === void 0 ? DEFAULT_PROVIDER : _a;\n prov = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === provider; });\n if (prov === undefined) {\n logger.debug('No plugin found with providerName', provider);\n Promise.reject('No plugin found in Storage for the provider');\n }\n return [2 /*return*/, prov.put(key, object, config)];\n });\n });\n };\n /**\n * Remove the object for specified key\n * @param {String} key - key of the object\n * @param {Object} [config] - { level : private|protected|public }\n * @return - Promise resolves upon successful removal of the object\n */\n StorageClass.prototype.remove = function (key, config) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, provider, prov;\n return __generator(this, function (_b) {\n _a = (config || {}).provider, provider = _a === void 0 ? DEFAULT_PROVIDER : _a;\n prov = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === provider; });\n if (prov === undefined) {\n logger.debug('No plugin found with providerName', provider);\n Promise.reject('No plugin found in Storage for the provider');\n }\n return [2 /*return*/, prov.remove(key, config)];\n });\n });\n };\n /**\n * List bucket objects relative to the level and prefix specified\n * @param {String} path - the path that contains objects\n * @param {Object} [config] - { level : private|protected|public }\n * @return - Promise resolves to list of keys for all objects in path\n */\n StorageClass.prototype.list = function (path, config) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, provider, prov;\n return __generator(this, function (_b) {\n _a = (config || {}).provider, provider = _a === void 0 ? DEFAULT_PROVIDER : _a;\n prov = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === provider; });\n if (prov === undefined) {\n logger.debug('No plugin found with providerName', provider);\n Promise.reject('No plugin found in Storage for the provider');\n }\n return [2 /*return*/, prov.list(path, config)];\n });\n });\n };\n return StorageClass;\n}());\nexport default StorageClass;\n//# sourceMappingURL=Storage.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};\nimport StorageClass from './Storage';\nimport Amplify, { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('Storage');\nvar _instance = null;\nif (!_instance) {\n logger.debug('Create Storage Instance');\n _instance = new StorageClass();\n _instance.vault = new StorageClass();\n var old_configure_1 = _instance.configure;\n _instance.configure = function (options) {\n logger.debug('storage configure called');\n var vaultConfig = __assign({}, old_configure_1.call(_instance, options));\n // set level private for each provider for the vault\n Object.keys(vaultConfig).forEach(function (providerName) {\n if (typeof vaultConfig[providerName] !== 'string') {\n vaultConfig[providerName] = __assign(__assign({}, vaultConfig[providerName]), { level: 'private' });\n }\n });\n logger.debug('storage vault configure called');\n _instance.vault.configure(vaultConfig);\n };\n}\nvar Storage = _instance;\nAmplify.register(Storage);\nexport default Storage;\nexport { StorageClass };\nexport * from './Providers';\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nfunction crc32(data) {\n return (new Crc32).update(data).digest();\n}\nexports.crc32 = crc32;\nvar Crc32 = /** @class */ (function () {\n function Crc32() {\n this.checksum = 0xffffffff;\n }\n Crc32.prototype.update = function (data) {\n var e_1, _a;\n try {\n for (var data_1 = tslib_1.__values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var byte = data_1_1.value;\n this.checksum = (this.checksum >>> 8) ^ lookupTable[(this.checksum ^ byte) & 0xff];\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return this;\n };\n Crc32.prototype.digest = function () {\n return (this.checksum ^ 0xffffffff) >>> 0;\n };\n return Crc32;\n}());\nexports.Crc32 = Crc32;\nvar lookupTable = Uint32Array.from([\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,\n 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,\n 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,\n 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,\n 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,\n 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,\n 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,\n 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,\n 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,\n 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,\n 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,\n 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,\n 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,\n 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,\n 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,\n 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,\n 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,\n 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,\n 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,\n 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,\n 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,\n 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,\n 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,\n 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,\n 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,\n 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,\n 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D,\n]);\n//# sourceMappingURL=index.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('AbstractXRProvider');\nvar AbstractXRProvider = /** @class */ (function () {\n function AbstractXRProvider(options) {\n if (options === void 0) { options = {}; }\n this._config = options;\n }\n AbstractXRProvider.prototype.configure = function (config) {\n if (config === void 0) { config = {}; }\n this._config = __assign(__assign({}, config), this._config);\n logger.debug(\"configure \" + this.getProviderName(), this._config);\n return this.options;\n };\n AbstractXRProvider.prototype.getCategory = function () {\n return 'XR';\n };\n Object.defineProperty(AbstractXRProvider.prototype, \"options\", {\n get: function () {\n return __assign({}, this._config);\n },\n enumerable: true,\n configurable: true\n });\n return AbstractXRProvider;\n}());\nexport { AbstractXRProvider };\n//# sourceMappingURL=XRProvider.js.map","/*\n * Copyright 2017-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 */\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})();\nvar XRError = /** @class */ (function (_super) {\n __extends(XRError, _super);\n function XRError() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return XRError;\n}(Error));\nexport { XRError };\nvar XRNoSceneConfiguredError = /** @class */ (function (_super) {\n __extends(XRNoSceneConfiguredError, _super);\n function XRNoSceneConfiguredError() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return XRNoSceneConfiguredError;\n}(XRError));\nexport { XRNoSceneConfiguredError };\nvar XRSceneNotFoundError = /** @class */ (function (_super) {\n __extends(XRSceneNotFoundError, _super);\n function XRSceneNotFoundError() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return XRSceneNotFoundError;\n}(XRError));\nexport { XRSceneNotFoundError };\nvar XRSceneNotLoadedError = /** @class */ (function (_super) {\n __extends(XRSceneNotLoadedError, _super);\n function XRSceneNotLoadedError() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return XRSceneNotLoadedError;\n}(XRError));\nexport { XRSceneNotLoadedError };\nvar XRNoDomElement = /** @class */ (function (_super) {\n __extends(XRNoDomElement, _super);\n function XRNoDomElement() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return XRNoDomElement;\n}(XRError));\nexport { XRNoDomElement };\nvar XRSceneLoadFailure = /** @class */ (function (_super) {\n __extends(XRSceneLoadFailure, _super);\n function XRSceneLoadFailure() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return XRSceneLoadFailure;\n}(XRError));\nexport { XRSceneLoadFailure };\nvar XRProviderNotConfigured = /** @class */ (function (_super) {\n __extends(XRProviderNotConfigured, _super);\n function XRProviderNotConfigured() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return XRProviderNotConfigured;\n}(XRError));\nexport { XRProviderNotConfigured };\n//# sourceMappingURL=Errors.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/*\n * Copyright 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, Signer, Credentials, Constants, } from '@aws-amplify/core';\nimport { AbstractXRProvider } from './XRProvider';\nimport { XRNoSceneConfiguredError, XRSceneNotFoundError, XRSceneNotLoadedError, XRNoDomElement, XRSceneLoadFailure, } from '../Errors';\nvar SUMERIAN_SERVICE_NAME = 'sumerian';\nvar logger = new Logger('SumerianProvider');\nvar SumerianProvider = /** @class */ (function (_super) {\n __extends(SumerianProvider, _super);\n function SumerianProvider(options) {\n if (options === void 0) { options = {}; }\n return _super.call(this, options) || this;\n }\n SumerianProvider.prototype.getProviderName = function () {\n return 'SumerianProvider';\n };\n SumerianProvider.prototype.loadScript = function (url) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n var scriptElement = document.createElement('script');\n scriptElement.src = url;\n scriptElement.addEventListener('load', function (event) {\n resolve();\n });\n scriptElement.addEventListener('error', function (event) {\n reject(new Error(\"Failed to load script: \" + url));\n });\n document.head.appendChild(scriptElement);\n })];\n });\n });\n };\n SumerianProvider.prototype.loadScene = function (sceneName, domElementId, sceneOptions) {\n return __awaiter(this, void 0, void 0, function () {\n var errorMsg, errorMsg, element, errorMsg, scene, errorMsg, sceneUrl, sceneId, sceneRegion, errorMsg, awsSDKConfigOverride, fetchOptions, url, credentials, accessInfo, serviceInfo, request, e_1, apiResponse, apiResponseJson, sceneBundleData, sceneBundle, sceneBundleJson, error_1, progressCallback, publishParamOverrides, sceneLoadParams, sceneController, _i, _a, warning;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!sceneName) {\n errorMsg = 'No scene name passed into loadScene';\n logger.error(errorMsg);\n throw new XRSceneLoadFailure(errorMsg);\n }\n if (!domElementId) {\n errorMsg = 'No dom element id passed into loadScene';\n logger.error(errorMsg);\n throw new XRNoDomElement(errorMsg);\n }\n element = document.getElementById(domElementId);\n if (!element) {\n errorMsg = \"DOM element id, \" + domElementId + \" not found\";\n logger.error(errorMsg);\n throw new XRNoDomElement(errorMsg);\n }\n scene = this.getScene(sceneName);\n if (!scene.sceneConfig) {\n errorMsg = \"No scene config configured for scene: \" + sceneName;\n logger.error(errorMsg);\n throw new XRSceneLoadFailure(errorMsg);\n }\n sceneUrl = scene.sceneConfig.url;\n sceneId = scene.sceneConfig.sceneId;\n if (scene.sceneConfig.hasOwnProperty('region')) {\n // Use the scene region on the Sumerian scene configuration\n sceneRegion = scene.sceneConfig.region;\n }\n else if (this.options.hasOwnProperty('region')) {\n // Use the scene region on the XR category configuration\n sceneRegion = this.options.region;\n }\n else {\n errorMsg = \"No region configured for scene: \" + sceneName;\n logger.error(errorMsg);\n throw new XRSceneLoadFailure(errorMsg);\n }\n awsSDKConfigOverride = {\n region: sceneRegion,\n // This is passed to the AWS clients created in\n // Sumerian's AwsSystem\n // This helps other services(like Lex and Polly) to track\n // traffic coming from Sumerian scenes embedded with Amplify\n customUserAgent: Constants.userAgent + \"-SumerianScene\",\n };\n fetchOptions = {\n headers: {\n // This sets the AWS user agent string\n // So the Sumerian service knows this request is\n // from Amplify\n 'X-Amz-User-Agent': Constants.userAgent,\n },\n };\n url = sceneUrl;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Credentials.get()];\n case 2:\n credentials = _b.sent();\n awsSDKConfigOverride['credentials'] = credentials;\n accessInfo = {\n secret_key: credentials.secretAccessKey,\n access_key: credentials.accessKeyId,\n session_token: credentials.sessionToken,\n };\n serviceInfo = {\n region: sceneRegion,\n service: SUMERIAN_SERVICE_NAME,\n };\n request = Signer.sign({ method: 'GET', url: sceneUrl }, accessInfo, serviceInfo);\n fetchOptions.headers = __assign(__assign({}, fetchOptions.headers), request.headers);\n url = request.url;\n return [3 /*break*/, 4];\n case 3:\n e_1 = _b.sent();\n logger.debug('No credentials available, the request will be unsigned');\n return [3 /*break*/, 4];\n case 4: return [4 /*yield*/, fetch(url, fetchOptions)];\n case 5:\n apiResponse = _b.sent();\n return [4 /*yield*/, apiResponse.json()];\n case 6:\n apiResponseJson = _b.sent();\n if (apiResponse.status === 403) {\n if (apiResponseJson.message) {\n logger.error(\"Failure to authenticate user: \" + apiResponseJson.message);\n throw new XRSceneLoadFailure(\"Failure to authenticate user: \" + apiResponseJson.message);\n }\n else {\n logger.error(\"Failure to authenticate user\");\n throw new XRSceneLoadFailure(\"Failure to authenticate user\");\n }\n }\n sceneBundleData = apiResponseJson.bundleData[sceneId];\n return [4 /*yield*/, fetch(sceneBundleData.url, {\n headers: sceneBundleData.headers,\n })];\n case 7:\n sceneBundle = _b.sent();\n return [4 /*yield*/, sceneBundle.json()];\n case 8:\n sceneBundleJson = _b.sent();\n _b.label = 9;\n case 9:\n _b.trys.push([9, 11, , 12]);\n // Load the Sumerian bootstrapper script into the DOM\n return [4 /*yield*/, this.loadScript(sceneBundleJson[sceneId].bootstrapperUrl)];\n case 10:\n // Load the Sumerian bootstrapper script into the DOM\n _b.sent();\n return [3 /*break*/, 12];\n case 11:\n error_1 = _b.sent();\n logger.error(error_1);\n throw new XRSceneLoadFailure(error_1);\n case 12:\n progressCallback = sceneOptions.progressCallback\n ? sceneOptions.progressCallback\n : undefined;\n publishParamOverrides = scene.publishParamOverrides\n ? scene.publishParamOverrides\n : undefined;\n sceneLoadParams = {\n element: element,\n sceneId: sceneId,\n sceneBundle: sceneBundleJson,\n apiResponse: apiResponseJson,\n progressCallback: progressCallback,\n publishParamOverrides: publishParamOverrides,\n awsSDKConfigOverride: awsSDKConfigOverride,\n };\n return [4 /*yield*/, window.SumerianBootstrapper.loadScene(sceneLoadParams)];\n case 13:\n sceneController = _b.sent();\n scene.sceneController = sceneController;\n scene.isLoaded = true;\n // Log scene warnings\n for (_i = 0, _a = sceneController.sceneLoadWarnings; _i < _a.length; _i++) {\n warning = _a[_i];\n logger.warn(\"loadScene warning: \" + warning);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n SumerianProvider.prototype.isSceneLoaded = function (sceneName) {\n var scene = this.getScene(sceneName);\n return scene.isLoaded || false;\n };\n SumerianProvider.prototype.getScene = function (sceneName) {\n if (!this.options.scenes) {\n var errorMsg = 'No scenes were defined in the configuration';\n logger.error(errorMsg);\n throw new XRNoSceneConfiguredError(errorMsg);\n }\n if (!sceneName) {\n var errorMsg = 'No scene name was passed';\n logger.error(errorMsg);\n throw new XRSceneNotFoundError(errorMsg);\n }\n if (!this.options.scenes[sceneName]) {\n var errorMsg = \"Scene '\" + sceneName + \"' is not configured\";\n logger.error(errorMsg);\n throw new XRSceneNotFoundError(errorMsg);\n }\n return this.options.scenes[sceneName];\n };\n SumerianProvider.prototype.getSceneController = function (sceneName) {\n if (!this.options.scenes) {\n var errorMsg = 'No scenes were defined in the configuration';\n logger.error(errorMsg);\n throw new XRNoSceneConfiguredError(errorMsg);\n }\n var scene = this.options.scenes[sceneName];\n if (!scene) {\n var errorMsg = \"Scene '\" + sceneName + \"' is not configured\";\n logger.error(errorMsg);\n throw new XRSceneNotFoundError(errorMsg);\n }\n var sceneController = scene.sceneController;\n if (!sceneController) {\n var errorMsg = \"Scene controller for '\" + sceneName + \"' has not been loaded\";\n logger.error(errorMsg);\n throw new XRSceneNotLoadedError(errorMsg);\n }\n return sceneController;\n };\n SumerianProvider.prototype.isVRCapable = function (sceneName) {\n var sceneController = this.getSceneController(sceneName);\n return sceneController.vrCapable;\n };\n SumerianProvider.prototype.isVRPresentationActive = function (sceneName) {\n var sceneController = this.getSceneController(sceneName);\n return sceneController.vrPresentationActive;\n };\n SumerianProvider.prototype.start = function (sceneName) {\n var sceneController = this.getSceneController(sceneName);\n sceneController.start();\n };\n SumerianProvider.prototype.enterVR = function (sceneName) {\n var sceneController = this.getSceneController(sceneName);\n sceneController.enterVR();\n };\n SumerianProvider.prototype.exitVR = function (sceneName) {\n var sceneController = this.getSceneController(sceneName);\n sceneController.exitVR();\n };\n SumerianProvider.prototype.isMuted = function (sceneName) {\n var sceneController = this.getSceneController(sceneName);\n return sceneController.muted;\n };\n SumerianProvider.prototype.setMuted = function (sceneName, muted) {\n var sceneController = this.getSceneController(sceneName);\n sceneController.muted = muted;\n };\n SumerianProvider.prototype.onSceneEvent = function (sceneName, eventName, eventHandler) {\n var sceneController = this.getSceneController(sceneName);\n sceneController.on(eventName, eventHandler);\n };\n SumerianProvider.prototype.enableAudio = function (sceneName) {\n var sceneController = this.getSceneController(sceneName);\n sceneController.enableAudio();\n };\n return SumerianProvider;\n}(AbstractXRProvider));\nexport { SumerianProvider };\n//# sourceMappingURL=SumerianProvider.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 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 '@aws-amplify/core';\nimport { SumerianProvider } from './Providers/SumerianProvider';\nimport { XRProviderNotConfigured } from './Errors';\nvar logger = new Logger('XR');\nvar DEFAULT_PROVIDER_NAME = 'SumerianProvider';\nvar XR = /** @class */ (function () {\n /**\n * Initialize XR with AWS configurations\n *\n * @param {XROptions} options - Configuration object for XR\n */\n function XR(options) {\n this._options = options;\n logger.debug('XR Options', this._options);\n this._defaultProvider = DEFAULT_PROVIDER_NAME;\n this._pluggables = {};\n // Add default provider\n this.addPluggable(new SumerianProvider());\n }\n /**\n * Configure XR part with configurations\n *\n * @param {XROptions} config - Configuration for XR\n * @return {Object} - The current configuration\n */\n XR.prototype.configure = function (options) {\n var _this = this;\n var opt = options ? options.XR || options : {};\n logger.debug('configure XR', { opt: opt });\n this._options = Object.assign({}, this._options, opt);\n Object.entries(this._pluggables).map(function (_a) {\n var name = _a[0], provider = _a[1];\n if (name === _this._defaultProvider && !opt[_this._defaultProvider]) {\n provider.configure(_this._options);\n }\n else {\n provider.configure(_this._options[name]);\n }\n });\n return this._options;\n };\n /**\n * add plugin into XR category\n * @param {Object} pluggable - an instance of the plugin\n */\n XR.prototype.addPluggable = function (pluggable) {\n return __awaiter(this, void 0, void 0, function () {\n var config;\n return __generator(this, function (_a) {\n if (pluggable && pluggable.getCategory() === 'XR') {\n this._pluggables[pluggable.getProviderName()] = pluggable;\n config = pluggable.configure(this._options);\n return [2 /*return*/, config];\n }\n return [2 /*return*/];\n });\n });\n };\n XR.prototype.loadScene = function (sceneName, domElementId, sceneOptions, provider) {\n if (sceneOptions === void 0) { sceneOptions = {}; }\n if (provider === void 0) { provider = this._defaultProvider; }\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._pluggables[provider])\n throw new XRProviderNotConfigured(\"Provider '\" + provider + \"' not configured\");\n return [4 /*yield*/, this._pluggables[provider].loadScene(sceneName, domElementId, sceneOptions)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n XR.prototype.isSceneLoaded = function (sceneName, provider) {\n if (provider === void 0) { provider = this._defaultProvider; }\n if (!this._pluggables[provider])\n throw new XRProviderNotConfigured(\"Provider '\" + provider + \"' not configured\");\n return this._pluggables[provider].isSceneLoaded(sceneName);\n };\n XR.prototype.getSceneController = function (sceneName, provider) {\n if (provider === void 0) { provider = this._defaultProvider; }\n if (!this._pluggables[provider])\n throw new XRProviderNotConfigured(\"Provider '\" + provider + \"' not configured\");\n return this._pluggables[provider].getSceneController(sceneName);\n };\n XR.prototype.isVRCapable = function (sceneName, provider) {\n if (provider === void 0) { provider = this._defaultProvider; }\n if (!this._pluggables[provider])\n throw new XRProviderNotConfigured(\"Provider '\" + provider + \"' not configured\");\n return this._pluggables[provider].isVRCapable(sceneName);\n };\n XR.prototype.isVRPresentationActive = function (sceneName, provider) {\n if (provider === void 0) { provider = this._defaultProvider; }\n if (!this._pluggables[provider])\n throw new XRProviderNotConfigured(\"Provider '\" + provider + \"' not configured\");\n return this._pluggables[provider].isVRPresentationActive(sceneName);\n };\n XR.prototype.start = function (sceneName, provider) {\n if (provider === void 0) { provider = this._defaultProvider; }\n if (!this._pluggables[provider])\n throw new XRProviderNotConfigured(\"Provider '\" + provider + \"' not configured\");\n return this._pluggables[provider].start(sceneName);\n };\n XR.prototype.enterVR = function (sceneName, provider) {\n if (provider === void 0) { provider = this._defaultProvider; }\n if (!this._pluggables[provider])\n throw new XRProviderNotConfigured(\"Provider '\" + provider + \"' not configured\");\n return this._pluggables[provider].enterVR(sceneName);\n };\n XR.prototype.exitVR = function (sceneName, provider) {\n if (provider === void 0) { provider = this._defaultProvider; }\n if (!this._pluggables[provider])\n throw new XRProviderNotConfigured(\"Provider '\" + provider + \"' not configured\");\n return this._pluggables[provider].exitVR(sceneName);\n };\n XR.prototype.isMuted = function (sceneName, provider) {\n if (provider === void 0) { provider = this._defaultProvider; }\n if (!this._pluggables[provider])\n throw new XRProviderNotConfigured(\"Provider '\" + provider + \"' not configured\");\n return this._pluggables[provider].isMuted(sceneName);\n };\n XR.prototype.setMuted = function (sceneName, muted, provider) {\n if (provider === void 0) { provider = this._defaultProvider; }\n if (!this._pluggables[provider])\n throw new XRProviderNotConfigured(\"Provider '\" + provider + \"' not configured\");\n return this._pluggables[provider].setMuted(sceneName, muted);\n };\n XR.prototype.onSceneEvent = function (sceneName, eventName, eventHandler, provider) {\n if (provider === void 0) { provider = this._defaultProvider; }\n if (!this._pluggables[provider])\n throw new XRProviderNotConfigured(\"Provider '\" + provider + \"' not configured\");\n return this._pluggables[provider].onSceneEvent(sceneName, eventName, eventHandler);\n };\n XR.prototype.enableAudio = function (sceneName, provider) {\n if (provider === void 0) { provider = this._defaultProvider; }\n if (!this._pluggables[provider])\n throw new XRProviderNotConfigured(\"Provider '\" + provider + \"' not configured\");\n return this._pluggables[provider].enableAudio(sceneName);\n };\n return XR;\n}());\nexport default XR;\n//# sourceMappingURL=XR.js.map","/*\n * Copyright 2017-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 XRClass from './XR';\nimport Amplify, { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('XR');\nvar _instance = null;\nif (!_instance) {\n logger.debug('Create XR Instance');\n _instance = new XRClass(null);\n}\nvar XR = _instance;\nAmplify.register(XR);\nexport default XR;\nexport * from './Providers/SumerianProvider';\nexport { XRClass };\nexport * from './Errors';\n//# sourceMappingURL=index.js.map","!function(t,_){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=_():\"function\"==typeof define&&define.amd?define(\"aws_amplify_ui\",[],_):\"object\"==typeof exports?exports.aws_amplify_ui=_():t.aws_amplify_ui=_()}(this,(function(){return function(t){var _={};function n(o){if(_[o])return _[o].exports;var e=_[o]={i:o,l:!1,exports:{}};return t[o].call(e.exports,e,e.exports,n),e.l=!0,e.exports}return n.m=t,n.c=_,n.d=function(t,_,o){n.o(t,_)||Object.defineProperty(t,_,{enumerable:!0,get:o})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,_){if(1&_&&(t=n(t)),8&_)return t;if(4&_&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&_&&\"string\"!=typeof t)for(var e in t)n.d(o,e,function(_){return t[_]}.bind(null,e));return o},n.n=function(t){var _=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(_,\"a\",_),_},n.o=function(t,_){return Object.prototype.hasOwnProperty.call(t,_)},n.p=\"\",n(n.s=0)}([function(t,_,n){\"use strict\";function o(t){for(var n in t)_.hasOwnProperty(n)||(_[n]=t[n])}Object.defineProperty(_,\"__esModule\",{value:!0}),o(n(1)),o(n(2)),o(n(3)),o(n(4)),o(n(5)),o(n(6)),o(n(7)),o(n(8)),o(n(9)),o(n(10)),o(n(11)),o(n(12)),o(n(13))},function(t,_,n){t.exports={a:\"Anchor__a___1_Iz8\"}},function(t,_,n){t.exports={button:\"Button__button___vS7Mv\",signInButton:\"Button__signInButton___3bUH-\",googleSignInButton:\"Button__googleSignInButton___1YiCu\",signInButtonIcon:\"Button__signInButtonIcon___ihN75\",auth0SignInButton:\"Button__auth0SignInButton___znnCj\",facebookSignInButton:\"Button__facebookSignInButton___34Txh\",amazonSignInButton:\"Button__amazonSignInButton___2EMtl\",oAuthSignInButton:\"Button__oAuthSignInButton___3UGOl\",signInButtonContent:\"Button__signInButtonContent___xqTXJ\"}},function(t,_,n){t.exports={formContainer:\"Form__formContainer___1GA3x\",formSection:\"Form__formSection___1PPvW\",formField:\"Form__formField___38Ikl\",formRow:\"Form__formRow___2mwRs\"}},function(t,_,n){t.exports={hint:\"Hint__hint___2XngB\"}},function(t,_,n){t.exports={input:\"Input__input___3e_bf\",inputLabel:\"Input__inputLabel___3VF0S\",label:\"Input__label___23sO8\",radio:\"Input__radio___2hllK\"}},function(t,_,n){t.exports={navBar:\"Nav__navBar___xtCFA\",navRight:\"Nav__navRight___1QG2J\",nav:\"Nav__nav___2Dx2Y\",navItem:\"Nav__navItem___1LtFQ\"}},function(t,_,n){t.exports={photoPickerButton:\"PhotoPicker__photoPickerButton___2XdVn\",photoPlaceholder:\"PhotoPicker__photoPlaceholder___2JXO4\",photoPlaceholderIcon:\"PhotoPicker__photoPlaceholderIcon___3Et71\"}},function(t,_,n){t.exports={container:\"Section__container___3YYTG\",actionRow:\"Section__actionRow___2LWSU\",sectionHeader:\"Section__sectionHeader___2djyg\",sectionHeaderHint:\"Section__sectionHeaderHint___3Wxdc\",sectionBody:\"Section__sectionBody___ihqqd\",sectionHeaderContent:\"Section__sectionHeaderContent___1UCqa\",sectionFooter:\"Section__sectionFooter___1T54C\",sectionFooterPrimaryContent:\"Section__sectionFooterPrimaryContent___2r9ZX\",sectionFooterSecondaryContent:\"Section__sectionFooterSecondaryContent___Nj41Q\"}},function(t,_,n){t.exports={selectInput:\"SelectInput__selectInput___3efO4\"}},function(t,_,n){t.exports={strike:\"Strike__strike___1XV1b\",strikeContent:\"Strike__strikeContent___10gLb\"}},function(t,_,n){t.exports={toast:\"Toast__toast___XXr3v\",toastClose:\"Toast__toastClose___18lU4\"}},function(t,_,n){t.exports={totpQrcode:\"Totp__totpQrcode___1crLx\"}},function(t,_,n){t.exports={sumerianSceneContainer:\"XR__sumerianSceneContainer___3nVMt\",sumerianScene:\"XR__sumerianScene___2Tt7-\",loadingOverlay:\"XR__loadingOverlay___IbqcI\",loadingContainer:\"XR__loadingContainer___2Itxb\",loadingLogo:\"XR__loadingLogo___Ub7xQ\",loadingSceneName:\"XR__loadingSceneName___3__ne\",loadingBar:\"XR__loadingBar___2vcke\",loadingBarFill:\"XR__loadingBarFill___3M-D9\",sceneErrorText:\"XR__sceneErrorText___2y0tp\",sceneBar:\"XR__sceneBar___2ShrP\",sceneName:\"XR__sceneName___1ApHr\",sceneActions:\"XR__sceneActions___7plGs\",actionButton:\"XR__actionButton___2poIM\",tooltip:\"XR__tooltip___UYyhn\",actionIcon:\"XR__actionIcon___2qnd2\",autoShowTooltip:\"XR__autoShowTooltip___V1QH7\"}}])}));\n//# sourceMappingURL=aws-amplify-ui.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 __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 '@aws-amplify/core';\nvar logger = new Logger('Predictions');\nvar Predictions = /** @class */ (function () {\n /**\n * Initialize Predictions with AWS configurations\n * @param {PredictionsOptions} options - Configuration object for Predictions\n */\n function Predictions(options) {\n this._options = options;\n this._convertPluggables = [];\n this._identifyPluggables = [];\n this._interpretPluggables = [];\n }\n Predictions.prototype.getModuleName = function () {\n return 'Predictions';\n };\n /**\n * add plugin/pluggable into Predictions category\n * @param {Object} pluggable - an instance of the plugin/pluggable\n **/\n Predictions.prototype.addPluggable = function (pluggable) {\n if (this.getPluggable(pluggable.getProviderName())) {\n throw new Error(\"Pluggable with name \" + pluggable.getProviderName() + \" has already been added.\");\n }\n var pluggableAdded = false;\n if (this.implementsConvertPluggable(pluggable)) {\n this._convertPluggables.push(pluggable);\n pluggableAdded = true;\n }\n if (this.implementsIdentifyPluggable(pluggable)) {\n this._identifyPluggables.push(pluggable);\n pluggableAdded = true;\n }\n if (this.implementsInterpretPluggable(pluggable)) {\n this._interpretPluggables.push(pluggable);\n pluggableAdded = true;\n }\n if (pluggableAdded) {\n this.configurePluggable(pluggable);\n }\n };\n /**\n * Get the plugin object\n * @param providerName - the name of the plugin\n */\n Predictions.prototype.getPluggable = function (providerName) {\n var pluggable = this.getAllProviders().find(function (pluggable) { return pluggable.getProviderName() === providerName; });\n if (pluggable === undefined) {\n logger.debug('No plugin found with providerName=>', providerName);\n return null;\n }\n else\n return pluggable;\n };\n /**\n * Remove the plugin object\n * @param providerName - the name of the plugin\n */\n Predictions.prototype.removePluggable = function (providerName) {\n this._convertPluggables = this._convertPluggables.filter(function (pluggable) { return pluggable.getProviderName() !== providerName; });\n this._identifyPluggables = this._identifyPluggables.filter(function (pluggable) { return pluggable.getProviderName() !== providerName; });\n this._interpretPluggables = this._interpretPluggables.filter(function (pluggable) { return pluggable.getProviderName() !== providerName; });\n return;\n };\n /**\n * To make both top level providers and category level providers work with same interface and configuration\n * this method duplicates Predictions config into parent level config (for top level provider) and\n * category level config (such as convert, identify etc) and pass both to each provider.\n */\n Predictions.prototype.configure = function (options) {\n var _this = this;\n var predictionsConfig = options ? options.predictions || options : {};\n predictionsConfig = __assign(__assign({}, predictionsConfig), options);\n this._options = Object.assign({}, this._options, predictionsConfig);\n logger.debug('configure Predictions', this._options);\n this.getAllProviders().forEach(function (pluggable) {\n return _this.configurePluggable(pluggable);\n });\n };\n Predictions.prototype.interpret = function (input, options) {\n var pluggableToExecute = this.getPluggableToExecute(this._interpretPluggables, options);\n return pluggableToExecute.interpret(input);\n };\n Predictions.prototype.convert = function (input, options) {\n var pluggableToExecute = this.getPluggableToExecute(this._convertPluggables, options);\n return pluggableToExecute.convert(input);\n };\n Predictions.prototype.identify = function (input, options) {\n var pluggableToExecute = this.getPluggableToExecute(this._identifyPluggables, options);\n return pluggableToExecute.identify(input);\n };\n // tslint:disable-next-line: max-line-length\n Predictions.prototype.getPluggableToExecute = function (pluggables, providerOptions) {\n // Give preference to provider name first since it is more specific to this call, even if\n // there is only one provider configured to error out if the name provided is not the one matched.\n if (providerOptions && providerOptions.providerName) {\n return __spreadArrays(pluggables).find(function (pluggable) {\n return pluggable.getProviderName() === providerOptions.providerName;\n });\n }\n else {\n if (pluggables.length === 1) {\n return pluggables[0];\n }\n else {\n throw new Error('More than one or no providers are configured, ' +\n 'Either specify a provider name or configure exactly one provider');\n }\n }\n };\n Predictions.prototype.getAllProviders = function () {\n return __spreadArrays(this._convertPluggables, this._identifyPluggables, this._interpretPluggables);\n };\n Predictions.prototype.configurePluggable = function (pluggable) {\n var categoryConfig = Object.assign({}, this._options['predictions'], // Parent predictions config for the top level provider\n this._options[pluggable.getCategory().toLowerCase()] // Actual category level config\n );\n pluggable.configure(categoryConfig);\n };\n Predictions.prototype.implementsConvertPluggable = function (obj) {\n return obj && typeof obj.convert === 'function';\n };\n Predictions.prototype.implementsIdentifyPluggable = function (obj) {\n return obj && typeof obj.identify === 'function';\n };\n Predictions.prototype.implementsInterpretPluggable = function (obj) {\n return obj && typeof obj.interpret === 'function';\n };\n return Predictions;\n}());\nexport default Predictions;\n//# sourceMappingURL=Predictions.js.map","/**\n * Changes object keys to camel case. If optional parameter `keys` is given, then we extract only the\n * keys specified in `keys`.\n */\nexport function makeCamelCase(obj, keys) {\n if (!obj)\n return undefined;\n var newObj = {};\n var keysToRename = keys ? keys : Object.keys(obj);\n keysToRename.forEach(function (key) {\n var _a;\n if (obj.hasOwnProperty(key)) {\n // change the key to camelcase.\n var camelCaseKey = key.charAt(0).toLowerCase() + key.substr(1);\n Object.assign(newObj, (_a = {}, _a[camelCaseKey] = obj[key], _a));\n }\n });\n return newObj;\n}\n/**\n * Given an array of object, call makeCamelCase(...) on each option.\n */\nexport function makeCamelCaseArray(objArr, keys) {\n if (!objArr)\n return undefined;\n return objArr.map(function (obj) { return makeCamelCase(obj, keys); });\n}\n/**\n * Converts blob to array buffer\n */\nexport function blobToArrayBuffer(blob) {\n return new Promise(function (res, rej) {\n var reader = new FileReader();\n reader.onload = function (_event) {\n res(reader.result);\n };\n reader.onerror = function (err) {\n rej(err);\n };\n try {\n reader.readAsArrayBuffer(blob);\n }\n catch (err) {\n rej(err); // in case user gives invalid type\n }\n });\n}\n//# sourceMappingURL=Utils.js.map","import { makeCamelCaseArray, makeCamelCase } from './Utils';\nfunction getBoundingBox(geometry) {\n if (!geometry)\n return undefined;\n return makeCamelCase(geometry.BoundingBox);\n}\nfunction getPolygon(geometry) {\n if (!geometry)\n return undefined;\n return makeCamelCaseArray(geometry.Polygon);\n}\n/**\n * Organizes blocks from Rekognition API to each of the categories and and structures\n * their data accordingly.\n * @param {Textract.BlockList} source - Array containing blocks returned from Textract API.\n * @return {IdentifyTextOutput} - Object that categorizes each block and its information.\n */\nexport function categorizeRekognitionBlocks(blocks) {\n // Skeleton IdentifyText API response. We will populate it as we iterate through blocks.\n var response = {\n text: {\n fullText: '',\n words: [],\n lines: [],\n linesDetailed: [],\n },\n };\n // We categorize each block by running a forEach loop through them.\n blocks.forEach(function (block) {\n switch (block.Type) {\n case 'LINE':\n response.text.lines.push(block.DetectedText);\n response.text.linesDetailed.push({\n text: block.DetectedText,\n polygon: getPolygon(block.Geometry),\n boundingBox: getBoundingBox(block.Geometry),\n page: null,\n });\n break;\n case 'WORD':\n response.text.fullText += block.DetectedText + ' ';\n response.text.words.push({\n text: block.DetectedText,\n polygon: getPolygon(block.Geometry),\n boundingBox: getBoundingBox(block.Geometry),\n });\n break;\n }\n });\n // remove trailing space of fullText\n response.text.fullText = response.text.fullText.substr(0, response.text.fullText.length - 1);\n return response;\n}\n/**\n * Organizes blocks from Textract API to each of the categories and and structures\n * their data accordingly.\n * @param {Textract.BlockList} source - Array containing blocks returned from Textract API.\n * @return {IdentifyTextOutput} - Object that categorizes each block and its information.\n */\nexport function categorizeTextractBlocks(blocks) {\n // Skeleton IdentifyText API response. We will populate it as we iterate through blocks.\n var response = {\n text: {\n fullText: '',\n words: [],\n lines: [],\n linesDetailed: [],\n },\n };\n // if blocks is an empty array, ie. textract did not detect anything, return empty response.\n if (blocks.length === 0)\n return response;\n /**\n * We categorize each of the blocks by running a forEach loop through them.\n *\n * For complex structures such as Tables and KeyValue, we need to trasverse through their children. To do so,\n * we will post-process them after the for each loop. We do this by storing table and keyvalues in arrays and\n * mapping other blocks in `blockMap` (id to block) so we can reference them easily later.\n *\n * Note that we do not map `WORD` and `TABLE` in `blockMap` because they will not be referenced by any other\n * block except the Page block.\n */\n var tableBlocks = Array();\n var keyValueBlocks = Array();\n var blockMap = {};\n blocks.forEach(function (block) {\n switch (block.BlockType) {\n case 'LINE':\n response.text.lines.push(block.Text);\n response.text.linesDetailed.push({\n text: block.Text,\n polygon: getPolygon(block.Geometry),\n boundingBox: getBoundingBox(block.Geometry),\n page: block.Page,\n });\n break;\n case 'WORD':\n response.text.fullText += block.Text + ' ';\n response.text.words.push({\n text: block.Text,\n polygon: getPolygon(block.Geometry),\n boundingBox: getBoundingBox(block.Geometry),\n });\n blockMap[block.Id] = block;\n break;\n case 'SELECTION_ELEMENT':\n var selectionStatus = block.SelectionStatus === 'SELECTED' ? true : false;\n if (!response.text.selections)\n response.text.selections = [];\n response.text.selections.push({\n selected: selectionStatus,\n polygon: getPolygon(block.Geometry),\n boundingBox: getBoundingBox(block.Geometry),\n });\n blockMap[block.Id] = block;\n break;\n case 'TABLE':\n tableBlocks.push(block);\n break;\n case 'KEY_VALUE_SET':\n keyValueBlocks.push(block);\n blockMap[block.Id] = block;\n break;\n default:\n blockMap[block.Id] = block;\n }\n });\n // remove trailing space in fullText\n response.text.fullText = response.text.fullText.substr(0, response.text.fullText.length - 1);\n // Post-process complex structures if they exist.\n if (tableBlocks.length !== 0) {\n var tableResponse_1 = Array();\n tableBlocks.forEach(function (table) {\n tableResponse_1.push(constructTable(table, blockMap));\n });\n response.text.tables = tableResponse_1;\n }\n if (keyValueBlocks.length !== 0) {\n var keyValueResponse_1 = Array();\n keyValueBlocks.forEach(function (keyValue) {\n // We need the KeyValue blocks of EntityType = `KEY`, which has both key and value references.\n if (keyValue.EntityTypes.indexOf('KEY') !== -1) {\n keyValueResponse_1.push(constructKeyValue(keyValue, blockMap));\n }\n });\n response.text.keyValues = keyValueResponse_1;\n }\n return response;\n}\n/**\n * Constructs a table object using data from its children cells.\n * @param {Textract.Block} table - Table block that has references (`Relationships`) to its cells\n * @param {[id: string]: Textract.Block} blockMap - Maps block Ids to blocks.\n */\nexport function constructTable(table, blockMap) {\n var tableMatrix;\n tableMatrix = [];\n // visit each of the cell associated with the table's relationship.\n table.Relationships.forEach(function (tableRelation) {\n tableRelation.Ids.forEach(function (cellId) {\n var cellBlock = blockMap[cellId];\n var row = cellBlock.RowIndex - 1; // textract starts indexing at 1, so subtract it by 1.\n var col = cellBlock.ColumnIndex - 1; // textract starts indexing at 1, so subtract it by 1.\n // extract data contained inside the cell.\n var content = extractContentsFromBlock(cellBlock, blockMap);\n var cell = {\n text: content.text,\n boundingBox: getBoundingBox(cellBlock.Geometry),\n polygon: getPolygon(cellBlock.Geometry),\n selected: content.selected,\n rowSpan: cellBlock.RowSpan,\n columnSpan: cellBlock.ColumnSpan,\n };\n if (!tableMatrix[row])\n tableMatrix[row] = [];\n tableMatrix[row][col] = cell;\n });\n });\n var rowSize = tableMatrix.length;\n var columnSize = tableMatrix[0].length;\n // Note that we leave spanned cells undefined for distinction\n return {\n size: { rows: rowSize, columns: columnSize },\n table: tableMatrix,\n boundingBox: getBoundingBox(table.Geometry),\n polygon: getPolygon(table.Geometry),\n };\n}\n/**\n * Constructs a key value object from its children key and value blocks.\n * @param {Textract.Block} KeyValue - KeyValue block that has references (`Relationships`) to its children.\n * @param {[id: string]: Textract.Block} blockMap - Maps block Ids to blocks.\n */\nexport function constructKeyValue(keyBlock, blockMap) {\n var keyText = '';\n var valueText = '';\n var valueSelected;\n keyBlock.Relationships.forEach(function (keyValueRelation) {\n if (keyValueRelation.Type === 'CHILD') {\n // relation refers to key\n var contents = extractContentsFromBlock(keyBlock, blockMap);\n keyText = contents.text;\n }\n else if (keyValueRelation.Type === 'VALUE') {\n // relation refers to value\n keyValueRelation.Ids.forEach(function (valueId) {\n var valueBlock = blockMap[valueId];\n var contents = extractContentsFromBlock(valueBlock, blockMap);\n valueText = contents.text;\n if (contents.selected != null)\n valueSelected = contents.selected;\n });\n }\n });\n return {\n key: keyText,\n value: { text: valueText, selected: valueSelected },\n polygon: getPolygon(keyBlock.Geometry),\n boundingBox: getBoundingBox(keyBlock.Geometry),\n };\n}\n/**\n * Extracts text and selection from input block's children.\n * @param {Textract.Block}} block - Block that we want to extract contents from.\n * @param {[id: string]: Textract.Block} blockMap - Maps block Ids to blocks.\n */\nexport function extractContentsFromBlock(block, blockMap) {\n var words = '';\n var isSelected;\n if (!block.Relationships) {\n // some block might have no content\n return { text: '', selected: undefined };\n }\n block.Relationships.forEach(function (relation) {\n relation.Ids.forEach(function (contentId) {\n var contentBlock = blockMap[contentId];\n if (contentBlock.BlockType === 'WORD') {\n words += contentBlock.Text + ' ';\n }\n else if (contentBlock.BlockType === 'SELECTION_ELEMENT') {\n isSelected = contentBlock.SelectionStatus === 'SELECTED' ? true : false;\n }\n });\n });\n words = words.substr(0, words.length - 1); // remove trailing space.\n return { text: words, selected: isSelected };\n}\n//# sourceMappingURL=IdentifyTextUtils.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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 { Credentials } from '@aws-amplify/core';\nimport Storage from '@aws-amplify/storage';\nimport { AbstractIdentifyPredictionsProvider } from '../types/Providers';\nimport * as Rekognition from 'aws-sdk/clients/rekognition';\nimport { isStorageSource, isFileSource, isBytesSource, isIdentifyCelebrities, isIdentifyFromCollection, } from '../types';\nimport * as Textract from 'aws-sdk/clients/textract';\nimport { makeCamelCase, makeCamelCaseArray, blobToArrayBuffer } from './Utils';\nimport { categorizeRekognitionBlocks, categorizeTextractBlocks, } from './IdentifyTextUtils';\nvar AmazonAIIdentifyPredictionsProvider = /** @class */ (function (_super) {\n __extends(AmazonAIIdentifyPredictionsProvider, _super);\n function AmazonAIIdentifyPredictionsProvider() {\n return _super.call(this) || this;\n }\n AmazonAIIdentifyPredictionsProvider.prototype.getProviderName = function () {\n return 'AmazonAIIdentifyPredictionsProvider';\n };\n /**\n * Verify user input source and converts it into source object readable by Rekognition and Textract.\n * Note that Rekognition and Textract use the same source interface, so we need not worry about types.\n * @param {IdentifySource} source - User input source that directs to the object user wants\n * to identify (storage, file, or bytes).\n * @return {Promise} - Promise resolving to the converted source object.\n */\n AmazonAIIdentifyPredictionsProvider.prototype.configureSource = function (source) {\n return new Promise(function (res, rej) {\n if (isStorageSource(source)) {\n var storageConfig = {\n level: source.level,\n identityId: source.identityId,\n };\n Storage.get(source.key, storageConfig)\n .then(function (url) {\n var parser = /https:\\/\\/([a-zA-Z0-9%-_.]+)\\.s3\\.[A-Za-z0-9%-._~]+\\/([a-zA-Z0-9%-._~/]+)\\?/;\n var parsedURL = url.match(parser);\n if (parsedURL.length < 3)\n rej('Invalid S3 key was given.');\n res({ S3Object: { Bucket: parsedURL[1], Name: parsedURL[2] } });\n })\n .catch(function (err) { return rej(err); });\n }\n else if (isFileSource(source)) {\n blobToArrayBuffer(source.file)\n .then(function (buffer) {\n res({ Bytes: buffer });\n })\n .catch(function (err) { return rej(err); });\n }\n else if (isBytesSource(source)) {\n var bytes = source.bytes;\n if (bytes instanceof Blob) {\n blobToArrayBuffer(bytes)\n .then(function (buffer) {\n res({ Bytes: buffer });\n })\n .catch(function (err) { return rej(err); });\n }\n // everything else can be directly passed to Rekognition / Textract.\n res({ Bytes: bytes });\n }\n else {\n rej('Input source is not configured correctly.');\n }\n });\n };\n /**\n * Recognize text from real-world images and documents (plain text, forms and tables). Detects text in the input\n * image and converts it into machine-readable text.\n * @param {IdentifySource} source - Object containing the source image and feature types to analyze.\n * @return {Promise} - Promise resolving to object containing identified texts.\n */\n AmazonAIIdentifyPredictionsProvider.prototype.identifyText = function (input) {\n var _this = this;\n return new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {\n var credentials, _a, _b, _c, region, _d, _e, configFormat, inputDocument, format, featureTypes, textractParam_1, rekognitionParam, param;\n var _this = this;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0: return [4 /*yield*/, Credentials.get()];\n case 1:\n credentials = _f.sent();\n if (!credentials)\n return [2 /*return*/, rej('No credentials')];\n _a = this._config.identifyText, _b = _a === void 0 ? {} : _a, _c = _b.region, region = _c === void 0 ? '' : _c, _d = _b.defaults, _e = (_d === void 0 ? {} : _d).format, configFormat = _e === void 0 ? 'PLAIN' : _e;\n this.rekognition = new Rekognition({ region: region, credentials: credentials });\n this.textract = new Textract({ region: region, credentials: credentials });\n return [4 /*yield*/, this.configureSource(input.text.source)\n .then(function (data) { return (inputDocument = data); })\n .catch(function (err) {\n rej(err);\n })];\n case 2:\n _f.sent();\n format = input.text.format || configFormat;\n featureTypes = [];\n if (format === 'FORM' || format === 'ALL')\n featureTypes.push('FORMS');\n if (format === 'TABLE' || format === 'ALL')\n featureTypes.push('TABLES');\n if (featureTypes.length === 0) {\n textractParam_1 = {\n Document: inputDocument,\n };\n rekognitionParam = {\n Image: inputDocument,\n };\n this.rekognition.detectText(rekognitionParam, function (rekognitionErr, rekognitionData) {\n if (rekognitionErr)\n return rej(rekognitionErr);\n var rekognitionResponse = categorizeRekognitionBlocks(rekognitionData.TextDetections);\n if (rekognitionResponse.text.words.length < 50) {\n // did not hit the word limit, return the data\n return res(rekognitionResponse);\n }\n _this.textract.detectDocumentText(textractParam_1, function (textractErr, textractData) {\n if (textractErr)\n return rej(textractErr);\n // use the service that identified more texts.\n if (rekognitionData.TextDetections.length >\n textractData.Blocks.length) {\n return res(rekognitionResponse);\n }\n else {\n return res(categorizeTextractBlocks(textractData.Blocks));\n }\n });\n });\n }\n else {\n param = {\n Document: inputDocument,\n FeatureTypes: featureTypes,\n };\n this.textract.analyzeDocument(param, function (err, data) {\n if (err)\n return rej(err);\n var blocks = data.Blocks;\n res(categorizeTextractBlocks(blocks));\n });\n }\n return [2 /*return*/];\n }\n });\n }); });\n };\n /**\n * Identify instances of real world entities from an image and if it contains unsafe content.\n * @param {IdentifyLabelsInput} input - Object containing the source image and entity type to identify.\n * @return {Promise} - Promise resolving to an array of identified entities.\n */\n AmazonAIIdentifyPredictionsProvider.prototype.identifyLabels = function (input) {\n var _this = this;\n return new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {\n var credentials, _a, _b, _c, region, _d, _e, type, inputImage, param, servicePromises, entityType;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0: return [4 /*yield*/, Credentials.get()];\n case 1:\n credentials = _f.sent();\n if (!credentials)\n return [2 /*return*/, rej('No credentials')];\n _a = this._config.identifyLabels, _b = _a === void 0 ? {} : _a, _c = _b.region, region = _c === void 0 ? '' : _c, _d = _b.defaults, _e = (_d === void 0 ? {} : _d).type, type = _e === void 0 ? 'LABELS' : _e;\n this.rekognition = new Rekognition({ region: region, credentials: credentials });\n return [4 /*yield*/, this.configureSource(input.labels.source)\n .then(function (data) {\n inputImage = data;\n })\n .catch(function (err) {\n return rej(err);\n })];\n case 2:\n _f.sent();\n param = { Image: inputImage };\n servicePromises = [];\n entityType = input.labels.type || type;\n if (entityType === 'LABELS' || entityType === 'ALL') {\n servicePromises.push(this.detectLabels(param));\n }\n if (entityType === 'UNSAFE' || entityType === 'ALL') {\n servicePromises.push(this.detectModerationLabels(param));\n }\n // if (servicePromises.length === 0) {\n // rej('You must specify entity type: LABELS | UNSAFE | ALL');\n // }\n Promise.all(servicePromises)\n .then(function (data) {\n var identifyResult = {};\n // concatenate resolved promises to a single object\n data.forEach(function (val) {\n identifyResult = __assign(__assign({}, identifyResult), val);\n });\n res(identifyResult);\n })\n .catch(function (err) { return rej(err); });\n return [2 /*return*/];\n }\n });\n }); });\n };\n /**\n * Calls Rekognition.detectLabels and organizes the returned data.\n * @param {Rekognition.DetectLabelsRequest} param - parameter to be passed onto Rekognition\n * @return {Promise} - Promise resolving to organized detectLabels response.\n */\n AmazonAIIdentifyPredictionsProvider.prototype.detectLabels = function (param) {\n var _this = this;\n return new Promise(function (res, rej) {\n _this.rekognition.detectLabels(param, function (err, data) {\n if (err)\n return rej(err);\n if (!data.Labels)\n return res({ labels: null }); // no image was detected\n var detectLabelData = data.Labels.map(function (val) {\n var boxes = val.Instances\n ? val.Instances.map(function (val) { return makeCamelCase(val.BoundingBox); })\n : undefined;\n return {\n name: val.Name,\n boundingBoxes: boxes,\n metadata: {\n confidence: val.Confidence,\n parents: makeCamelCaseArray(val.Parents),\n },\n };\n });\n return res({ labels: detectLabelData });\n });\n });\n };\n /**\n * Calls Rekognition.detectModerationLabels and organizes the returned data.\n * @param {Rekognition.DetectLabelsRequest} param - Parameter to be passed onto Rekognition\n * @return {Promise} - Promise resolving to organized detectModerationLabels response.\n */\n AmazonAIIdentifyPredictionsProvider.prototype.detectModerationLabels = function (param) {\n var _this = this;\n return new Promise(function (res, rej) {\n _this.rekognition.detectModerationLabels(param, function (err, data) {\n if (err)\n return rej(err);\n if (data.ModerationLabels.length !== 0) {\n return res({ unsafe: 'YES' });\n }\n else {\n return res({ unsafe: 'NO' });\n }\n });\n });\n };\n /**\n * Identify faces within an image that is provided as input, and match faces from a collection\n * or identify celebrities.\n * @param {IdentifyEntityInput} input - object containing the source image and face match options.\n * @return {Promise} Promise resolving to identify results.\n */\n AmazonAIIdentifyPredictionsProvider.prototype.identifyEntities = function (input) {\n var _this = this;\n return new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {\n var credentials, _a, _b, _c, region, _d, celebrityDetectionEnabled, _e, _f, _g, collectionIdConfig, _h, maxFacesConfig, inputImage, param, _j, _k, collectionId, _l, maxFaces, updatedParam;\n var _this = this;\n return __generator(this, function (_m) {\n switch (_m.label) {\n case 0: return [4 /*yield*/, Credentials.get()];\n case 1:\n credentials = _m.sent();\n if (!credentials)\n return [2 /*return*/, rej('No credentials')];\n _a = this._config.identifyEntities, _b = _a === void 0 ? {} : _a, _c = _b.region, region = _c === void 0 ? '' : _c, _d = _b.celebrityDetectionEnabled, celebrityDetectionEnabled = _d === void 0 ? false : _d, _e = _b.defaults, _f = _e === void 0 ? {} : _e, _g = _f.collectionId, collectionIdConfig = _g === void 0 ? '' : _g, _h = _f.maxEntities, maxFacesConfig = _h === void 0 ? 50 : _h;\n // default arguments\n this.rekognition = new Rekognition({ region: region, credentials: credentials });\n return [4 /*yield*/, this.configureSource(input.entities.source)\n .then(function (data) { return (inputImage = data); })\n .catch(function (err) {\n return rej(err);\n })];\n case 2:\n _m.sent();\n param = { Image: inputImage };\n if (isIdentifyCelebrities(input.entities) &&\n input.entities.celebrityDetection) {\n if (!celebrityDetectionEnabled) {\n return [2 /*return*/, rej('Error: You have to enable celebrity detection first')];\n }\n this.rekognition.recognizeCelebrities(param, function (err, data) {\n if (err)\n return rej(err);\n var faces = data.CelebrityFaces.map(function (celebrity) {\n return {\n boundingBox: makeCamelCase(celebrity.Face.BoundingBox),\n landmarks: makeCamelCaseArray(celebrity.Face.Landmarks),\n metadata: __assign(__assign({}, makeCamelCase(celebrity, ['Id', 'Name', 'Urls'])), { pose: makeCamelCase(celebrity.Face.Pose) }),\n };\n });\n res({ entities: faces });\n });\n }\n else if (isIdentifyFromCollection(input.entities) &&\n input.entities.collection) {\n _j = input.entities, _k = _j.collectionId, collectionId = _k === void 0 ? collectionIdConfig : _k, _l = _j.maxEntities, maxFaces = _l === void 0 ? maxFacesConfig : _l;\n updatedParam = __assign(__assign({}, param), { CollectionId: collectionId, MaxFaces: maxFaces });\n this.rekognition.searchFacesByImage(updatedParam, function (err, data) {\n if (err)\n return rej(err);\n var faces = data.FaceMatches.map(function (val) {\n return {\n boundingBox: makeCamelCase(val.Face.BoundingBox),\n metadata: {\n externalImageId: _this.decodeExternalImageId(val.Face.ExternalImageId),\n similarity: val.Similarity,\n },\n };\n });\n res({ entities: faces });\n });\n }\n else {\n this.rekognition.detectFaces(param, function (err, data) {\n if (err)\n return rej(err);\n var faces = data.FaceDetails.map(function (detail) {\n // face attributes keys we want to extract from Rekognition's response\n var attributeKeys = [\n 'Smile',\n 'Eyeglasses',\n 'Sunglasses',\n 'Gender',\n 'Beard',\n 'Mustache',\n 'EyesOpen',\n 'MouthOpen',\n ];\n var faceAttributes = makeCamelCase(detail, attributeKeys);\n if (detail.Emotions) {\n faceAttributes['emotions'] = detail.Emotions.map(function (emotion) { return emotion.Type; });\n }\n return {\n boundingBox: makeCamelCase(detail.BoundingBox),\n landmarks: makeCamelCaseArray(detail.Landmarks),\n ageRange: makeCamelCase(detail.AgeRange),\n attributes: makeCamelCase(detail, attributeKeys),\n metadata: {\n confidence: detail.Confidence,\n pose: makeCamelCase(detail.Pose),\n },\n };\n });\n res({ entities: faces });\n });\n }\n return [2 /*return*/];\n }\n });\n }); });\n };\n AmazonAIIdentifyPredictionsProvider.prototype.decodeExternalImageId = function (externalImageId) {\n return ('' + externalImageId).replace(/::/g, '/');\n };\n return AmazonAIIdentifyPredictionsProvider;\n}(AbstractIdentifyPredictionsProvider));\nexport default AmazonAIIdentifyPredictionsProvider;\n//# sourceMappingURL=AmazonAIIdentifyPredictionsProvider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Credentials } from '@aws-amplify/core';\nimport { AbstractInterpretPredictionsProvider } from '../types/Providers';\nimport { InterpretTextCategories, } from '../types';\nimport { Comprehend } from 'aws-sdk';\nvar AmazonAIInterpretPredictionsProvider = /** @class */ (function (_super) {\n __extends(AmazonAIInterpretPredictionsProvider, _super);\n function AmazonAIInterpretPredictionsProvider() {\n return _super.call(this) || this;\n }\n AmazonAIInterpretPredictionsProvider.prototype.getProviderName = function () {\n return 'AmazonAIInterpretPredictionsProvider';\n };\n AmazonAIInterpretPredictionsProvider.prototype.interpretText = function (input) {\n var _this = this;\n return new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {\n var credentials, _a, _b, _c, region, _d, _e, interpretTypeConfig, _f, _g, _h, _j, text, _k, interpretType, _l, _m, _o, language, comprehend, doAll, languagePromise, languageDetectionParams, entitiesPromise, LanguageCode, _p, entitiesDetectionParams, sentimentPromise, LanguageCode, _q, sentimentParams, syntaxPromise, LanguageCode, _r, syntaxParams, keyPhrasesPromise, LanguageCode, _s, keyPhrasesParams, results, err_1;\n return __generator(this, function (_t) {\n switch (_t.label) {\n case 0: return [4 /*yield*/, Credentials.get()];\n case 1:\n credentials = _t.sent();\n if (!credentials)\n return [2 /*return*/, rej('No credentials')];\n _a = this._config.interpretText, _b = _a === void 0 ? {} : _a, _c = _b.region, region = _c === void 0 ? '' : _c, _d = _b.defaults, _e = (_d === void 0 ? {} : _d).type, interpretTypeConfig = _e === void 0 ? '' : _e;\n _f = (input).text, _g = _f === void 0 ? {} : _f, _h = _g.source, _j = (_h === void 0 ? {} : _h).text, text = _j === void 0 ? '' : _j, _k = _g.type, interpretType = _k === void 0 ? interpretTypeConfig : _k;\n _l = (input).text, _m = (_l === void 0 ? {} : _l).source, _o = (_m === void 0 ? {} : _m).language, language = _o === void 0 ? undefined : _o;\n comprehend = new Comprehend({\n credentials: credentials,\n region: region,\n });\n doAll = interpretType === InterpretTextCategories.ALL;\n if (doAll || interpretType === InterpretTextCategories.LANGUAGE) {\n languageDetectionParams = {\n Text: text,\n };\n languagePromise = this.detectLanguage(languageDetectionParams, comprehend);\n }\n if (!(doAll || interpretType === InterpretTextCategories.ENTITIES)) return [3 /*break*/, 4];\n _p = language;\n if (_p) return [3 /*break*/, 3];\n return [4 /*yield*/, languagePromise];\n case 2:\n _p = (_t.sent());\n _t.label = 3;\n case 3:\n LanguageCode = _p;\n if (!LanguageCode) {\n return [2 /*return*/, rej('language code is required on source for this selection')];\n }\n entitiesDetectionParams = {\n Text: text,\n LanguageCode: LanguageCode,\n };\n entitiesPromise = this.detectEntities(entitiesDetectionParams, comprehend);\n _t.label = 4;\n case 4:\n if (!(doAll || interpretType === InterpretTextCategories.SENTIMENT)) return [3 /*break*/, 7];\n _q = language;\n if (_q) return [3 /*break*/, 6];\n return [4 /*yield*/, languagePromise];\n case 5:\n _q = (_t.sent());\n _t.label = 6;\n case 6:\n LanguageCode = _q;\n if (!LanguageCode) {\n return [2 /*return*/, rej('language code is required on source for this selection')];\n }\n sentimentParams = {\n Text: text,\n LanguageCode: LanguageCode,\n };\n sentimentPromise = this.detectSentiment(sentimentParams, comprehend);\n _t.label = 7;\n case 7:\n if (!(doAll || interpretType === InterpretTextCategories.SYNTAX)) return [3 /*break*/, 10];\n _r = language;\n if (_r) return [3 /*break*/, 9];\n return [4 /*yield*/, languagePromise];\n case 8:\n _r = (_t.sent());\n _t.label = 9;\n case 9:\n LanguageCode = _r;\n if (!LanguageCode) {\n return [2 /*return*/, rej('language code is required on source for this selection')];\n }\n syntaxParams = {\n Text: text,\n LanguageCode: LanguageCode,\n };\n syntaxPromise = this.detectSyntax(syntaxParams, comprehend);\n _t.label = 10;\n case 10:\n if (!(doAll || interpretType === InterpretTextCategories.KEY_PHRASES)) return [3 /*break*/, 13];\n _s = language;\n if (_s) return [3 /*break*/, 12];\n return [4 /*yield*/, languagePromise];\n case 11:\n _s = (_t.sent());\n _t.label = 12;\n case 12:\n LanguageCode = _s;\n if (!LanguageCode) {\n return [2 /*return*/, rej('language code is required on source for this selection')];\n }\n keyPhrasesParams = {\n Text: text,\n LanguageCode: LanguageCode,\n };\n keyPhrasesPromise = this.detectKeyPhrases(keyPhrasesParams, comprehend);\n _t.label = 13;\n case 13:\n _t.trys.push([13, 15, , 16]);\n return [4 /*yield*/, Promise.all([\n languagePromise,\n entitiesPromise,\n sentimentPromise,\n syntaxPromise,\n keyPhrasesPromise,\n ])];\n case 14:\n results = _t.sent();\n res({\n textInterpretation: {\n keyPhrases: results[4] || [],\n language: results[0] || '',\n sentiment: results[2],\n syntax: results[3] || [],\n textEntities: results[1] || [],\n },\n });\n return [3 /*break*/, 16];\n case 15:\n err_1 = _t.sent();\n rej(err_1);\n return [3 /*break*/, 16];\n case 16: return [2 /*return*/];\n }\n });\n }); });\n };\n AmazonAIInterpretPredictionsProvider.prototype.detectKeyPhrases = function (params, comprehend) {\n return new Promise(function (res, rej) {\n comprehend.detectKeyPhrases(params, function (err, data) {\n var _a = (data || {}).KeyPhrases, KeyPhrases = _a === void 0 ? [] : _a;\n if (err) {\n if (err.code === 'AccessDeniedException') {\n rej('Not authorized, did you enable Interpret Text on predictions category Amplify CLI? try: ' +\n 'amplify predictions add');\n }\n else {\n rej(err.message);\n }\n }\n else {\n res(KeyPhrases.map(function (_a) {\n var text = _a.Text;\n return { text: text };\n }));\n }\n });\n });\n };\n AmazonAIInterpretPredictionsProvider.prototype.detectSyntax = function (params, comprehend) {\n var _this = this;\n return new Promise(function (res, rej) {\n comprehend.detectSyntax(params, function (err, data) {\n var _a = (data || {}).SyntaxTokens, SyntaxTokens = _a === void 0 ? [] : _a;\n if (err) {\n if (err.code === 'AccessDeniedException') {\n rej('Not authorized, did you enable Interpret Text on predictions category Amplify CLI? try: ' +\n 'amplify predictions add');\n }\n else {\n rej(err.message);\n }\n }\n else {\n res(_this.serializeSyntaxFromComprehend(SyntaxTokens));\n }\n });\n });\n };\n AmazonAIInterpretPredictionsProvider.prototype.serializeSyntaxFromComprehend = function (tokens) {\n var response = [];\n if (tokens && Array.isArray(tokens)) {\n response = tokens.map(function (_a) {\n var _b = _a.Text, text = _b === void 0 ? '' : _b, _c = _a.PartOfSpeech, _d = (_c === void 0 ? {} : _c).Tag, syntax = _d === void 0 ? '' : _d;\n return { text: text, syntax: syntax };\n });\n }\n return response;\n };\n AmazonAIInterpretPredictionsProvider.prototype.detectSentiment = function (params, comprehend) {\n return new Promise(function (res, rej) {\n comprehend.detectSentiment(params, function (err, data) {\n if (err) {\n if (err.code === 'AccessDeniedException') {\n rej('Not authorized, did you enable Interpret Text on predictions category Amplify CLI? try: ' +\n 'amplify predictions add');\n }\n else {\n rej(err.message);\n }\n }\n else {\n var _a = (data), _b = _a.Sentiment, predominant = _b === void 0 ? '' : _b, _c = _a.SentimentScore, _d = _c === void 0 ? {} : _c, _e = _d.Positive, positive = _e === void 0 ? 0 : _e, _f = _d.Negative, negative = _f === void 0 ? 0 : _f, _g = _d.Neutral, neutral = _g === void 0 ? 0 : _g, _h = _d.Mixed, mixed = _h === void 0 ? 0 : _h;\n res({ predominant: predominant, positive: positive, negative: negative, neutral: neutral, mixed: mixed });\n }\n });\n });\n };\n AmazonAIInterpretPredictionsProvider.prototype.detectEntities = function (params, comprehend) {\n var _this = this;\n return new Promise(function (res, rej) {\n comprehend.detectEntities(params, function (err, data) {\n var _a = (data || {}).Entities, Entities = _a === void 0 ? [] : _a;\n if (err) {\n if (err.code === 'AccessDeniedException') {\n rej('Not authorized, did you enable Interpret Text on predictions category Amplify CLI? try: ' +\n 'amplify predictions add');\n }\n else {\n rej(err.message);\n }\n }\n else {\n res(_this.serializeEntitiesFromComprehend(Entities));\n }\n });\n });\n };\n AmazonAIInterpretPredictionsProvider.prototype.serializeEntitiesFromComprehend = function (data) {\n var response = [];\n if (data && Array.isArray(data)) {\n response = data.map(function (_a) {\n var type = _a.Type, text = _a.Text;\n return { type: type, text: text };\n });\n }\n return response;\n };\n AmazonAIInterpretPredictionsProvider.prototype.detectLanguage = function (params, comprehend) {\n return new Promise(function (res, rej) {\n comprehend.detectDominantLanguage(params, function (err, data) {\n if (err) {\n if (err.code === 'AccessDeniedException') {\n rej('Not authorized, did you enable Interpret Text on predictions category Amplify CLI? try: ' +\n 'amplify predictions add');\n }\n else {\n rej(err.message);\n }\n }\n else {\n var _a = (data || {}).Languages, LanguageCode = (_a === void 0 ? [''] : _a)[0].LanguageCode;\n if (!LanguageCode) {\n rej('Language not detected');\n }\n res(data.Languages[0].LanguageCode);\n }\n });\n });\n };\n return AmazonAIInterpretPredictionsProvider;\n}(AbstractInterpretPredictionsProvider));\nexport default AmazonAIInterpretPredictionsProvider;\n//# sourceMappingURL=AmazonAIInterpretPredictionsProvider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AbstractPredictionsProvider } from '../types/Providers';\nimport { AmazonAIConvertPredictionsProvider, AmazonAIInterpretPredictionsProvider, AmazonAIIdentifyPredictionsProvider, } from '.';\nvar AmazonAIPredictionsProvider = /** @class */ (function (_super) {\n __extends(AmazonAIPredictionsProvider, _super);\n function AmazonAIPredictionsProvider() {\n var _this = _super.call(this) || this;\n _this.convertProvider = new AmazonAIConvertPredictionsProvider();\n _this.identifyProvider = new AmazonAIIdentifyPredictionsProvider();\n _this.interpretProvider = new AmazonAIInterpretPredictionsProvider();\n return _this;\n }\n AmazonAIPredictionsProvider.prototype.getCategory = function () {\n return 'Predictions';\n };\n AmazonAIPredictionsProvider.prototype.getProviderName = function () {\n return 'AmazonAIPredictionsProvider';\n };\n AmazonAIPredictionsProvider.prototype.configure = function (config) {\n this.convertProvider.configure(config.convert);\n this.identifyProvider.configure(config.identify);\n this.interpretProvider.configure(config.interpret);\n return config;\n };\n AmazonAIPredictionsProvider.prototype.interpret = function (input) {\n return this.interpretProvider.interpret(input);\n };\n AmazonAIPredictionsProvider.prototype.convert = function (input) {\n return this.convertProvider.convert(input);\n };\n AmazonAIPredictionsProvider.prototype.identify = function (input) {\n return this.identifyProvider.identify(input);\n };\n return AmazonAIPredictionsProvider;\n}(AbstractPredictionsProvider));\nexport default AmazonAIPredictionsProvider;\n//# sourceMappingURL=AmazonAIPredictionsProvider.js.map","/*\n * Copyright 2017-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 PredictionsClass from './Predictions';\nimport Amplify, { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { AmazonAIConvertPredictionsProvider, AmazonAIIdentifyPredictionsProvider, AmazonAIPredictionsProvider, AmazonAIInterpretPredictionsProvider, } from './Providers';\nimport { InterpretTextCategories } from './types';\nvar logger = new Logger('Predictions');\nvar _instance = null;\nif (!_instance) {\n logger.debug('Create Predictions Instance');\n _instance = new PredictionsClass({});\n}\nvar Predictions = _instance;\nAmplify.register(Predictions);\nexport default Predictions;\nexport { AmazonAIIdentifyPredictionsProvider, AmazonAIConvertPredictionsProvider, AmazonAIPredictionsProvider, AmazonAIInterpretPredictionsProvider, InterpretTextCategories, };\n//# sourceMappingURL=index.js.map","import { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('Amplify');\nvar AbstractPredictionsProvider = /** @class */ (function () {\n function AbstractPredictionsProvider() {\n }\n AbstractPredictionsProvider.prototype.configure = function (config) {\n logger.debug('configure AbstractPredictionsProvider', { config: config });\n this._config = config;\n return config;\n };\n return AbstractPredictionsProvider;\n}());\nexport { AbstractPredictionsProvider };\n//# sourceMappingURL=AbstractPredictionsProvider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AbstractPredictionsProvider } from '.';\nimport { isIdentifyLabelsInput, isIdentifyEntitiesInput, isIdentifyTextInput, } from '../Predictions';\nimport { Logger } from '@aws-amplify/core';\nvar logger = new Logger('AbstractIdentifyPredictionsProvider');\nvar AbstractIdentifyPredictionsProvider = /** @class */ (function (_super) {\n __extends(AbstractIdentifyPredictionsProvider, _super);\n function AbstractIdentifyPredictionsProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AbstractIdentifyPredictionsProvider.prototype.getCategory = function () {\n return 'Identify';\n };\n AbstractIdentifyPredictionsProvider.prototype.identify = function (input) {\n if (isIdentifyTextInput(input)) {\n logger.debug('identifyText');\n return this.identifyText(input);\n }\n else if (isIdentifyLabelsInput(input)) {\n logger.debug('identifyLabels');\n return this.identifyLabels(input);\n }\n else if (isIdentifyEntitiesInput(input)) {\n logger.debug('identifyEntities');\n return this.identifyEntities(input);\n }\n };\n AbstractIdentifyPredictionsProvider.prototype.identifyText = function (input) {\n throw new Error('identifyText is not implemented by this provider.');\n };\n AbstractIdentifyPredictionsProvider.prototype.identifyLabels = function (input) {\n throw new Error('identifyLabels is not implemented by this provider');\n };\n AbstractIdentifyPredictionsProvider.prototype.identifyEntities = function (input) {\n throw new Error('identifyEntities is not implemented by this provider');\n };\n return AbstractIdentifyPredictionsProvider;\n}(AbstractPredictionsProvider));\nexport { AbstractIdentifyPredictionsProvider };\n//# sourceMappingURL=AbstractIdentifyPredictionsProvider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AbstractPredictionsProvider } from '.';\nimport { isInterpretTextInput, } from '../Predictions';\nvar AbstractInterpretPredictionsProvider = /** @class */ (function (_super) {\n __extends(AbstractInterpretPredictionsProvider, _super);\n function AbstractInterpretPredictionsProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AbstractInterpretPredictionsProvider.prototype.getCategory = function () {\n return 'Interpret';\n };\n AbstractInterpretPredictionsProvider.prototype.interpret = function (input) {\n if (isInterpretTextInput(input)) {\n return this.interpretText(input);\n }\n };\n AbstractInterpretPredictionsProvider.prototype.interpretText = function (input) {\n throw new Error('interpretText is not implement by this provider');\n };\n return AbstractInterpretPredictionsProvider;\n}(AbstractPredictionsProvider));\nexport { AbstractInterpretPredictionsProvider };\n//# sourceMappingURL=AbstractInterpretPredictionsProvider.js.map"],"sourceRoot":""}