{"version":3,"sources":["webpack:///./node_modules/@firebase/functions/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@firebase/functions/dist/index.esm.js","webpack:///./node_modules/@firebase/installations/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@firebase/installations/dist/index.esm.js","webpack:///./node_modules/@firebase/messaging/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@firebase/messaging/dist/index.esm.js","webpack:///./node_modules/@firebase/storage/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@firebase/storage/dist/index.esm.js","webpack:///./node_modules/@firebase/performance/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@firebase/performance/dist/index.esm.js","webpack:///./node_modules/@firebase/analytics/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@firebase/analytics/dist/index.esm.js","webpack:///./node_modules/@firebase/remote-config/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@firebase/remote-config/dist/index.esm.js","webpack:///./node_modules/firebase/dist/index.esm.js","webpack:///./src/assets/icons/google-brands.svg","webpack:///./src/components/Design_System/buttons/Primary_button.vue?4b49","webpack:///./node_modules/@firebase/database/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/idb/build/idb.js","webpack:///./node_modules/@firebase/firestore/node_modules/tslib/tslib.es6.js","webpack:///./src/assets/icons/facebook-brands.svg","webpack:///./node_modules/@firebase/firestore/dist/index.esm.js","webpack:///./node_modules/@firebase/webchannel-wrapper/dist/index.esm.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/@firebase/database/dist/index.esm.js","webpack:///./src/components/Design_System/buttons/Primary_button.vue?269e","webpack:///src/components/Design_System/buttons/Primary_button.vue","webpack:///./src/components/Design_System/buttons/Primary_button.vue?d647","webpack:///./src/components/Design_System/buttons/Primary_button.vue"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","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","errorCodeMap","OK","CANCELLED","UNKNOWN","INVALID_ARGUMENT","DEADLINE_EXCEEDED","NOT_FOUND","ALREADY_EXISTS","PERMISSION_DENIED","UNAUTHENTICATED","RESOURCE_EXHAUSTED","FAILED_PRECONDITION","ABORTED","OUT_OF_RANGE","UNIMPLEMENTED","INTERNAL","UNAVAILABLE","DATA_LOSS","_super","HttpsErrorImpl","code","message","details","_this","Error","codeForHTTPStatus","status","_errorForResponse","bodyJSON","serializer","description","undefined","errorJSON","error","status_1","decode","ContextProvider","authProvider","messagingProvider","auth","messaging","getImmediate","optional","get","getAuthToken","token","_a","getToken","accessToken","getInstanceIdToken","self","Notification","permission","getContext","authToken","instanceIdToken","LONG_TYPE","UNSIGNED_LONG_TYPE","mapValues","o","key","Serializer","encode","data","Number","valueOf","isFinite","toString","isArray","map","x","json","isNaN","failAfter","millis","timer","promise","setTimeout","Service","app_","regionOrCustomDomain_","fetchImpl","emulatorOrigin","delete","deleteService","contextProvider","cancelAllRequests","url","URL","customDomain","origin","region","defineProperty","enumerable","configurable","_url","name","projectId","options","origin_1","useEmulator","host","port","useFunctionsEmulator","httpsCallable","postJSON","headers","response","method","JSON","stringify","context","timeout","failAfterPromise","responseData","decodedData","_b","race","clearTimeoutWrapper","clearTimeout","FUNCTIONS_TYPE","registerFunctions","instance","namespaceExports","Functions","factory","container","regionOrCustomDomain","app","getProvider","registerComponent","setServiceProps","setMultipleInstances","fetch","bind","registerVersion","assign","s","i","arguments","m","r","ar","concat","PENDING_TIMEOUT_MS","PACKAGE_VERSION","INTERNAL_AUTH_VERSION","INSTALLATIONS_API_URL","TOKEN_EXPIRATION_BUFFER","SERVICE","SERVICE_NAME","ERROR_DESCRIPTION_MAP","ERROR_FACTORY","isServerError","includes","getInstallationsEndpoint","extractAuthTokenInfoFromResponse","requestStatus","expiresIn","getExpiresInFromResponseExpiresIn","creationTime","Date","now","getErrorFromResponse","requestName","responseJson","errorData","serverCode","serverMessage","serverStatus","getHeaders","apiKey","Headers","Accept","getHeadersWithAuth","appConfig","refreshToken","append","getAuthorizationHeader","retryIfServerError","fn","responseExpiresIn","replace","createInstallationRequest","fid","endpoint","request","responseValue","registeredInstallationEntry","authVersion","appId","sdkVersion","ok","registrationStatus","sleep","ms","bufferToBase64UrlSafe","array","b64","btoa","String","fromCharCode","VALID_FID_PATTERN","INVALID_FID","generateFid","fidByteArray","Uint8Array","crypto_1","crypto","msCrypto","getRandomValues","test","b64String","substr","getKey","appName","fidChangeCallbacks","Map","fidChanged","callFidChangeCallbacks","broadcastFidChange","addCallback","callback","getBroadcastChannel","callbackSet","Set","set","add","removeCallback","size","closeBroadcastChannel","e_1","callbacks","callbacks_1","callbacks_1_1","e_1_1","return","channel","postMessage","broadcastChannel","BroadcastChannel","onmessage","close","DATABASE_NAME","DATABASE_VERSION","OBJECT_STORE_NAME","dbPromise","getDbPromise","upgradeDB","oldVersion","createObjectStore","db","tx","objectStore","oldValue","transaction","put","complete","remove","update","updateFn","store","newValue","getInstallationEntry","registrationPromise","installationEntry","oldEntry","updateOrCreateInstallationEntry","entryWithPromise","triggerRegistrationIfNecessary","entry","clearTimedOutRequest","navigator","onLine","registrationPromiseWithError","inProgressEntry","registrationTime","registerInstallation","waitUntilFidRegistration","customData","updateInstallationRequest","hasInstallationRequestTimedOut","generateAuthTokenRequest","platformLoggerProvider","platformLogger","completedAuthToken","getGenerateAuthTokenEndpoint","getPlatformInfoString","installation","refreshAuthToken","dependencies","forceRefresh","tokenPromise","isEntryRegistered","oldAuthToken","isAuthTokenValid","waitUntilAuthTokenRequest","makeAuthTokenRequestInProgressEntry","fetchAuthTokenFromServer","updateAuthTokenRequest","hasAuthTokenRequestTimedOut","updatedInstallationEntry","isAuthTokenExpired","inProgressAuthToken","requestTime","getId","catch","console","completeInstallationRegistration","deleteInstallationRequest","getDeleteEndpoint","deleteInstallation","onIdChange","extractAppConfig","getMissingValueError","configKeys","configKeys_1","configKeys_1_1","keyName","valueName","registerInstallations","installationsName","installations","MessageType","ERROR_MAP","DEFAULT_SW_PATH","DEFAULT_SW_SCOPE","DEFAULT_VAPID_KEY","ENDPOINT","FCM_MSG","TAG","CONSOLE_CAMPAIGN_ANALYTICS_ENABLED","CONSOLE_CAMPAIGN_ID","CONSOLE_CAMPAIGN_TIME","CONSOLE_CAMPAIGN_NAME","BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS","FOREGROUND_HANDLE_PREPARATION_TIME_MS","arrayToBase64","uint8Array","base64String","base64ToArray","padding","repeat","base64","rawData","atob","outputArray","charCodeAt","OLD_DB_NAME","OLD_DB_VERSION","OLD_OBJECT_STORE_NAME","migrateOldDatabase","senderId","databases","dbNames","tokenDetails","indexedDB","oldDetails","objectStoreNames","contains","index","clear","p256dh","fcmToken","createTime","subscriptionOptions","swScope","vapidKey","checkTokenDetails","upgradeDb","dbGet","firebaseDependencies","oldTokenDetails","dbSet","dbRemove","requestGetToken","subscribeOptions","err_1","getBody","getEndpoint","errorInfo","requestUpdateToken","updateOptions","err_2","requestDeleteToken","unsubscribeOptions","err_3","web","applicationPubKey","TOKEN_EXPIRATION_MS","swRegistration","pushSubscription","getPushSubscription","scope","getNewToken","isTokenValid","warn","updateToken","deleteToken","pushManager","getSubscription","unsubscribe","updatedToken","updatedTokenDetails","e_2","subscription","subscribe","userVisibleOnly","applicationServerKey","dbOptions","currentOptions","isVapidKeyEqual","isEndpointEqual","isAuthEqual","isP256dhEqual","externalizePayload","internalPayload","payload","from","collapseKey","collapse_key","propagateNotificationPayload","propagateDataPayload","propagateFcmOptions","messagePayloadInternal","notification","title","image","fcmOptions","link","analyticsLabel","analytics_label","isConsoleMessage","SwController","isOnBackgroundMessageUsed","bgMessageHandler","addEventListener","waitUntil","onPush","onSubChange","onNotificationClick","setBackgroundMessageHandler","onBackgroundMessage","nextOrObserver","_c","registration","requestPermission","usePublicVapidKey","useServiceWorker","onMessage","onTokenRefresh","event","clientList","isNotificationShown","getMessagePayloadInternal","getClientList","debug","hasVisibleClients","sendMessagePayloadInternalToWindows","showNotification","wrapInternalPayload","newSubscription","originUrl","client","action","stopImmediatePropagation","getLink","location","href","getWindowClient","clients","openWindow","focus","messageType","NOTIFICATION_CLICKED","isFirebaseMessaging","wrappedInternalPayload","err","clientList_1","clientList_1_1","clientUrl","some","visibilityState","startsWith","PUSH_RECEIVED","clientList_2","clientList_2_1","e_2_1","matchAll","type","includeUncontrolled","notificationPayloadInternal","actions","maxActions","click_action","WindowController","onMessageCallback","serviceWorker","messageEventListener","dataPayload","stripInternalFields","logEvent","getVapidKey","getSwReg","updateVapidKey","updateSwReg","serviceWorkerRegistration","registerDefaultSw","ServiceWorkerRegistration","register","browserErrorMessage","permissionResult","eventType","analytics","getEventType","analyticsProvider","message_id","message_name","message_time","message_device_time","Math","floor","messagingSenderId","MESSAGING_NAME","isSupported","NAMESPACE_EXPORTS","isSWControllerSupported","isWindowControllerSupported","window","cookieEnabled","PushSubscription","il","k","a","j","jl","DEFAULT_HOST","CONFIG_STORAGE_BUCKET_KEY","DEFAULT_MAX_OPERATION_RETRY_TIME","DEFAULT_MAX_UPLOAD_RETRY_TIME","FirebaseStorageError","prependCode","serverResponse","codeEquals","Code","OBJECT_NOT_FOUND","BUCKET_NOT_FOUND","PROJECT_NOT_FOUND","QUOTA_EXCEEDED","UNAUTHORIZED","RETRY_LIMIT_EXCEEDED","INVALID_CHECKSUM","CANCELED","INVALID_EVENT_NAME","INVALID_URL","INVALID_DEFAULT_BUCKET","NO_DEFAULT_BUCKET","CANNOT_SLICE_BLOB","SERVER_FILE_WRONG_SIZE","NO_DOWNLOAD_URL","INVALID_ARGUMENT_COUNT","APP_DELETED","INVALID_ROOT_OPERATION","INVALID_FORMAT","INTERNAL_ERROR","UNSUPPORTED_ENVIRONMENT","unknown","objectNotFound","path","quotaExceeded","bucket","unauthenticated","unauthorized","retryLimitExceeded","invalidUrl","invalidDefaultBucket","noDefaultBucket","cannotSliceBlob","serverFileWrongSize","noDownloadURL","invalidArgument","appDeleted","invalidRootOperation","invalidFormat","format","internalError","StringFormat","RAW","BASE64","BASE64URL","DATA_URL","StringData","contentType","dataFromString","stringData","utf8Bytes_","base64Bytes_","dataURLBytes_","dataURLContentType_","c","valid","hi","lo","percentEncodedBytes_","decoded","decodeURIComponent","hasMinus","indexOf","hasUnder","invalidChar","hasPlus","hasSlash","bytes","DataURLParts","dataURL","matches","match","middle","endsWith","substring","rest","dataUrl","parts","end","longEnough","ErrorCode","TaskEvent","STATE_CHANGED","InternalTaskState","RUNNING","PAUSING","PAUSED","SUCCESS","CANCELING","ERROR","TaskState","taskStateFromInternalTaskState","state","NetworkXhrIo","sent_","xhr_","XMLHttpRequest","errorCode_","NO_ERROR","sendPromise_","ABORT","NETWORK_ERROR","send","open","setRequestHeader","getErrorCode","getStatus","getResponseText","responseText","abort","getResponseHeader","header","addUploadProgressListener","listener","upload","removeUploadProgressListener","removeEventListener","XhrIoPool","createXhrIo","isJustDef","isFunction","isNonArrayObject","isString","isNativeBlob","isNativeBlobDefined","Blob","validateNumber","argument","minValue","maxValue","getBlobBuilder","BlobBuilder","WebKitBlobBuilder","getBlob","args","_i","bb","sliceBlob","blob","start","webkitSlice","mozSlice","slice","FbsBlob","elideCopy","blobType","data_","ArrayBuffer","byteLength","size_","type_","startByte","endByte","realBlob","sliced","buffer","blobby","val","uint8Arrays","finalLength_1","forEach","merged_1","index_1","uploadData","Location","path_","fullServerUrl","encodeURIComponent","bucketOnlyServerUrl","makeFromBucketSpec","bucketString","bucketLocation","makeFromUrl","bucketDomain","gsModify","loc","charAt","gsPath","gsRegex","RegExp","gsIndices","httpModify","version","firebaseStorageHost","firebaseStoragePath","firebaseStorageRegExp","firebaseStorageIndices","cloudStorageHost","cloudStoragePath","cloudStorageRegExp","cloudStorageIndices","groups","regex","indices","postModify","group","captures","exec","bucketValue","pathValue","jsonObjectOrNull","obj","parse","lastIndexOf","newPath","child","childPath","canonicalChildPath","split","filter","component","join","lastComponent","makeUrl","urlPart","makeQueryString","params","queryPart","nextPart","noXform_","metadata","Mapping","server","local","writable","xform","mappings_","xformPath","fullPath","getMappings","mappings","mappingsXformPath","_metadata","nameMapping","xformSize","sizeMapping","addRef","service","generateRef","makeStorageReference","fromResource","resource","len","mapping","fromResourceString","resourceString","downloadUrlFromResourceString","tokens","tokensList","urls","base","queryString","alt","toResourceString","PREFIXES_KEY","ITEMS_KEY","fromBackendResponse","listResult","prefixes","items","nextPageToken","pathWithoutTrailingSlash","reference","item","fromResponseString","RequestInfo","handler","urlParams","errorHandler","progressCallback","successCodes","additionalRetryCodes","handlerCheck","cndn","metadataHandler","xhr","text","listHandler","downloadUrlHandler","sharedErrorHandler","newErr","objectErrorHandler","shared","getMetadata","maxOperationRetryTime","requestInfo","list","delimiter","pageToken","maxResults","isRoot","getDownloadUrl","updateMetadata","deleteObject","_xhr","_text","determineContentType_","metadataForUpload_","metadataClone","multipartUpload","genBoundary","str","random","boundary","metadata_","metadataString","preBlobPart","postBlobPart","maxUploadRetryTime","ResumableUploadStatus","current","total","finalized","checkResumeHeader_","allowed","allowedStatus","createResumableUpload","metadataForUpload","getResumableUploadStatus","sizeString","resumableUploadChunkSize","continueResumableUpload","chunkSize","status_","bytesLeft","bytesToUpload","min","uploadCommand","uploadStatus","newCurrent","Observer","asFunctions","observer","UploadTaskSnapshot","bytesTransferred","totalBytes","task","ref","argsToForward","UploadTask","_transferred","_needToFetchStatus","_needToFetchMetadata","_observers","_error","_uploadUrl","_request","_chunkMultiplier","_resolve","_reject","_ref","_blob","_mappings","_resumable","_shouldDoResumable","_state","_errorHandler","completeTransitions_","_transition","_metadataErrorHandler","_promise","_start","_makeProgressCallback","sizeBefore","loaded","_updateProgress","_createResumable","_fetchStatus","_fetchMetadata","_continueUpload","_oneShotUpload","_resolveToken","storage","_location","createRequest","makeRequest","getPromise","statusRequest","uploadRequest","newStatus","_increaseMultiplier","currentSize","metadataRequest","multipartRequest","transferred","old","_notifyObservers","cancel","wasPaused","externalState","on","completed","_addObserver","_removeObserver","onFulfilled","onRejected","_notifyObserver","splice","_finishPromise","observers","triggered","snapshot","toCall","resume","pause","Reference","_service","newRef","_throwIfRoot","uploadBytesResumable","uploadString","listAll","accumulator","listAllHelper","opt","nextPage","list$1","getMetadata$1","updateMetadata$1","getDownloadURL","deleteObject$1","getChild","UploadTaskSnapshotCompat","_delegate","UploadTaskCompat","_snapshot","wrappedNextOrObserver","taskSnapshot","ListResultCompat","ReferenceCompat","root","parent","putString","FailRequest","promise_","_appDelete","waitSeconds","timeoutId","hitTimeout","cancelState","canceled","triggeredCallback","triggerCallback","callWithDelay","success","waitMillis","mustStop","stopped","stop","wasTimeout","id","NetworkRequest","errorCallback","pool","pendingXhr_","backoffId_","canceled_","appDelete_","url_","method_","headers_","body_","successCodes_","additionalRetryCodes_","callback_","errorCallback_","progressCallback_","timeout_","pool_","resolve_","reject_","start_","doTheRequest","backoffCallback","RequestEndStatus","progressListener","hitServer","isRetryStatusCode_","successCode","wasCanceled","progressEvent","lengthComputable","backoffDone","requestWentThrough","wasSuccessCode","appDelete","isFiveHundredCode","extraRetryCodes","isExtraRetryCode","isRequestSpecificRetryCode","addAuthHeader_","addVersionHeader_","SDK_VERSION","addGmpidHeader_","isUrl","refFromURL","refFromPath","_bucket","serviceOrRef","pathOrUrl","extractBucket","config","StorageService","_authProvider","_pool","_appId","_deleted","_maxOperationRetryTime","_maxUploadRetryTime","_requests","time","POSITIVE_INFINITY","tokenData","_delete","request_1","StorageServiceCompat","setMaxUploadRetryTime","setMaxOperationRetryTime","STORAGE_TYPE","storageServiceCompat","registerStorage","Storage","apiInstance","windowInstance","TRACE_START_MARK_PREFIX","TRACE_STOP_MARK_PREFIX","TRACE_MEASURE_PREFIX","OOB_TRACE_PAGE_LOAD_PREFIX","FIRST_PAINT_COUNTER_NAME","FIRST_CONTENTFUL_PAINT_COUNTER_NAME","FIRST_INPUT_DELAY_COUNTER_NAME","CONFIG_LOCAL_STORAGE_KEY","CONFIG_EXPIRY_LOCAL_STORAGE_KEY","consoleLogger","logLevel","INFO","settingsServiceInstance","Api","performance","PerformanceObserver","windowLocation","document","localStorage","perfMetrics","onFirstInputDelay","getUrl","mark","measure","measureName","mark1","mark2","getEntriesByType","getEntriesByName","getTimeOrigin","timeOrigin","timing","navigationStart","requiredApisAvailable","info","setupObserver","entryType","getEntries","observe","entryTypes","getInstance","setupApi","mergeStrings","part1","part2","sizeDiff","resultArray","iid","VisibilityState","SettingsService","instrumentationEnabled","dataCollectionEnabled","loggingEnabled","tracesSamplingRate","networkRequestsSamplingRate","logEndPointUrl","flTransportEndpointUrl","transportKey","logSource","logTraceAfterSampling","logNetworkAfterSampling","configTimeToLive","getAppId","firebaseAppInstance","getProjectId","getApiKey","getFlTransportFullUrl","getIidPromise","iidPromise","installationsService","iidVal","getIid","getAuthTokenPromise","authTokenPromise","authTokenVal","RESERVED_ATTRIBUTE_PREFIXES","ATTRIBUTE_FORMAT_REGEX","MAX_ATTRIBUTE_NAME_LENGTH","MAX_ATTRIBUTE_VALUE_LENGTH","getServiceWorkerStatus","controller","getVisibilityState","VISIBLE","HIDDEN","getEffectiveConnectionType","navigatorConnection","connection","effectiveType","isValidCustomAttributeName","matchesReservedPrefix","prefix","isValidCustomAttributeValue","REMOTE_CONFIG_SDK_VERSION","DEFAULT_CONFIGS","FIS_AUTH_PREFIX","getConfig","getStoredConfig","processConfig","getRemoteConfig","storeConfig","expiryString","getItem","configValid","configStringified","configResponse","setItem","COULD_NOT_GET_CONFIG_MSG","configEndPoint","Request","Authorization","app_instance_id","app_instance_id_token","app_id","app_version","sdk_version","entries","fpr_enabled","fpr_log_source","fpr_log_endpoint_url","fpr_log_transport_key","fpr_vc_network_request_sampling_rate","fpr_vc_trace_sampling_rate","shouldLogAfterSampling","expiry","samplingRate","initializationStatus","getInitializationPromise","initializePerf","isPerfInitialized","getDocumentReadyComplete","changeInitializationStatus","readyState","handler_1","DEFAULT_SEND_INTERVAL_MS","INITIAL_SEND_TIME_DELAY_MS","DEFAULT_REMAINING_TRIES","remainingTries","queue","isTransportSetup","setupTransportService","processQueue","timeOffset","dispatchQueueEvents","staged","log_event","evt","source_extension_json_proto3","event_time_ms","eventTime","request_time_ms","client_info","client_type","js_client_info","log_source","sendEventsToFl","postToFlEndpoint","res","transportWait","nextRequestWaitMillis","requestOffset","max","logResponseDetails","responseAction","flTransportFullUrl","addToQueue","transportHandler","sendLog","resourceType","logTrace","trace","settingsService","isAuto","sendTraceLog","logNetworkRequest","networkRequest","networkRequestUrl","logEndpointUrl","flEndpointUrl","serializeNetworkRequest","serializeTrace","networkRequestMetric","http_method","httpMethod","http_response_code","response_payload_bytes","responsePayloadBytes","client_start_time_us","startTimeUs","time_to_response_initiated_us","timeToResponseInitiatedUs","time_to_response_completed_us","timeToResponseCompletedUs","perfMetric","application_info","getApplicationInfo","network_request_metric","traceMetric","is_auto","duration_us","durationUs","keys","counters","customAttributes","getAttributes","custom_attributes","trace_metric","google_app_id","web_app_info","page_url","service_worker_status","visibility_state","effective_connection_type","application_process_state","MAX_METRIC_NAME_LENGTH","RESERVED_AUTO_PREFIX","oobMetrics","isValidMetricName","traceName","convertMetricValueToInteger","providedValue","valueAsInteger","Trace","traceMeasureName","api","randomId","traceStartMark","traceStopMark","traceMeasure","calculateTraceMetrics","record","startTime","duration","attributes","metrics","metric","incrementMetric","counter","numAsInteger","putMetric","customMetricName","getMetric","putAttribute","attr","isValidName","isValidValue","attributeName","attributeValue","getAttribute","removeAttribute","setStartTime","setDuration","perfMeasureEntries","perfMeasureEntry","createOobTrace","navigationTimings","paintTimings","firstInputDelay","route","timeOriginUs","domInteractive","domContentLoadedEventEnd","loadEventEnd","FIRST_PAINT","FIRST_CONTENTFUL_PAINT","firstPaint","find","paintObject","firstContentfulPaint","createUserTimingTrace","createNetworkRequestEntry","performanceEntry","responseStart","responseEnd","transferSize","FID_WAIT_TIME_MS","setupOobResources","setupOobTraces","setupNetworkRequests","setupUserTimingTraces","resources","resources_1","timeoutId_1","measures","measures_1","PerformanceController","isAvailable","DEFAULT_ENTRY_NAME","registerPerformance","factoryMethod","GtagCommand","EventName","GA_FID_KEY","ORIGIN_KEY","FETCH_TIMEOUT_MILLIS","DYNAMIC_CONFIG_URL","GTAG_URL","gtagFunction","initializationPromise","eventName","eventParams","measurementId","global","EVENT","setCurrentScreen","screenName","SET","CONFIG","setUserId","setUserProperties","properties","flatProperties","setAnalyticsCollectionEnabled","enabled","insertScriptTag","dataLayerName","script","createElement","src","async","head","appendChild","getOrCreateDataLayer","dataLayer","gtagOnConfig","gtagCore","initializationPromisesMap","dynamicConfigPromisesList","measurementIdToAppId","gtagParams","correspondingAppId","dynamicConfigResults","foundConfig","all","gtagOnEvent","initializationPromisesToWaitFor","gaSendToList","_loop_1","gaSendToList_1","sendToId","state_1","values","wrapGtag","gtagWrapper","command","idOrNameOrParams","e_3","wrapOrCreateGtag","gtagFunctionName","_args","wrappedGtag","findGtagScriptOnPage","scriptTags","getElementsByTagName","tag","ERRORS","LONG_RETRY_FACTOR","BASE_INTERVAL_MILLIS","RetryData","throttleMetadata","intervalMillis","getThrottleMetadata","setThrottleMetadata","deleteThrottleMetadata","defaultRetryData","fetchDynamicConfig","appFields","appUrl","errorMessage","jsonResponse","httpStatus","responseMessage","fetchDynamicConfigWithRetry","retryData","timeoutMillis","signal","backoffCount","throttleEndTimeMillis","AnalyticsAbortSignal","attemptFetchDynamicConfigWithRetry","backoffMillis","setAbortableTimeout","isRetriableError","listeners","validateIndexedDB","initializeIds","dynamicConfigPromise","fidPromise","dynamicConfig","configProperties","envIsValid","gtagCoreFunction","wrappedGtagFunction","gtagName","globalInitDone","settings","warnOnBrowserContextMismatch","mismatchedEnvMessages","analyticsInstance","ANALYTICS_TYPE","registerAnalytics","internalFactory","reason","isDBOpenable","CachingClient","storageCache","logger","isCachedDataFresh","cacheMaxAgeMillis","lastSuccessfulFetchTimestampMillis","cacheAgeMillis","lastSuccessfulFetchResponse","storageOperations","getLastSuccessfulFetchTimestampMillis","getLastSuccessfulFetchResponse","eTag","setLastSuccessfulFetchTimestampMillis","setLastSuccessfulFetchResponse","hasErrorCode","errorCode","getUserLanguage","navigatorLanguage","languages","language","RestClient","firebaseInstallations","namespace","installationId","installationToken","urlBase","requestBody","fetchPromise","timeoutPromise","originalError_1","responseEtag","responseBody","originalError_2","FIREBASE_REMOTE_CONFIG_URL_BASE","language_code","originalErrorMessage","RemoteConfigAbortSignal","DEFAULT_VALUE_FOR_BOOLEAN","DEFAULT_VALUE_FOR_STRING","DEFAULT_VALUE_FOR_NUMBER","BOOLEAN_TRUTHY_VALUES","Value","_source","_value","asString","asBoolean","toLowerCase","asNumber","num","getSource","DEFAULT_FETCH_TIMEOUT_MILLIS","DEFAULT_CACHE_MAX_AGE_MILLIS","RemoteConfig","_client","_storageCache","_storage","_logger","_isInitializationComplete","fetchTimeoutMillis","minimumFetchIntervalMillis","defaultConfig","setLogLevel","DEBUG","SILENT","getLastFetchStatus","activate","activeConfigEtag","getActiveConfigEtag","setActiveConfig","setActiveConfigEtag","ensureInitialized","_initializePromise","loadFromStorage","abortSignal","lastFetchStatus","setLastFetchStatus","fetchAndActivate","getAll","getAllKeys","getActiveConfig","reduce","allConfigs","getValue","getBoolean","getNumber","getString","activeConfig","obj1","obj2","toFirebaseError","originalError","target","APP_NAMESPACE_STORE","DB_NAME","DB_VERSION","openDatabase","onerror","onsuccess","onupgradeneeded","keyPath","openDbPromise","timestamp","etag","compositeKey","createCompositeKey","StorageCache","lastFetchStatusPromise","lastSuccessfulFetchTimestampMillisPromise","activeConfigPromise","timestampMillis","RetryingClient","attemptFetch","registerRemoteConfig","firebaseInstance","remoteConfigFactory","restClient","retryingClient","cachingClient","remoteConfigInstance","name$1","version$1","module","exports","__assign","__values","__read","__spread","toArray","arr","promisifyRequest","promisifyRequestCall","promisifyCursorRequestCall","Cursor","proxyProperties","ProxyClass","targetProp","prop","proxyRequestMethods","Constructor","proxyMethods","proxyCursorRequestMethods","Index","_index","cursor","_cursor","ObjectStore","_store","Transaction","idbTransaction","_tx","oncomplete","onabort","UpgradeDB","_db","DB","openDb","upgradeCallback","deleteDb","IDBIndex","IDBCursor","methodName","createIndex","IDBObjectStore","IDBTransaction","IDBDatabase","funcName","nativeObject","query","count","iterateCursor","continue","__spreadArrays","persistenceKey","ssl","forceLongPolling","database","isEqual","I","E","T","A","N","WARN","S","D","O","u","V","C","every","L","R","M","U","q","h","l","has","F","B","seconds","nanoseconds","fromMillis","fromDate","getTime","toDate","toMillis","toJSON","padStart","z","G","segments","offset","limit","K","$","Q","W","Y","H","J","X","isInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","collectionGroup","orderBy","filters","startAt","endAt","Z","tt","field","Qt","dir","Xn","et","nr","Bt","Zn","nt","rt","fromBase64String","fromUint8Array","toBase64","toUint8Array","it","ot","ut","targetId","sequenceNumber","lastLimboFreeSnapshotVersion","resumeToken","st","at","ct","ht","lt","EMPTY","copy","left","right","ft","_t","dt","wt","Tt","Et","It","At","color","RED","Rt","Pt","gt","Vt","yt","vt","bt","St","Dt","Ct","pow","pt","first","last","Nt","xt","Ft","Ot","Mt","mt","kt","$t","Lt","track","doc","qt","docs","Ut","docChanges","fromCache","Kt","Wt","jt","Rn","Gt","zt","Ht","Jt","Yt","Xt","Zt","te","ee","ne","se","removedTargetIds","ie","re","targetIds","cause","oe","ae","ce","ue","he","fe","de","we","Te","Ee","Ie","me","Ae","Re","Pe","ge","Ve","ye","pe","bn","ve","_n","be","Se","De","Ce","Ne","le","removeTarget","xe","Fe","Oe","Me","ke","$e","_e","Le","Be","qe","mapValue","fields","__type__","stringValue","__previous_value__","__local_write_time__","timestampValue","nanos","booleanValue","bytesValue","referenceValue","geoPointValue","latitude","longitude","integerValue","doubleValue","arrayValue","sort","asc","desc","in","Ue","toISOString","proto","an","dn","cn","updateMask","Qe","transform","fieldTransforms","fieldPath","setToServerValue","ze","appendMissingElements","elements","Ke","removeAllFromArray","We","increment","vn","verify","je","currentDocument","updateTime","exists","Ze","Ge","yn","fieldPaths","Je","Xe","documents","structuredQuery","collectionId","allDescendants","unaryFilter","fieldFilter","compositeFilter","where","direction","tr","Tn","before","position","Jn","jn","NaN","nullValue","Ye","He","transformResults","tn","en","nn","hasCommittedMutations","In","hn","ln","pn","rn","sn","gn","un","empty","mn","wn","En","limitType","Nn","xn","An","Sn","kn","Dn","On","Pn","Vn","Cn","Ln","Mn","Un","qn","$n","Fn","er","Bn","Qn","Wn","Yn","Hn","zn","Gn","Kn","rr","ir","reset","or","ur","lr","deleteDatabase","process","onblocked","createOrUpgrade","onversionchange","runTransaction","hr","sr","cr","aborted","dr","fr","ts","es","ns","ss","primaryKey","range","reverse","openKeyCursor","openCursor","pr","vr","yr","gr","rs","os","cs","us","hs","ls","_s","fs","mr","ds","ws","Ts","Es","Is","As","Rs","Ps","gs","enqueue","ys","ps","vs","bs","Ss","Ds","shift","stack","Cs","Ns","xs","Fs","Os","Ms","wr","br","ks","_r","queries","onlineState","$s","Ir","Ls","onError","Bs","qs","xr","Er","Us","Tr","Nr","Ar","Qs","Ks","Ws","includeMetadataChanges","js","Gs","zs","Hs","hasPendingWrites","Sr","uid","Js","Ys","Xs","Zs","kr","user","ti","Dr","ei","ni","si","ii","Or","ri","currentUser","oi","ai","ci","addAuthTokenListener","removeAuthTokenListener","getUid","Pr","ui","getAuthHeaderValueForFirstParty","Vr","Cr","batchId","li","baseMutations","mutations","fi","di","wi","Lr","batch","Ti","Ei","Rr","Ii","mi","Ai","readTime","Ri","Pi","gi","Vi","yi","pi","vi","bi","Mr","Ur","qr","Fr","Si","Di","Ci","jr","Ni","xi","Fi","Oi","Mi","ki","$i","Li","Bi","qi","Ui","Qi","Ki","Wi","ji","Gi","zi","Br","Hi","Ji","Yi","zr","previousValue","Xi","Zi","Gr","Kr","Qr","Wr","Yr","Io","Hr","Jr","$r","Xr","Zr","noDocument","unknownDocument","localWriteTimeMs","lastListenSequenceNumber","userId","IDBKeyRange","bound","NEGATIVE_INFINITY","userMutationsIndex","PLACEHOLDER","lowerBound","upperBound","prefixForPath","eo","no","prefixForUser","so","io","only","byteSize","ro","oo","ao","co","uo","ho","collectionReadTimeIndex","_o","fo","wo","To","Eo","autoIncrement","userMutationsKeyPath","unique","deleteObjectStore","removeAcknowledgedMutations","addDocumentGlobal","ensureSequenceNumbers","createCollectionParentIndex","readTimeIndex","readTimeIndexPath","collectionReadTimeIndexPath","rewriteCanonicalIds","lastAcknowledgedBatchId","highestListenSequenceNumber","ownerId","allowTabSynchronization","leaseTimestampMs","lastStreamToken","parentPath","canonicalId","queryTargetsIndexName","queryTargetsKeyPath","documentTargetsIndex","documentTargetsKeyPath","highestTargetId","lastRemoteSnapshotVersion","targetCount","clientId","updateTimeMs","networkEnabled","inForeground","bundleId","bundledQuery","mo","Ao","Ro","Po","Vo","yo","po","vo","bo","So","Do","Co","No","xo","Fo","Oo","Mo","ko","$o","Lo","Bo","qo","Uo","Qo","Ko","Wo","jo","to","Go","zo","Ho","Jo","Yo","isPrimary","Xo","Zo","ta","ea","na","sa","ia","ra","oa","aa","ca","ua","ha","la","fa","newVersion","da","wa","Ta","Ea","Ia","ma","Aa","Ra","Pa","ga","removeItem","Va","ya","pa","va","ba","Sa","Da","Ca","Na","xa","Fa","Oa","Ma","ka","$a","La","Ba","qa","persistence","Ua","Qa","Ka","Wa","ja","Ga","za","Ha","Ja","Ya","go","Xa","Za","tc","ec","nc","sc","ic","stream","rc","oc","ac","cc","uc","hc","lc","fc","dc","wc","Tc","Ec","Ic","mc","Ac","targetChange","targetChangeType","documentChange","documentDelete","w","documentRemove","Rc","Pc","addTarget","labels","gc","Vc","vc","streamToken","writeResults","commitTime","bc","Sc","Dc","writes","credentials","Cc","Nc","xc","Fc","terminate","Oc","Mc","kc","$c","Lc","Bc","qc","Uc","Qc","Kc","Wc","jc","Gc","zc","Hc","Jc","Yc","Xc","Zc","tu","eu","nu","yc","su","iu","ru","ou","au","cu","uu","hu","lu","_u","fu","du","wu","Tu","Eu","Iu","mu","activeTargetIds","Au","Ru","Pu","gu","Vu","yu","pu","vu","bu","Su","Du","Cu","Nu","xu","Fu","Ou","Mu","ku","$u","Lu","Bu","qu","Uu","Qu","Ku","Wu","ju","Gu","zu","Hu","Ju","Yu","Xu","Zu","th","eh","nh","storageArea","sh","ih","rh","oh","ah","uh","hh","lh","_h","fh","dh","wh","Th","Eh","Ih","mh","Ah","Rh","gh","Vh","yh","ph","bh","Sh","Dh","Ch","Nh","xh","view","Fh","Oh","Mh","kh","$h","Lh","Bh","qh","Uh","Qh","Kh","Wh","jh","Gh","zh","Hh","Jh","Yh","Xh","Ph","Zh","tl","el","nl","sl","rl","ol","al","cl","ul","hl","ll","_l","fl","dl","wl","Tl","El","Il","ml","Al","Rl","Pl","gl","Vl","yl","is","pl","vl","bl","Sl","Dl","Cl","Nl","xl","BatchGetDocuments","Commit","RunQuery","Ll","listenOnce","COMPLETE","getLastErrorCode","getResponseJson","TIMEOUT","HTTP_ERROR","Ol","httpSessionIdParam","initMessageHeaders","messageUrlParams","sendRawJson","supportsCrossDomainXhr","internalChannelParams","forwardChannelRequestTimeoutMs","detectBufferingProxy","$l","httpHeadersOverwriteParam","createWebChannel","listen","EventType","OPEN","CLOSE","MESSAGE","Fl","Ml","kl","Bl","ql","Ul","Ql","Kl","Wl","as","synchronizeTabs","initialize","Gl","zl","Hl","Jl","Yl","Xl","cacheSizeBytes","forceOwnership","Zl","t_","e_","n_","s_","muted","i_","r_","o_","merge","mergeFields","a_","c_","u_","h_","l_","ignoreUndefinedProperties","f_","d_","w_","T_","E_","experimentalForceLongPolling","experimentalAutoDetectLongPolling","Vs","I_","m_","A_","R_","P_","g_","V_","y_","p_","firestore","v_","b_","S_","D_","C_","N_","x_","fromFirestore","F_","withConverter","M_","O_","k_","L_","B_","q_","U_","Q_","K_","W_","j_","G_","getPrototypeOf","search","z_","H_","J_","Y_","X_","Z_","found","missing","tf","write","ef","commit","updateFunction","nf","run","sf","rf","af","cf","uf","getConfiguration","hf","lf","_f","ff","source","yf","df","Vf","pf","wf","Tf","Ef","If","Rf","Pf","sessionIndex","gf","DOMException","mf","Af","vf","serverTimestamps","bf","Sf","Df","oldIndex","newIndex","enableIndexedDbPersistence","enableMultiTabIndexedDbPersistence","clearIndexedDbPersistence","Cf","Nf","enableNetwork","disableNetwork","enablePersistence","experimentalForceOwningTab","clearPersistence","_removeServiceInstance","waitForPendingWrites","onSnapshotsInSync","collection","xf","Ff","Of","Mf","kf","$f","onSnapshot","Lf","limitToLast","Bf","startAfter","endBefore","toFirestore","documentId","serverTimestamp","arrayUnion","arrayRemove","Firestore","GeoPoint","Timestamp","WriteBatch","DocumentReference","DocumentSnapshot","Query","QueryDocumentSnapshot","QuerySnapshot","CollectionReference","FieldPath","FieldValue","CACHE_SIZE_UNLIMITED","commonjsGlobal","globalThis","goog","unshift","Function","trim","userAgent","documentMode","parseFloat","parseInt","defaultPrevented","relatedTarget","button","screenY","screenX","clientY","clientX","metaKey","shiftKey","altKey","ctrlKey","pointerId","pointerType","changedTouches","srcElement","nodeName","fromElement","toElement","pageX","pageY","2","3","4","preventDefault","returnValue","keyCode","proxy","capture","ab","cb","eb","fb","hb","once","ib","jb","kb","lb","mb","attachEvent","nb","addListener","removeListener","ob","pb","rb","detachEvent","sb","tb","handleEvent","ub","dispatchEvent","vb","wb","Db","yb","class_1","xb","zb","Ab","Bb","Cb","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","gb","$b","pc","qb","abs","ad","bd","decodeURI","encodeURI","cd","dd","ed","fd","gd","hd","PerformanceNavigationTiming","nextHopProtocol","jd","kd","ld","md","nd","Image","onload","od","ontimeout","pd","qd","rd","sd","vd","td","wd","xd","yd","protocol","statusText","ud","onreadystatechange","zd","Ad","Bd","Cd","concurrentRequestLimit","fastHandshake","Dd","Ed","sendBeacon","Fd","Gd","Hd","Id","Kd","Jd","round","Ld","hostname","Md","Nd","messageHeaders","clientProtocolHeaderRequired","messageContentType","Od","__sm__","Pd","toUpperCase","FormData","responseType","withCredentials","__data__","getLastError","createWebChannelTransport","WebChannel","XhrIo","originalModule","webpackPolyfill","children","DOMStorageWrapper","domStorage_","prefix_","prefixedName_","storedVal","MemoryStorage","cache_","isInMemoryStorage","createStoragefor","domStorageName","domStorage","PersistentStorage","SessionStorage","logClient","LUIDGenerator","sha1","utf8Bytes","sha1Bytes","digest","encodeByteArray","buildLogMessage_","varArgs","arg","firstLog_","enableLogging","logger_","persistent","VERBOSE","log","logWrapper","fatal","warnIfPageIsSecure","isInvalidJSONNumber","executeWhenDOMReady","called_1","wrappedFn_1","MIN_NAME","MAX_NAME","nameCompare","aAsInt","tryParseInt","bAsInt","stringCompare","requireKey","ObjectToUniqueKey","splitStringBySize","segsize","dataSegs","each","doubleToIEEE754String","ebits","fbits","bias","Infinity","LN2","bits","hexByteString","hexByte","isChromeExtensionContentScript","isWindowsStoreApp","Windows","UI","errorForServerCode","INTEGER_REGEXP_","intVal","exceptionGuard","beingCrawled","setTimeoutNonBlocking","Path","pathOrString","pieceNum","pieces_","copyTo","pieceNum_","getFront","getLength","popFront","getBack","pathString","toUrlEncodedString","begin","pieces","childPathObj","childPieces","isEmpty","relativePath","outerPath","innerPath","outer","inner","comparePaths","leftKeys","rightKeys","cmp","equals","other","ValidationPath","errorPrefix_","parts_","byteLength_","checkValid_","MAX_PATH_LENGTH_BYTES","MAX_PATH_DEPTH","toErrorString","PROTOCOL_VERSION","VERSION_PARAM","TRANSPORT_SESSION_PARAM","REFERER_PARAM","FORGE_REF","FORGE_DOMAIN","LAST_SESSION_PARAM","APPLICATION_ID_PARAM","WEBSOCKET","LONG_POLLING","RepoInfo","secure","webSocketOnly","nodeAdmin","includeNamespaceInQueryParams","domain","internalHost","needsQueryParam","isCustomHost","isCacheableHost","isDemoHost","updateHost","newHost","connectionURL","connURL","pairs","toURLString","decodePath","pathStringDecoded","piece","decodeQuery","results","segment","kv","__EMPTY_NODE","MAX_NODE","parseRepoInfo","parsedUrl","parseDatabaseURL","scheme","repoInfo","subdomain","colonInd","slashInd","questionMarkInd","queryParams","hostWithoutPort","dotInd","INVALID_KEY_REGEX_","INVALID_PATH_REGEX_","MAX_LEAF_SIZE_","isValidKey","isValidPathString","isValidRootPathString","isValidPriority","priority","validateFirebaseDataArg","fnName","argumentNumber","validateFirebaseData","errorPrefix","hasDotValue_1","hasActualChild_1","validateFirebaseMergePaths","mergePaths","curPath","prevPath","validateFirebaseMergeDataArg","errorPrefix$1","validatePriority","validateEventType","validateKey","validatePathString","validateRootPathString","validateWritablePath","validateUrl","validateBoolean","bool","OnDisconnect","repo_","onComplete","deferred","onDisconnectCancel","wrapCallback","onDisconnectSet","setWithPriority","onDisconnectSetWithPriority","objectToMerge","newObjectToMerge","onDisconnectUpdate","TransactionResult","committed","nextPushId","PUSH_CHARS","lastPushTime","lastRandChars","duplicateTime","timeStampChars","NamedNode","node","Wrap","getCompare","compare","indexedValueChanged","oldNode","newNode","oldWrapped","newWrapped","minPost","MIN","KeyIndex","isDefinedOn","maxPost","makePost","indexValue","KEY_INDEX","setMaxNode","__childrenNodeConstructor","nodeFromJSON","MAX_NODE$1","priorityHashText","validatePriorityNode","priorityNode","isLeafNode","getPriority","LeafNode","value_","priorityNode_","EMPTY_NODE","lazyHash_","updatePriority","newPriorityNode","getImmediateChild","childName","hasChild","getPredecessorChildName","childNode","updateImmediateChild","newChildNode","updateChild","front","numChildren","forEachChild","exportFormat","hash","toHash","compareTo","compareToLeafNode_","otherLeaf","otherLeafType","thisLeafType","otherIndex","VALUE_TYPE_ORDER","thisIndex","withIndex","isIndexed","setNodeFromJSON","setMaxNode$1","_defaultIndexMap","PriorityIndex","aPriority","bPriority","indexCmp","PRIORITY_INDEX","SortedMapIterator","startKey","comparator","isReverse_","resultGenerator_","nodeStack_","getNext","hasNext","peek","LLRBNode","SortedMap","inorderTraversal","reverseTraversal","min_","minKey","maxKey","insert","fixUp_","removeMin_","isRed_","moveRedLeft_","smallest","rotateRight_","moveRedRight_","rotateLeft_","colorFlip_","checkMaxDepth_","blackDepth","check_","BLACK","LLRBEmptyNode","comparator_","root_","getPredecessorKey","rightParent","getIterator","resultGenerator","getIteratorFrom","getReverseIteratorFrom","getReverseIterator","LOG_2","Base12Num","logBase2","bitMask","current_","mask","bits_","nextBitIsOne","buildChildSet","childList","keyFn","mapSortFn","buildBalancedTree","low","high","namedNode","buildFrom12Array","base12","buildPennant","childTree","attachPennant","pennant","isOne","fallbackObject","IndexMap","indexes_","indexSet_","indexKey","sortedMap","hasIndex","indexDefinition","addIndex","existingChildren","sawIndexedValue","iter","indexName","newIndexSet","newIndexes","addToIndexes","indexedChildren","existingSnap","newChildren","removeFromIndexes","NAME_ONLY_COMPARATOR","NAME_COMPARATOR","ChildrenNode","children_","indexMap_","Default","newIndexMap","newPriority","newImmediateChild","numKeys","allIntegerKeys","toHash_1","childHash","idx","resolveIndex_","predecessor","getFirstChildName","getFirstChild","getLastChildName","getLastChild","wrappedNode","startPost","endPost","MAX_NODE$2","otherChildrenNode","thisIter","otherIter","thisCurrent","otherCurrent","MaxNode","defineProperties","MAX","USE_HINZE","nodeFromJSON$1","jsonLeaf","node_1","childData","children_1","childrenHavePriority_1","hinzeJsonObj","childSet","sortedChildSet","__referenceConstructor","ValueIndex","valueNode","VALUE_INDEX","PathIndex","indexPath_","extractChild","snap","aChild","bChild","DataSnapshot","node_","ref_","index_","exportVal","childPathString","childRef","childrenNode","hasChildren","getRef","DataEvent","eventRegistration","prevName","getPath","getParent","getEventRunner","CancelEvent","ValueEventRegistration","cancelCallback_","context_","respondsTo","createEvent","change","getQueryParams","getIndex","snapshotNode","eventData","ctx","cancelCB_1","cb_1","createCancelEvent","hasAnyCallback","ChildEventRegistration","callbacks_","eventToCheck","cancelCB_2","cb_2","otherKeys","thisKeys","otherCount","thisCount","otherKey","thisKey","repo","queryParams_","orderByCalled_","validateQueryEndpoints_","startNode","endNode","hasStart","getIndexStartValue","hasEnd","getIndexEndValue","tooManyArgsError","wrongArgTypeError","startName","getIndexStartName","endName","getIndexEndName","validateLimit_","hasLimit","hasAnchoredLimit","validateNoPreviousOrderByCall_","cancelCallbackOrContext","ret","getCancelAndContextArgs_","onValueEvent","onChildEvent","cancelCallback","addEventCallbackForQuery","off","valueCallback","removeEventCallbackForQuery","userCallback","failureCallbackOrContext","firstCall","onceCallback","limitToFirst","orderByChild","parsedPath","newParams","orderByKey","orderByPriority","orderByValue","equalTo","queryObject","getQueryObject","queryIdentifier","sameRepo","samePath","sameQueryIdentifier","cancelOrContext","ExistingValueProvider","DeferredValueProvider","syncTree","syncTree_","calcCompleteEventCache","generateWithValues","resolveDeferredLeafValue","existingVal","serverValues","resolveScalarDeferredValue","resolveComplexDeferredValue","existing","unused","delta","existingNode","leaf","resolveDeferredValueTree","resolveDeferredValue","resolveDeferredValueSnapshot","rawPri","leafNode","OperationType","SparseSnapshotTree","childKey","remember","forget","self_1","tree","safeToRemove","forEachTree","prefixPath","func","emptyChildrenSingleton","__referenceConstructor$1","OperationSource","fromUser","fromServer","queryId","tagged","User","Server","forServerTaggedQuery","AckUserWrite","affectedTree","revert","ACK_USER_WRITE","operationForChild","subtree","Empty","EmptyChildren","ImmutableTree","fromObject","childSnap","findRootMostMatchingPathAndValue","predicate","childExistingPathAndValue","findRootMostValueAndPath","toSet","newChild","setTree","newTree","fold","fold_","pathSoFar","accum","findOnPath","findOnPath_","pathToFollow","nextChild","foreachOnPath","foreachOnPath_","currentRelativePath","foreach","foreach_","foreachChild","ListenComplete","LISTEN_COMPLETE","Overwrite","OVERWRITE","Merge","MERGE","CacheNode","fullyInitialized_","filtered_","isFullyInitialized","isFiltered","isCompleteForPath","isCompleteForChild","getNode","ViewCache","eventCache_","serverCache_","updateEventSnap","eventSnap","filtered","updateServerSnap","serverSnap","getEventCache","getCompleteEventSnap","getServerCache","getCompleteServerSnap","Change","oldSnap","valueChange","VALUE","childAddedChange","CHILD_ADDED","childRemovedChange","CHILD_REMOVED","childChangedChange","newSnapshot","oldSnapshot","CHILD_CHANGED","childMovedChange","CHILD_MOVED","IndexedFilter","affectedPath","optChangeAccumulator","oldChild","trackChildChange","updateFullNode","newSnap","filtersNodes","getIndexedFilter","ChildChangeAccumulator","changeMap","oldChange","oldType","getChanges","NoCompleteChildSource_","getCompleteChild","getChildAfterChild","NO_COMPLETE_CHILD_SOURCE","WriteTreeCompleteChildSource","writes_","viewCache_","optCompleteServerCache_","serverNode","calcCompleteChild","completeServerData","nodes","calcIndexedSlice","ProcessorResult","viewCache","changes","ViewProcessor","filter_","assertIndexed","applyOperation","oldViewCache","operation","writesCache","completeCache","newViewCache","filterServerNode","overwrite","applyUserOverwrite_","applyServerOverwrite_","applyUserMerge_","applyServerMerge_","ackUserWrite","revertUserWrite_","ackUserWrite_","listenComplete_","maybeAddValueEvent_","isLeafOrEmpty","oldCompleteSnap","generateEventCacheAfterServerEvent_","changePath","oldEventSnap","shadowingWrite","newEventCache","serverCache","completeChildren","completeEventChildren","calcCompleteEventChildren","completeNode","oldEventNode","updatedPriority","calcEventCacheAfterServerOverwrite","childChangePath","newEventChild","eventChildUpdate","changedSnap","newServerCache","oldServerSnap","serverFilter","newServerNode","newEventSnap","cacheHasChild_","changedChildren","curViewCache","writePath","applyMerge_","viewMergeTree","serverChild","childMergeTree","isUnknownDeepMerge","ackPath","changedChildren_1","changedChildren_2","mergePath","serverCachePath","oldServerNode","completeServerCache","oldEventCache","serverChildren","EventGenerator","query_","generateEventsForChanges","eventCache","eventRegistrations","events","moves","generateEventsForType_","registrations","filteredChanges","compareChanges_","materializedChange","materializeSingleChange_","aWrapped","bWrapped","View","initialViewCache","eventRegistrations_","indexFilter","getNodeFilter","processor_","initialServerCache","initialEventCache","eventGenerator_","getQuery","getCompleteServerCache","cache","loadsAllData","addEventRegistration","removeEventRegistration","cancelError","cancelEvents","path_1","maybeEvent","remaining","generateEventsForChanges_","getInitialEvents","initialChanges","eventNode","SyncPoint","views","optCompleteServerCache","serverCacheComplete","eventCacheComplete","removed","hadCompleteView","hasCompleteView","_d","viewQueryId","getQueryViews","e_3_1","e_4","e_4_1","viewForQuery","getCompleteView","viewExistsForQuery","e_5","e_5_1","CompoundWrite","writeTree_","addWrite","rootmost","rootMostPath","newWriteTree","addWrites","updates","newWrite","removeWrite","hasCompleteWrite","getCompleteNode","getCompleteChildren","childCompoundWrite","shadowingNode","applySubtreeWrite","writeTree","priorityWrite_1","WriteTree","visibleWrites_","allWrites_","lastWriteId_","childWrites","WriteTreeRef","addOverwrite","writeId","visible","addMerge","getWrite","findIndex","writeToRemove","removedWriteWasVisible","removedWriteOverlapsWithOtherWrites","currentWrite","recordContainsPath_","resetTree_","getCompleteWriteData","treePath","writeIdsToExclude","includeHiddenWrites","mergeAtPath","layerTree_","layeredCache","subMerge","completeServerChildren","topLevelSet","merge_1","existingEventSnap","existingServerSnap","childMerge","toIterate","writeRecord","DefaultFilter_","treeRoot","compoundWrite","deepNode","treePath_","existingServerCache","SyncTree","listenProvider_","syncPointTree_","pendingWriteTree_","tagToQueryMap","queryToTagMap","applyUserOverwrite","newData","applyOperationToSyncPoints_","applyUserMerge","changeTree","needToReevaluate","affectedTree_1","applyServerOverwrite","applyServerMerge","applyListenComplete","applyTaggedQueryOverwrite","queryKey","queryKeyForTag_","parseQueryKey_","queryPath","applyTaggedOperation_","applyTaggedQueryMerge","applyTaggedListenComplete","foundAncestorDefaultView","pathToSyncPoint","sp","syncPoint","childSyncPoint","viewAlreadyExists","makeQueryKey_","getNextQueryTag_","setupListener_","maybeSyncPoint","removedAndEvents","removingDefault","covered","parentSyncPoint","newViews","collectDistinctViewsForSubTree_","newQuery","createListenerForView_","startListening","queryForListening_","tagForQuery_","hashFn","defaultTag","stopListening","queryToRemove","tagToRemove","removeTags_","includeHiddenSets","maybeChildSyncPoint","childMap","completeView","views_1","_key","childViews","removedQuery","removedQueryKey","removedQueryTag","isDefault","queriesToStop","queries_1","childQueries","queryToStop","splitIndex","nextQueryTag_","applyOperationHelper_","syncPointTree","applyOperationDescendantsHelper_","childOperation","childServerCache","childWritesCache","SnapshotHolder","rootNode_","updateSnapshot","newSnapshotNode","StatsCollection","counters_","incrementCounter","amount","StatsManager","getCollection","hashString","collections_","getOrCreateReporter","creatorFunction","reporters_","StatsListener","collection_","last_","newStats","stat","FIRST_STATS_MIN_TIME","FIRST_STATS_MAX_TIME","REPORT_STATS_INTERVAL","StatsReporter","server_","statsToReport_","statsListener_","reportStats_","includeStat","stats","reportedStats","haveStatsToReport","reportStats","EventQueue","eventLists_","recursionDepth_","queueEvents","eventDataList","currList","eventPath","EventList","raiseEventsAtPath","raiseQueuedEventsMatchingPredicate_","raiseEventsForChangedPath","changedPath","sentAll","eventList","raise","events_","eventFn","EventEmitter","allowedEvents_","listeners_","trigger","validateEventType_","getInitialEvent","VisibilityMonitor","hidden","visibilityChange","visible_","OnlineMonitor","online_","currentlyOnline","PacketReceiver","onMessage_","pendingResponses","currentResponseNum","closeAfterResponse","onClose","closeAfter","responseNum","handleResponse","requestNum","toProcess","this_1","_loop_2","FIREBASE_LONGPOLL_START_PARAM","FIREBASE_LONGPOLL_CLOSE_COMMAND","FIREBASE_LONGPOLL_COMMAND_CB_NAME","FIREBASE_LONGPOLL_DATA_CB_NAME","FIREBASE_LONGPOLL_ID_PARAM","FIREBASE_LONGPOLL_PW_PARAM","FIREBASE_LONGPOLL_SERIAL_PARAM","FIREBASE_LONGPOLL_CALLBACK_ID_PARAM","FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM","FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET","FIREBASE_LONGPOLL_DATA_PARAM","FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM","MAX_URL_DATA_SIZE","SEG_HEADER_SIZE","MAX_PAYLOAD_SIZE","KEEPALIVE_REQUEST_INTERVAL","LP_CONNECT_TIMEOUT","BrowserPollConnection","connId","applicationId","transportSessionId","lastSessionId","bytesSent","bytesReceived","everConnected_","log_","stats_","urlFn","onDisconnect","curSegmentNum","onDisconnect_","myPacketOrderer","isClosed_","connectTimeoutTimer_","onClosed_","scriptTagHolder","FirebaseIFrameScriptHolder","arg1","arg2","incrementIncomingBytes_","password","sendNewPolls","pN","uniqueCallbackIdentifier","connectURL","addTag","startLongPoll","addDisconnectPingFrame","forceAllow","forceAllow_","forceDisallow","forceDisallow_","markConnectionHealthy","shutdown_","myDisconnFrame","removeChild","dataStr","base64data","enqueueSegment","pw","style","display","commandCB","onMessageCB","outstandingRequests","pendingSegs","currentSerial","myIFrame","createIFrame_","currentDomain","iframeContents","iframe","contentWindow","contentDocument","alive","innerHTML","myID","myPW","newRequest_","theURL","curDataString","nextSeg","theSeg","seg","addLongPollTag_","segnum","totalsegs","serial","doNewRequest","keepaliveTimeout","readyStateCB","loadCB","doNodeLongPoll","newScript_1","rstate","parentNode","setSDKVersion","WEBSOCKET_MAX_FRAME_SIZE","WEBSOCKET_KEEPALIVE_INTERVAL","WebSocketImpl","MozWebSocket","WebSocket","WebSocketConnection","keepaliveTimer","frames","totalFrames","connectionURL_","device","platform","env","mySock","onopen","onclose","handleIncomingFrame","isOldAndroid","oldAndroidRegex","oldAndroidMatch","previouslyFailed","appendFrame_","fullMess","jsonMess","handleNewFrameCount_","frameCount","extractFrameCount_","mess","resetKeepAlive","remainingData","sendString_","clearInterval","setInterval","responsesRequiredToBeHealthy","healthyTimeout","TransportManager","initTransports_","isWebSocketsAvailable","isSkipPollConnection","transports_","transports","ALL_TRANSPORTS","transport","initialTransport","upgradeTransport","UPGRADE_TIMEOUT","DELAY_BEFORE_SENDING_EXTRA_REQUESTS","BYTES_SENT_HEALTHY_OVERRIDE","BYTES_RECEIVED_HEALTHY_OVERRIDE","MESSAGE_TYPE","MESSAGE_DATA","CONTROL_SHUTDOWN","CONTROL_RESET","CONTROL_ERROR","CONTROL_PONG","SWITCH_ACK","END_TRANSMISSION","PING","SERVER_HELLO","Connection","repoInfo_","applicationId_","onReady_","onKill_","connectionCount","pendingDataMessages","state_","transportManager_","conn","conn_","nextTransportId_","primaryResponsesRequired_","onMessageReceived","connReceiver_","onConnectionLost","disconnReceiver_","tx_","rx_","secondaryConn_","isHealthy_","healthyTimeoutMS","healthyTimeout_","everConnected","onConnectionLost_","onSecondaryConnectionLost_","onPrimaryMessageReceived_","onSecondaryMessageReceived_","sendRequest","dataMsg","msg","sendData_","tryCleanupConnection","onSecondaryControl_","controlData","cmd","upgradeIfSecondaryHealthy_","secondaryResponsesRequired_","parsedData","layer","proceedWithUpgrade_","onControl_","onDataMessage_","onPrimaryResponse_","onHandshake_","onConnectionShutdown_","onReset_","sendPingOnPrimaryIfNecessary_","handshake","sessionId","onConnectionEstablished_","tryStartUpgrade_","startUpgrade_","closeConnections_","ServerActions","onDisconnectPut","onDisconnectMerge","RECONNECT_MIN_DELAY","RECONNECT_MAX_DELAY_DEFAULT","RECONNECT_MAX_DELAY_FOR_ADMINS","RECONNECT_DELAY_MULTIPLIER","RECONNECT_DELAY_RESET_TIMEOUT","SERVER_KILL_INTERRUPT_REASON","INVALID_AUTH_TOKEN_THRESHOLD","PersistentConnection","onDataUpdate_","onConnectStatus_","onServerInfoUpdate_","authTokenProvider_","authOverride_","nextPersistentConnectionId_","interruptReasons_","listens","outstandingPuts_","outstandingPutCount_","onDisconnectRequestQueue_","connected_","reconnectDelay_","maxReconnectDelay_","securityDebugCallback_","establishConnectionTimer_","requestCBHash_","requestNumber_","realtime_","authToken_","forceTokenRefresh_","invalidAuthTokenCount_","firstConnection_","lastConnectionAttemptTime_","lastConnectionEstablishedTime_","scheduleConnect_","onVisible_","onOnline_","onResponse","curReqNum","currentHashFn","listenSpec","sendListen_","req","warnOnListenWarnings_","currentListenSpec","removeListen_","warnings","indexSpec","indexPath","tryAuth","reduceReconnectDelayIfAdminCredential_","credential","isFirebaseSecret","token_1","authMethod","requestData","cred","onAuthRevoked_","unlisten","sendUnlisten_","queryObj","sendOnDisconnect_","putInternal","sendPut_","queued","errorReason","reqNum","onDataPush_","onListenRevoked_","onSecurityDebugPacket_","handleTimestamp_","sendConnectStats_","restoreState_","establishConnection_","online","onRealtimeDisconnect_","cancelSentTransactions_","shouldReconnect_","timeSinceLastConnectSucceeded","timeSinceLastConnectAttempt","reconnectDelay","onDataMessage_1","onReady_1","onDisconnect_1","connId_1","nextConnectionId_","lastSessionId_1","canceled_1","connection_1","closeFn_1","sendRequestFn","interrupt","serverTimeOffset","normalizedPathString","statusCode","explanation","notifyForInvalidToken","clientName","ReadonlyRestClient","listens_","getListenId_","listenId","thisListen","queryStringParameters","toRestQueryStringParameters","restRequest_","authTokenData","INTERRUPT_REASON","Repo","forceRestClient_","dataUpdateCount","eventQueue_","nextWriteId_","interceptServerDataCallback_","persistentConnection_","authOverride","addTokenChangeListener","statsReporter_","transactionsInit_","infoData_","infoSyncTree_","infoEvents","updateInfo_","serverSyncTree_","serverTime","offsetNode","generateServerValues","isMerge","taggedChildren","raw","taggedSnap","rerunTransactions_","interceptServerData_","connectStatus","runOnDisconnectEvents_","getNextWriteId_","newVal","newNodeUnresolved","clearEvents","callOnCompleteCallback","abortTransactions_","childrenToMerge","changedKey","changedValue","writeId_1","resolvedOnDisconnectTree","resolved","showDelta","longestName","currentValue","paddedStat","statsIncrementCounter","__database","Database","RangedFilter","indexedFilter_","startPost_","getStartPost_","endPost_","getEndPost_","getStartPost","getEndPost","LimitedFilter","rangedFilter_","limit_","getLimit","reverse_","isViewFromLeft","fullLimitUpdateChild_","inRange","indexCompare_1","foundStartPost","changeAccumulator","indexCmp_1","newChildNamedNode","windowBoundary","oldChildSnap","compareNext","remainsInWindow","nextChildInRange","QueryParams","limitSet_","startSet_","startNameSet_","endSet_","endNameSet_","viewFrom_","indexStartValue_","indexStartName_","indexEndValue_","indexEndName_","WIRE_PROTOCOL_CONSTANTS_","VIEW_FROM_LEFT","copy_","newLimit","VIEW_FROM_RIGHT","WIRE_PROTOCOL_CONSTANTS","INDEX_START_VALUE","INDEX_START_NAME","INDEX_END_VALUE","INDEX_END_NAME","LIMIT","viewFrom","VIEW_FROM","INDEX","REST_CONSTANTS","REST_QUERY_CONSTANTS_","ORDER_BY","START_AT","END_AT","LIMIT_TO_FIRST","LIMIT_TO_LAST","DEFAULT","getRoot","databaseProp","transactionUpdate","applyLocally","promiseComplete","startTransaction","setPriority","thennablePushRef","pushRef","TransactionStatus","TreeNode","childCount","Tree","name_","parent_","subTree","pathObj","setValue","updateParents_","forEachDescendant","includeSelf","childrenFirst","forEachAncestor","forEachImmediateDescendantWithValue","updateChild_","childEmpty","childExists","MAX_TRANSACTION_RETRIES_","transactionQueueTree_","watchRef","unwatcher","order","retryCount","abortReason","currentWriteId","currentInputSnapshot","currentOutputSnapshotRaw","currentOutputSnapshotResolved","currentState","getLatestState_","RUN","queueNode","nodeQueue","priorityForNode","currentNode","sendReadyTransactions_","excludeSets","pruneCompletedTransactionsBelowNode_","buildTransactionQueue_","allRun","sendTransactionQueue_","setsToIgnore","txn","latestState","snapToSend","latestHash","SENT","dataToSend","pathToSend","COMPLETED","SENT_NEEDS_ABORT","NEEDS_ABORT","rootMostTransactionNode","getAncestorTransactionNode_","rerunTransactionQueue_","txnsToRerun","abortTransaction","newDataNode","hasExplicitPriority","oldWriteId","newNodeResolved","lastInput","transactionNode","transactionQueue","aggregateTransactionQueuesForNode_","abortTransactionsOnNode_","lastSent","_staticInstance","FirebaseAuthTokenProvider","authProvider_","auth_","removeTokenChangeListener","EmulatorAdminTokenProvider","EMULATOR_AUTH_TOKEN","FIREBASE_DATABASE_EMULATOR_HOST_VAR","RepoManager","repos_","useRestClient_","dbUrl","applyEmulatorSettings","databaseFromApp","databaseURL","isEmulator","dbEmulatorHost","authTokenProvider","createRepo","deleteRepo","appRepos","forceRestClient","repoInternal_","instanceStarted_","checkDeleted_","rootInternal_","apiName","parsedURL","goOffline","goOnline","ServerValue","TIMESTAMP","forceWebSockets","setSecurityDebugCallback","interceptServerData","initStandalone","customAuthImpl","setComponent","freeze","DataConnection","simpleListen","echo","onEcho","RealTimeConnection","hijackHash","newHash","oldPut","ConnectionTarget","TEST_ACCESS","registerDatabase","render","_vm","$createElement","_self","staticClass","class","outlined","mode","backgroundColor","textColor","attrs","staticStyle","staticRenderFns","props","loading"],"mappings":"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","file":"js/chunk-cf14d2aa.00799e17.js","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import firebase from '@firebase/app';\nimport { __extends, __awaiter, __generator } from 'tslib';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Standard error codes for different ways a request can fail, as defined by:\r\n * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto\r\n *\r\n * This map is used primarily to convert from a backend error code string to\r\n * a client SDK error code string, and make sure it's in the supported set.\r\n */\r\nvar errorCodeMap = {\r\n OK: 'ok',\r\n CANCELLED: 'cancelled',\r\n UNKNOWN: 'unknown',\r\n INVALID_ARGUMENT: 'invalid-argument',\r\n DEADLINE_EXCEEDED: 'deadline-exceeded',\r\n NOT_FOUND: 'not-found',\r\n ALREADY_EXISTS: 'already-exists',\r\n PERMISSION_DENIED: 'permission-denied',\r\n UNAUTHENTICATED: 'unauthenticated',\r\n RESOURCE_EXHAUSTED: 'resource-exhausted',\r\n FAILED_PRECONDITION: 'failed-precondition',\r\n ABORTED: 'aborted',\r\n OUT_OF_RANGE: 'out-of-range',\r\n UNIMPLEMENTED: 'unimplemented',\r\n INTERNAL: 'internal',\r\n UNAVAILABLE: 'unavailable',\r\n DATA_LOSS: 'data-loss'\r\n};\r\n/**\r\n * An explicit error that can be thrown from a handler to send an error to the\r\n * client that called the function.\r\n */\r\nvar HttpsErrorImpl = /** @class */ (function (_super) {\r\n __extends(HttpsErrorImpl, _super);\r\n function HttpsErrorImpl(code, message, details) {\r\n var _this = _super.call(this, message) || this;\r\n // This is a workaround for a bug in TypeScript when extending Error:\r\n // tslint:disable-next-line\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(_this, HttpsErrorImpl.prototype);\r\n _this.code = code;\r\n _this.details = details;\r\n return _this;\r\n }\r\n return HttpsErrorImpl;\r\n}(Error));\r\n/**\r\n * Takes an HTTP status code and returns the corresponding ErrorCode.\r\n * This is the standard HTTP status code -> error mapping defined in:\r\n * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto\r\n *\r\n * @param status An HTTP status code.\r\n * @return The corresponding ErrorCode, or ErrorCode.UNKNOWN if none.\r\n */\r\nfunction codeForHTTPStatus(status) {\r\n // Make sure any successful status is OK.\r\n if (status >= 200 && status < 300) {\r\n return 'ok';\r\n }\r\n switch (status) {\r\n case 0:\r\n // This can happen if the server returns 500.\r\n return 'internal';\r\n case 400:\r\n return 'invalid-argument';\r\n case 401:\r\n return 'unauthenticated';\r\n case 403:\r\n return 'permission-denied';\r\n case 404:\r\n return 'not-found';\r\n case 409:\r\n return 'aborted';\r\n case 429:\r\n return 'resource-exhausted';\r\n case 499:\r\n return 'cancelled';\r\n case 500:\r\n return 'internal';\r\n case 501:\r\n return 'unimplemented';\r\n case 503:\r\n return 'unavailable';\r\n case 504:\r\n return 'deadline-exceeded';\r\n }\r\n return 'unknown';\r\n}\r\n/**\r\n * Takes an HTTP response and returns the corresponding Error, if any.\r\n */\r\nfunction _errorForResponse(status, bodyJSON, serializer) {\r\n var code = codeForHTTPStatus(status);\r\n // Start with reasonable defaults from the status code.\r\n var description = code;\r\n var details = undefined;\r\n // Then look through the body for explicit details.\r\n try {\r\n var errorJSON = bodyJSON && bodyJSON.error;\r\n if (errorJSON) {\r\n var status_1 = errorJSON.status;\r\n if (typeof status_1 === 'string') {\r\n if (!errorCodeMap[status_1]) {\r\n // They must've included an unknown error code in the body.\r\n return new HttpsErrorImpl('internal', 'internal');\r\n }\r\n code = errorCodeMap[status_1];\r\n // TODO(klimt): Add better default descriptions for error enums.\r\n // The default description needs to be updated for the new code.\r\n description = status_1;\r\n }\r\n var message = errorJSON.message;\r\n if (typeof message === 'string') {\r\n description = message;\r\n }\r\n details = errorJSON.details;\r\n if (details !== undefined) {\r\n details = serializer.decode(details);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // If we couldn't parse explicit error data, that's fine.\r\n }\r\n if (code === 'ok') {\r\n // Technically, there's an edge case where a developer could explicitly\r\n // return an error code of OK, and we will treat it as success, but that\r\n // seems reasonable.\r\n return null;\r\n }\r\n return new HttpsErrorImpl(code, description, details);\r\n}\n\n/**\r\n * Helper class to get metadata that should be included with a function call.\r\n */\r\nvar ContextProvider = /** @class */ (function () {\r\n function ContextProvider(authProvider, messagingProvider) {\r\n var _this = this;\r\n this.auth = null;\r\n this.messaging = null;\r\n this.auth = authProvider.getImmediate({ optional: true });\r\n this.messaging = messagingProvider.getImmediate({\r\n optional: true\r\n });\r\n if (!this.auth) {\r\n authProvider.get().then(function (auth) { return (_this.auth = auth); }, function () {\r\n /* get() never rejects */\r\n });\r\n }\r\n if (!this.messaging) {\r\n messagingProvider.get().then(function (messaging) { return (_this.messaging = messaging); }, function () {\r\n /* get() never rejects */\r\n });\r\n }\r\n }\r\n ContextProvider.prototype.getAuthToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.auth) {\r\n return [2 /*return*/, undefined];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.auth.getToken()];\r\n case 2:\r\n token = _a.sent();\r\n if (!token) {\r\n return [2 /*return*/, undefined];\r\n }\r\n return [2 /*return*/, token.accessToken];\r\n case 3:\r\n e_1 = _a.sent();\r\n // If there's any error when trying to get the auth token, leave it off.\r\n return [2 /*return*/, undefined];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n ContextProvider.prototype.getInstanceIdToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.messaging ||\r\n !('Notification' in self) ||\r\n Notification.permission !== 'granted') {\r\n return [2 /*return*/, undefined];\r\n }\r\n try {\r\n return [2 /*return*/, this.messaging.getToken()];\r\n }\r\n catch (e) {\r\n // We don't warn on this, because it usually means messaging isn't set up.\r\n // console.warn('Failed to retrieve instance id token.', e);\r\n // If there's any error when trying to get the token, leave it off.\r\n return [2 /*return*/, undefined];\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n ContextProvider.prototype.getContext = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken, instanceIdToken;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getAuthToken()];\r\n case 1:\r\n authToken = _a.sent();\r\n return [4 /*yield*/, this.getInstanceIdToken()];\r\n case 2:\r\n instanceIdToken = _a.sent();\r\n return [2 /*return*/, { authToken: authToken, instanceIdToken: instanceIdToken }];\r\n }\r\n });\r\n });\r\n };\r\n return ContextProvider;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar LONG_TYPE = 'type.googleapis.com/google.protobuf.Int64Value';\r\nvar UNSIGNED_LONG_TYPE = 'type.googleapis.com/google.protobuf.UInt64Value';\r\nfunction mapValues(\r\n// { [k: string]: unknown } is no longer a wildcard assignment target after typescript 3.5\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\no, f) {\r\n var result = {};\r\n for (var key in o) {\r\n if (o.hasOwnProperty(key)) {\r\n result[key] = f(o[key]);\r\n }\r\n }\r\n return result;\r\n}\r\nvar Serializer = /** @class */ (function () {\r\n function Serializer() {\r\n }\r\n // Takes data and encodes it in a JSON-friendly way, such that types such as\r\n // Date are preserved.\r\n Serializer.prototype.encode = function (data) {\r\n var _this = this;\r\n if (data == null) {\r\n return null;\r\n }\r\n if (data instanceof Number) {\r\n data = data.valueOf();\r\n }\r\n if (typeof data === 'number' && isFinite(data)) {\r\n // Any number in JS is safe to put directly in JSON and parse as a double\r\n // without any loss of precision.\r\n return data;\r\n }\r\n if (data === true || data === false) {\r\n return data;\r\n }\r\n if (Object.prototype.toString.call(data) === '[object String]') {\r\n return data;\r\n }\r\n if (Array.isArray(data)) {\r\n return data.map(function (x) { return _this.encode(x); });\r\n }\r\n if (typeof data === 'function' || typeof data === 'object') {\r\n return mapValues(data, function (x) { return _this.encode(x); });\r\n }\r\n // If we got this far, the data is not encodable.\r\n throw new Error('Data cannot be encoded in JSON: ' + data);\r\n };\r\n // Takes data that's been encoded in a JSON-friendly form and returns a form\r\n // with richer datatypes, such as Dates, etc.\r\n Serializer.prototype.decode = function (json) {\r\n var _this = this;\r\n if (json == null) {\r\n return json;\r\n }\r\n if (json['@type']) {\r\n switch (json['@type']) {\r\n case LONG_TYPE:\r\n // Fall through and handle this the same as unsigned.\r\n case UNSIGNED_LONG_TYPE: {\r\n // Technically, this could work return a valid number for malformed\r\n // data if there was a number followed by garbage. But it's just not\r\n // worth all the extra code to detect that case.\r\n var value = Number(json['value']);\r\n if (isNaN(value)) {\r\n throw new Error('Data cannot be decoded from JSON: ' + json);\r\n }\r\n return value;\r\n }\r\n default: {\r\n throw new Error('Data cannot be decoded from JSON: ' + json);\r\n }\r\n }\r\n }\r\n if (Array.isArray(json)) {\r\n return json.map(function (x) { return _this.decode(x); });\r\n }\r\n if (typeof json === 'function' || typeof json === 'object') {\r\n return mapValues(json, function (x) { return _this.decode(x); });\r\n }\r\n // Anything else is safe to return.\r\n return json;\r\n };\r\n return Serializer;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a Promise that will be rejected after the given duration.\r\n * The error will be of type HttpsErrorImpl.\r\n *\r\n * @param millis Number of milliseconds to wait before rejecting.\r\n */\r\nfunction failAfter(millis) {\r\n var timer;\r\n var promise = new Promise(function (_, reject) {\r\n timer = setTimeout(function () {\r\n reject(new HttpsErrorImpl('deadline-exceeded', 'deadline-exceeded'));\r\n }, millis);\r\n });\r\n return {\r\n timer: timer,\r\n promise: promise\r\n };\r\n}\r\n/**\r\n * The main class for the Firebase Functions SDK.\r\n */\r\nvar Service = /** @class */ (function () {\r\n /**\r\n * Creates a new Functions service for the given app and (optional) region or custom domain.\r\n * @param app_ The FirebaseApp to use.\r\n * @param regionOrCustomDomain_ one of:\r\n * a) A region to call functions from, such as us-central1\r\n * b) A custom domain to use as a functions prefix, such as https://mydomain.com\r\n */\r\n function Service(app_, authProvider, messagingProvider, regionOrCustomDomain_, fetchImpl) {\r\n var _this = this;\r\n if (regionOrCustomDomain_ === void 0) { regionOrCustomDomain_ = 'us-central1'; }\r\n this.app_ = app_;\r\n this.fetchImpl = fetchImpl;\r\n this.serializer = new Serializer();\r\n this.emulatorOrigin = null;\r\n this.INTERNAL = {\r\n delete: function () {\r\n return Promise.resolve(_this.deleteService());\r\n }\r\n };\r\n this.contextProvider = new ContextProvider(authProvider, messagingProvider);\r\n // Cancels all ongoing requests when resolved.\r\n this.cancelAllRequests = new Promise(function (resolve) {\r\n _this.deleteService = function () {\r\n return resolve();\r\n };\r\n });\r\n // Resolve the region or custom domain overload by attempting to parse it.\r\n try {\r\n var url = new URL(regionOrCustomDomain_);\r\n this.customDomain = url.origin;\r\n this.region = 'us-central1';\r\n }\r\n catch (e) {\r\n this.customDomain = null;\r\n this.region = regionOrCustomDomain_;\r\n }\r\n }\r\n Object.defineProperty(Service.prototype, \"app\", {\r\n get: function () {\r\n return this.app_;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Returns the URL for a callable with the given name.\r\n * @param name The name of the callable.\r\n */\r\n Service.prototype._url = function (name) {\r\n var projectId = this.app_.options.projectId;\r\n if (this.emulatorOrigin !== null) {\r\n var origin_1 = this.emulatorOrigin;\r\n return origin_1 + \"/\" + projectId + \"/\" + this.region + \"/\" + name;\r\n }\r\n if (this.customDomain !== null) {\r\n return this.customDomain + \"/\" + name;\r\n }\r\n return \"https://\" + this.region + \"-\" + projectId + \".cloudfunctions.net/\" + name;\r\n };\r\n /**\r\n * Modify this instance to communicate with the Cloud Functions emulator.\r\n *\r\n * Note: this must be called before this instance has been used to do any operations.\r\n *\r\n * @param host The emulator host (ex: localhost)\r\n * @param port The emulator port (ex: 5001)\r\n */\r\n Service.prototype.useEmulator = function (host, port) {\r\n this.emulatorOrigin = \"http://\" + host + \":\" + port;\r\n };\r\n /**\r\n * Changes this instance to point to a Cloud Functions emulator running\r\n * locally. See https://firebase.google.com/docs/functions/local-emulator\r\n *\r\n * @deprecated Prefer the useEmulator(host, port) method.\r\n * @param origin The origin of the local emulator, such as\r\n * \"http://localhost:5005\".\r\n */\r\n Service.prototype.useFunctionsEmulator = function (origin) {\r\n this.emulatorOrigin = origin;\r\n };\r\n /**\r\n * Returns a reference to the callable https trigger with the given name.\r\n * @param name The name of the trigger.\r\n */\r\n Service.prototype.httpsCallable = function (name, options) {\r\n var _this = this;\r\n return function (data) {\r\n return _this.call(name, data, options || {});\r\n };\r\n };\r\n /**\r\n * Does an HTTP POST and returns the completed response.\r\n * @param url The url to post to.\r\n * @param body The JSON body of the post.\r\n * @param headers The HTTP headers to include in the request.\r\n * @return A Promise that will succeed when the request finishes.\r\n */\r\n Service.prototype.postJSON = function (url, body, headers) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, e_1, json, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n headers['Content-Type'] = 'application/json';\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.fetchImpl(url, {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers: headers\r\n })];\r\n case 2:\r\n response = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n // This could be an unhandled error on the backend, or it could be a\r\n // network error. There's no way to know, since an unhandled error on the\r\n // backend will fail to set the proper CORS header, and thus will be\r\n // treated as a network error by fetch.\r\n return [2 /*return*/, {\r\n status: 0,\r\n json: null\r\n }];\r\n case 4:\r\n json = null;\r\n _a.label = 5;\r\n case 5:\r\n _a.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, response.json()];\r\n case 6:\r\n json = _a.sent();\r\n return [3 /*break*/, 8];\r\n case 7:\r\n e_2 = _a.sent();\r\n return [3 /*break*/, 8];\r\n case 8: return [2 /*return*/, {\r\n status: response.status,\r\n json: json\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Calls a callable function asynchronously and returns the result.\r\n * @param name The name of the callable trigger.\r\n * @param data The data to pass as params to the function.s\r\n */\r\n Service.prototype.call = function (name, data, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, body, headers, context, timeout, _a, timer, failAfterPromise, response, error, responseData, decodedData;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n url = this._url(name);\r\n // Encode any special types, such as dates, in the input data.\r\n data = this.serializer.encode(data);\r\n body = { data: data };\r\n headers = {};\r\n return [4 /*yield*/, this.contextProvider.getContext()];\r\n case 1:\r\n context = _b.sent();\r\n if (context.authToken) {\r\n headers['Authorization'] = 'Bearer ' + context.authToken;\r\n }\r\n if (context.instanceIdToken) {\r\n headers['Firebase-Instance-ID-Token'] = context.instanceIdToken;\r\n }\r\n timeout = options.timeout || 70000;\r\n _a = failAfter(timeout), timer = _a.timer, failAfterPromise = _a.promise;\r\n return [4 /*yield*/, Promise.race([\r\n clearTimeoutWrapper(timer, this.postJSON(url, body, headers)),\r\n failAfterPromise,\r\n clearTimeoutWrapper(timer, this.cancelAllRequests)\r\n ])];\r\n case 2:\r\n response = _b.sent();\r\n // If service was deleted, interrupted response throws an error.\r\n if (!response) {\r\n throw new HttpsErrorImpl('cancelled', 'Firebase Functions instance was deleted.');\r\n }\r\n error = _errorForResponse(response.status, response.json, this.serializer);\r\n if (error) {\r\n throw error;\r\n }\r\n if (!response.json) {\r\n throw new HttpsErrorImpl('internal', 'Response is not valid JSON object.');\r\n }\r\n responseData = response.json.data;\r\n // TODO(klimt): For right now, allow \"result\" instead of \"data\", for\r\n // backwards compatibility.\r\n if (typeof responseData === 'undefined') {\r\n responseData = response.json.result;\r\n }\r\n if (typeof responseData === 'undefined') {\r\n // Consider the response malformed.\r\n throw new HttpsErrorImpl('internal', 'Response is missing data field.');\r\n }\r\n decodedData = this.serializer.decode(responseData);\r\n return [2 /*return*/, { data: decodedData }];\r\n }\r\n });\r\n });\r\n };\r\n return Service;\r\n}());\r\nfunction clearTimeoutWrapper(timer, promise) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, promise];\r\n case 1:\r\n result = _a.sent();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n clearTimeout(timer);\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Type constant for Firebase Functions.\r\n */\r\nvar FUNCTIONS_TYPE = 'functions';\r\nfunction registerFunctions(instance, fetchImpl) {\r\n var namespaceExports = {\r\n // no-inline\r\n Functions: Service\r\n };\r\n function factory(container, regionOrCustomDomain) {\r\n // Dependencies\r\n var app = container.getProvider('app').getImmediate();\r\n var authProvider = container.getProvider('auth-internal');\r\n var messagingProvider = container.getProvider('messaging');\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return new Service(app, authProvider, messagingProvider, regionOrCustomDomain, fetchImpl);\r\n }\r\n instance.INTERNAL.registerComponent(new Component(FUNCTIONS_TYPE, factory, \"PUBLIC\" /* PUBLIC */)\r\n .setServiceProps(namespaceExports)\r\n .setMultipleInstances(true));\r\n}\n\nvar name = \"@firebase/functions\";\nvar version = \"0.6.1\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nregisterFunctions(firebase, fetch.bind(self));\r\nfirebase.registerVersion(name, version);\n//# sourceMappingURL=index.esm.js.map\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import firebase from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { __awaiter, __generator, __spread, __values, __assign } from 'tslib';\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { openDb } from 'idb';\n\nvar name = \"@firebase/installations\";\nvar version = \"0.4.19\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar PENDING_TIMEOUT_MS = 10000;\r\nvar PACKAGE_VERSION = \"w:\" + version;\r\nvar INTERNAL_AUTH_VERSION = 'FIS_v2';\r\nvar INSTALLATIONS_API_URL = 'https://firebaseinstallations.googleapis.com/v1';\r\nvar TOKEN_EXPIRATION_BUFFER = 60 * 60 * 1000; // One hour\r\nvar SERVICE = 'installations';\r\nvar SERVICE_NAME = 'Installations';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar _a;\r\nvar ERROR_DESCRIPTION_MAP = (_a = {},\r\n _a[\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */] = 'Missing App configuration value: \"{$valueName}\"',\r\n _a[\"not-registered\" /* NOT_REGISTERED */] = 'Firebase Installation is not registered.',\r\n _a[\"installation-not-found\" /* INSTALLATION_NOT_FOUND */] = 'Firebase Installation not found.',\r\n _a[\"request-failed\" /* REQUEST_FAILED */] = '{$requestName} request failed with error \"{$serverCode} {$serverStatus}: {$serverMessage}\"',\r\n _a[\"app-offline\" /* APP_OFFLINE */] = 'Could not process request. Application offline.',\r\n _a[\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */] = \"Can't delete installation while there is a pending registration request.\",\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\r\n/** Returns true if error is a FirebaseError that is based on an error from the server. */\r\nfunction isServerError(error) {\r\n return (error instanceof FirebaseError &&\r\n error.code.includes(\"request-failed\" /* REQUEST_FAILED */));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getInstallationsEndpoint(_a) {\r\n var projectId = _a.projectId;\r\n return INSTALLATIONS_API_URL + \"/projects/\" + projectId + \"/installations\";\r\n}\r\nfunction extractAuthTokenInfoFromResponse(response) {\r\n return {\r\n token: response.token,\r\n requestStatus: 2 /* COMPLETED */,\r\n expiresIn: getExpiresInFromResponseExpiresIn(response.expiresIn),\r\n creationTime: Date.now()\r\n };\r\n}\r\nfunction getErrorFromResponse(requestName, response) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var responseJson, errorData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, response.json()];\r\n case 1:\r\n responseJson = _a.sent();\r\n errorData = responseJson.error;\r\n return [2 /*return*/, ERROR_FACTORY.create(\"request-failed\" /* REQUEST_FAILED */, {\r\n requestName: requestName,\r\n serverCode: errorData.code,\r\n serverMessage: errorData.message,\r\n serverStatus: errorData.status\r\n })];\r\n }\r\n });\r\n });\r\n}\r\nfunction getHeaders(_a) {\r\n var apiKey = _a.apiKey;\r\n return new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': apiKey\r\n });\r\n}\r\nfunction getHeadersWithAuth(appConfig, _a) {\r\n var refreshToken = _a.refreshToken;\r\n var headers = getHeaders(appConfig);\r\n headers.append('Authorization', getAuthorizationHeader(refreshToken));\r\n return headers;\r\n}\r\n/**\r\n * Calls the passed in fetch wrapper and returns the response.\r\n * If the returned response has a status of 5xx, re-runs the function once and\r\n * returns the response.\r\n */\r\nfunction retryIfServerError(fn) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, fn()];\r\n case 1:\r\n result = _a.sent();\r\n if (result.status >= 500 && result.status < 600) {\r\n // Internal Server Error. Retry request.\r\n return [2 /*return*/, fn()];\r\n }\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n}\r\nfunction getExpiresInFromResponseExpiresIn(responseExpiresIn) {\r\n // This works because the server will never respond with fractions of a second.\r\n return Number(responseExpiresIn.replace('s', '000'));\r\n}\r\nfunction getAuthorizationHeader(refreshToken) {\r\n return INTERNAL_AUTH_VERSION + \" \" + refreshToken;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createInstallationRequest(appConfig, _a) {\r\n var fid = _a.fid;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var endpoint, headers, body, request, response, responseValue, registeredInstallationEntry;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n endpoint = getInstallationsEndpoint(appConfig);\r\n headers = getHeaders(appConfig);\r\n body = {\r\n fid: fid,\r\n authVersion: INTERNAL_AUTH_VERSION,\r\n appId: appConfig.appId,\r\n sdkVersion: PACKAGE_VERSION\r\n };\r\n request = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n return [4 /*yield*/, retryIfServerError(function () { return fetch(endpoint, request); })];\r\n case 1:\r\n response = _b.sent();\r\n if (!response.ok) return [3 /*break*/, 3];\r\n return [4 /*yield*/, response.json()];\r\n case 2:\r\n responseValue = _b.sent();\r\n registeredInstallationEntry = {\r\n fid: responseValue.fid || fid,\r\n registrationStatus: 2 /* COMPLETED */,\r\n refreshToken: responseValue.refreshToken,\r\n authToken: extractAuthTokenInfoFromResponse(responseValue.authToken)\r\n };\r\n return [2 /*return*/, registeredInstallationEntry];\r\n case 3: return [4 /*yield*/, getErrorFromResponse('Create Installation', response)];\r\n case 4: throw _b.sent();\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a promise that resolves after given time passes. */\r\nfunction sleep(ms) {\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction bufferToBase64UrlSafe(array) {\r\n var b64 = btoa(String.fromCharCode.apply(String, __spread(array)));\r\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar VALID_FID_PATTERN = /^[cdef][\\w-]{21}$/;\r\nvar INVALID_FID = '';\r\n/**\r\n * Generates a new FID using random values from Web Crypto API.\r\n * Returns an empty string if FID generation fails for any reason.\r\n */\r\nfunction generateFid() {\r\n try {\r\n // A valid FID has exactly 22 base64 characters, which is 132 bits, or 16.5\r\n // bytes. our implementation generates a 17 byte array instead.\r\n var fidByteArray = new Uint8Array(17);\r\n var crypto_1 = self.crypto || self.msCrypto;\r\n crypto_1.getRandomValues(fidByteArray);\r\n // Replace the first 4 random bits with the constant FID header of 0b0111.\r\n fidByteArray[0] = 112 + (fidByteArray[0] % 16);\r\n var fid = encode(fidByteArray);\r\n return VALID_FID_PATTERN.test(fid) ? fid : INVALID_FID;\r\n }\r\n catch (_a) {\r\n // FID generation errored\r\n return INVALID_FID;\r\n }\r\n}\r\n/** Converts a FID Uint8Array to a base64 string representation. */\r\nfunction encode(fidByteArray) {\r\n var b64String = bufferToBase64UrlSafe(fidByteArray);\r\n // Remove the 23rd character that was added because of the extra 4 bits at the\r\n // end of our 17 byte array, and the '=' padding.\r\n return b64String.substr(0, 22);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a string key that can be used to identify the app. */\r\nfunction getKey(appConfig) {\r\n return appConfig.appName + \"!\" + appConfig.appId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar fidChangeCallbacks = new Map();\r\n/**\r\n * Calls the onIdChange callbacks with the new FID value, and broadcasts the\r\n * change to other tabs.\r\n */\r\nfunction fidChanged(appConfig, fid) {\r\n var key = getKey(appConfig);\r\n callFidChangeCallbacks(key, fid);\r\n broadcastFidChange(key, fid);\r\n}\r\nfunction addCallback(appConfig, callback) {\r\n // Open the broadcast channel if it's not already open,\r\n // to be able to listen to change events from other tabs.\r\n getBroadcastChannel();\r\n var key = getKey(appConfig);\r\n var callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n callbackSet = new Set();\r\n fidChangeCallbacks.set(key, callbackSet);\r\n }\r\n callbackSet.add(callback);\r\n}\r\nfunction removeCallback(appConfig, callback) {\r\n var key = getKey(appConfig);\r\n var callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n return;\r\n }\r\n callbackSet.delete(callback);\r\n if (callbackSet.size === 0) {\r\n fidChangeCallbacks.delete(key);\r\n }\r\n // Close broadcast channel if there are no more callbacks.\r\n closeBroadcastChannel();\r\n}\r\nfunction callFidChangeCallbacks(key, fid) {\r\n var e_1, _a;\r\n var callbacks = fidChangeCallbacks.get(key);\r\n if (!callbacks) {\r\n return;\r\n }\r\n try {\r\n for (var callbacks_1 = __values(callbacks), callbacks_1_1 = callbacks_1.next(); !callbacks_1_1.done; callbacks_1_1 = callbacks_1.next()) {\r\n var callback = callbacks_1_1.value;\r\n callback(fid);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (callbacks_1_1 && !callbacks_1_1.done && (_a = callbacks_1.return)) _a.call(callbacks_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n}\r\nfunction broadcastFidChange(key, fid) {\r\n var channel = getBroadcastChannel();\r\n if (channel) {\r\n channel.postMessage({ key: key, fid: fid });\r\n }\r\n closeBroadcastChannel();\r\n}\r\nvar broadcastChannel = null;\r\n/** Opens and returns a BroadcastChannel if it is supported by the browser. */\r\nfunction getBroadcastChannel() {\r\n if (!broadcastChannel && 'BroadcastChannel' in self) {\r\n broadcastChannel = new BroadcastChannel('[Firebase] FID Change');\r\n broadcastChannel.onmessage = function (e) {\r\n callFidChangeCallbacks(e.data.key, e.data.fid);\r\n };\r\n }\r\n return broadcastChannel;\r\n}\r\nfunction closeBroadcastChannel() {\r\n if (fidChangeCallbacks.size === 0 && broadcastChannel) {\r\n broadcastChannel.close();\r\n broadcastChannel = null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DATABASE_NAME = 'firebase-installations-database';\r\nvar DATABASE_VERSION = 1;\r\nvar OBJECT_STORE_NAME = 'firebase-installations-store';\r\nvar dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, function (upgradeDB) {\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (upgradeDB.oldVersion) {\r\n case 0:\r\n upgradeDB.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nfunction set(appConfig, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx, objectStore, oldValue;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(appConfig);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n objectStore = tx.objectStore(OBJECT_STORE_NAME);\r\n return [4 /*yield*/, objectStore.get(key)];\r\n case 2:\r\n oldValue = _a.sent();\r\n return [4 /*yield*/, objectStore.put(value, key)];\r\n case 3:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 4:\r\n _a.sent();\r\n if (!oldValue || oldValue.fid !== value.fid) {\r\n fidChanged(appConfig, value.fid);\r\n }\r\n return [2 /*return*/, value];\r\n }\r\n });\r\n });\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nfunction remove(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(appConfig);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).delete(key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Atomically updates a record with the result of updateFn, which gets\r\n * called with the current value. If newValue is undefined, the record is\r\n * deleted instead.\r\n * @return Updated value\r\n */\r\nfunction update(appConfig, updateFn) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx, store, oldValue, newValue;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(appConfig);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n store = tx.objectStore(OBJECT_STORE_NAME);\r\n return [4 /*yield*/, store.get(key)];\r\n case 2:\r\n oldValue = _a.sent();\r\n newValue = updateFn(oldValue);\r\n if (!(newValue === undefined)) return [3 /*break*/, 4];\r\n return [4 /*yield*/, store.delete(key)];\r\n case 3:\r\n _a.sent();\r\n return [3 /*break*/, 6];\r\n case 4: return [4 /*yield*/, store.put(newValue, key)];\r\n case 5:\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: return [4 /*yield*/, tx.complete];\r\n case 7:\r\n _a.sent();\r\n if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {\r\n fidChanged(appConfig, newValue.fid);\r\n }\r\n return [2 /*return*/, newValue];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Updates and returns the InstallationEntry from the database.\r\n * Also triggers a registration request if it is necessary and possible.\r\n */\r\nfunction getInstallationEntry(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var registrationPromise, installationEntry;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, update(appConfig, function (oldEntry) {\r\n var installationEntry = updateOrCreateInstallationEntry(oldEntry);\r\n var entryWithPromise = triggerRegistrationIfNecessary(appConfig, installationEntry);\r\n registrationPromise = entryWithPromise.registrationPromise;\r\n return entryWithPromise.installationEntry;\r\n })];\r\n case 1:\r\n installationEntry = _b.sent();\r\n if (!(installationEntry.fid === INVALID_FID)) return [3 /*break*/, 3];\r\n _a = {};\r\n return [4 /*yield*/, registrationPromise];\r\n case 2: \r\n // FID generation failed. Waiting for the FID from the server.\r\n return [2 /*return*/, (_a.installationEntry = _b.sent(), _a)];\r\n case 3: return [2 /*return*/, {\r\n installationEntry: installationEntry,\r\n registrationPromise: registrationPromise\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Creates a new Installation Entry if one does not exist.\r\n * Also clears timed out pending requests.\r\n */\r\nfunction updateOrCreateInstallationEntry(oldEntry) {\r\n var entry = oldEntry || {\r\n fid: generateFid(),\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n return clearTimedOutRequest(entry);\r\n}\r\n/**\r\n * If the Firebase Installation is not registered yet, this will trigger the\r\n * registration and return an InProgressInstallationEntry.\r\n *\r\n * If registrationPromise does not exist, the installationEntry is guaranteed\r\n * to be registered.\r\n */\r\nfunction triggerRegistrationIfNecessary(appConfig, installationEntry) {\r\n if (installationEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n if (!navigator.onLine) {\r\n // Registration required but app is offline.\r\n var registrationPromiseWithError = Promise.reject(ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */));\r\n return {\r\n installationEntry: installationEntry,\r\n registrationPromise: registrationPromiseWithError\r\n };\r\n }\r\n // Try registering. Change status to IN_PROGRESS.\r\n var inProgressEntry = {\r\n fid: installationEntry.fid,\r\n registrationStatus: 1 /* IN_PROGRESS */,\r\n registrationTime: Date.now()\r\n };\r\n var registrationPromise = registerInstallation(appConfig, inProgressEntry);\r\n return { installationEntry: inProgressEntry, registrationPromise: registrationPromise };\r\n }\r\n else if (installationEntry.registrationStatus === 1 /* IN_PROGRESS */) {\r\n return {\r\n installationEntry: installationEntry,\r\n registrationPromise: waitUntilFidRegistration(appConfig)\r\n };\r\n }\r\n else {\r\n return { installationEntry: installationEntry };\r\n }\r\n}\r\n/** This will be executed only once for each new Firebase Installation. */\r\nfunction registerInstallation(appConfig, installationEntry) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var registeredInstallationEntry, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 7]);\r\n return [4 /*yield*/, createInstallationRequest(appConfig, installationEntry)];\r\n case 1:\r\n registeredInstallationEntry = _a.sent();\r\n return [2 /*return*/, set(appConfig, registeredInstallationEntry)];\r\n case 2:\r\n e_1 = _a.sent();\r\n if (!(isServerError(e_1) && e_1.customData.serverCode === 409)) return [3 /*break*/, 4];\r\n // Server returned a \"FID can not be used\" error.\r\n // Generate a new ID next time.\r\n return [4 /*yield*/, remove(appConfig)];\r\n case 3:\r\n // Server returned a \"FID can not be used\" error.\r\n // Generate a new ID next time.\r\n _a.sent();\r\n return [3 /*break*/, 6];\r\n case 4: \r\n // Registration failed. Set FID as not registered.\r\n return [4 /*yield*/, set(appConfig, {\r\n fid: installationEntry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n })];\r\n case 5:\r\n // Registration failed. Set FID as not registered.\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: throw e_1;\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** Call if FID registration is pending in another request. */\r\nfunction waitUntilFidRegistration(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var entry, _a, installationEntry, registrationPromise;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, updateInstallationRequest(appConfig)];\r\n case 1:\r\n entry = _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n if (!(entry.registrationStatus === 1 /* IN_PROGRESS */)) return [3 /*break*/, 5];\r\n // createInstallation request still in progress.\r\n return [4 /*yield*/, sleep(100)];\r\n case 3:\r\n // createInstallation request still in progress.\r\n _b.sent();\r\n return [4 /*yield*/, updateInstallationRequest(appConfig)];\r\n case 4:\r\n entry = _b.sent();\r\n return [3 /*break*/, 2];\r\n case 5:\r\n if (!(entry.registrationStatus === 0 /* NOT_STARTED */)) return [3 /*break*/, 7];\r\n return [4 /*yield*/, getInstallationEntry(appConfig)];\r\n case 6:\r\n _a = _b.sent(), installationEntry = _a.installationEntry, registrationPromise = _a.registrationPromise;\r\n if (registrationPromise) {\r\n return [2 /*return*/, registrationPromise];\r\n }\r\n else {\r\n // if there is no registrationPromise, entry is registered.\r\n return [2 /*return*/, installationEntry];\r\n }\r\n case 7: return [2 /*return*/, entry];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Called only if there is a CreateInstallation request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * CreateInstallation request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateInstallationRequest(appConfig) {\r\n return update(appConfig, function (oldEntry) {\r\n if (!oldEntry) {\r\n throw ERROR_FACTORY.create(\"installation-not-found\" /* INSTALLATION_NOT_FOUND */);\r\n }\r\n return clearTimedOutRequest(oldEntry);\r\n });\r\n}\r\nfunction clearTimedOutRequest(entry) {\r\n if (hasInstallationRequestTimedOut(entry)) {\r\n return {\r\n fid: entry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n }\r\n return entry;\r\n}\r\nfunction hasInstallationRequestTimedOut(installationEntry) {\r\n return (installationEntry.registrationStatus === 1 /* IN_PROGRESS */ &&\r\n installationEntry.registrationTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction generateAuthTokenRequest(_a, installationEntry) {\r\n var appConfig = _a.appConfig, platformLoggerProvider = _a.platformLoggerProvider;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var endpoint, headers, platformLogger, body, request, response, responseValue, completedAuthToken;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);\r\n headers = getHeadersWithAuth(appConfig, installationEntry);\r\n platformLogger = platformLoggerProvider.getImmediate({\r\n optional: true\r\n });\r\n if (platformLogger) {\r\n headers.append('x-firebase-client', platformLogger.getPlatformInfoString());\r\n }\r\n body = {\r\n installation: {\r\n sdkVersion: PACKAGE_VERSION\r\n }\r\n };\r\n request = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n return [4 /*yield*/, retryIfServerError(function () { return fetch(endpoint, request); })];\r\n case 1:\r\n response = _b.sent();\r\n if (!response.ok) return [3 /*break*/, 3];\r\n return [4 /*yield*/, response.json()];\r\n case 2:\r\n responseValue = _b.sent();\r\n completedAuthToken = extractAuthTokenInfoFromResponse(responseValue);\r\n return [2 /*return*/, completedAuthToken];\r\n case 3: return [4 /*yield*/, getErrorFromResponse('Generate Auth Token', response)];\r\n case 4: throw _b.sent();\r\n }\r\n });\r\n });\r\n}\r\nfunction getGenerateAuthTokenEndpoint(appConfig, _a) {\r\n var fid = _a.fid;\r\n return getInstallationsEndpoint(appConfig) + \"/\" + fid + \"/authTokens:generate\";\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a valid authentication token for the installation. Generates a new\r\n * token if one doesn't exist, is expired or about to expire.\r\n *\r\n * Should only be called if the Firebase Installation is registered.\r\n */\r\nfunction refreshAuthToken(dependencies, forceRefresh) {\r\n if (forceRefresh === void 0) { forceRefresh = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenPromise, entry, authToken, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, update(dependencies.appConfig, function (oldEntry) {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n var oldAuthToken = oldEntry.authToken;\r\n if (!forceRefresh && isAuthTokenValid(oldAuthToken)) {\r\n // There is a valid token in the DB.\r\n return oldEntry;\r\n }\r\n else if (oldAuthToken.requestStatus === 1 /* IN_PROGRESS */) {\r\n // There already is a token request in progress.\r\n tokenPromise = waitUntilAuthTokenRequest(dependencies, forceRefresh);\r\n return oldEntry;\r\n }\r\n else {\r\n // No token or token expired.\r\n if (!navigator.onLine) {\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n }\r\n var inProgressEntry = makeAuthTokenRequestInProgressEntry(oldEntry);\r\n tokenPromise = fetchAuthTokenFromServer(dependencies, inProgressEntry);\r\n return inProgressEntry;\r\n }\r\n })];\r\n case 1:\r\n entry = _b.sent();\r\n if (!tokenPromise) return [3 /*break*/, 3];\r\n return [4 /*yield*/, tokenPromise];\r\n case 2:\r\n _a = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a = entry.authToken;\r\n _b.label = 4;\r\n case 4:\r\n authToken = _a;\r\n return [2 /*return*/, authToken];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Call only if FID is registered and Auth Token request is in progress.\r\n *\r\n * Waits until the current pending request finishes. If the request times out,\r\n * tries once in this thread as well.\r\n */\r\nfunction waitUntilAuthTokenRequest(dependencies, forceRefresh) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var entry, authToken;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, updateAuthTokenRequest(dependencies.appConfig)];\r\n case 1:\r\n entry = _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (!(entry.authToken.requestStatus === 1 /* IN_PROGRESS */)) return [3 /*break*/, 5];\r\n // generateAuthToken still in progress.\r\n return [4 /*yield*/, sleep(100)];\r\n case 3:\r\n // generateAuthToken still in progress.\r\n _a.sent();\r\n return [4 /*yield*/, updateAuthTokenRequest(dependencies.appConfig)];\r\n case 4:\r\n entry = _a.sent();\r\n return [3 /*break*/, 2];\r\n case 5:\r\n authToken = entry.authToken;\r\n if (authToken.requestStatus === 0 /* NOT_STARTED */) {\r\n // The request timed out or failed in a different call. Try again.\r\n return [2 /*return*/, refreshAuthToken(dependencies, forceRefresh)];\r\n }\r\n else {\r\n return [2 /*return*/, authToken];\r\n }\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Called only if there is a GenerateAuthToken request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * GenerateAuthToken request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateAuthTokenRequest(appConfig) {\r\n return update(appConfig, function (oldEntry) {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n var oldAuthToken = oldEntry.authToken;\r\n if (hasAuthTokenRequestTimedOut(oldAuthToken)) {\r\n return __assign(__assign({}, oldEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n }\r\n return oldEntry;\r\n });\r\n}\r\nfunction fetchAuthTokenFromServer(dependencies, installationEntry) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken, updatedInstallationEntry, e_1, updatedInstallationEntry;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 3, , 8]);\r\n return [4 /*yield*/, generateAuthTokenRequest(dependencies, installationEntry)];\r\n case 1:\r\n authToken = _a.sent();\r\n updatedInstallationEntry = __assign(__assign({}, installationEntry), { authToken: authToken });\r\n return [4 /*yield*/, set(dependencies.appConfig, updatedInstallationEntry)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, authToken];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (!(isServerError(e_1) &&\r\n (e_1.customData.serverCode === 401 || e_1.customData.serverCode === 404))) return [3 /*break*/, 5];\r\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\r\n // Generate a new ID next time.\r\n return [4 /*yield*/, remove(dependencies.appConfig)];\r\n case 4:\r\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\r\n // Generate a new ID next time.\r\n _a.sent();\r\n return [3 /*break*/, 7];\r\n case 5:\r\n updatedInstallationEntry = __assign(__assign({}, installationEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n return [4 /*yield*/, set(dependencies.appConfig, updatedInstallationEntry)];\r\n case 6:\r\n _a.sent();\r\n _a.label = 7;\r\n case 7: throw e_1;\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction isEntryRegistered(installationEntry) {\r\n return (installationEntry !== undefined &&\r\n installationEntry.registrationStatus === 2 /* COMPLETED */);\r\n}\r\nfunction isAuthTokenValid(authToken) {\r\n return (authToken.requestStatus === 2 /* COMPLETED */ &&\r\n !isAuthTokenExpired(authToken));\r\n}\r\nfunction isAuthTokenExpired(authToken) {\r\n var now = Date.now();\r\n return (now < authToken.creationTime ||\r\n authToken.creationTime + authToken.expiresIn < now + TOKEN_EXPIRATION_BUFFER);\r\n}\r\n/** Returns an updated InstallationEntry with an InProgressAuthToken. */\r\nfunction makeAuthTokenRequestInProgressEntry(oldEntry) {\r\n var inProgressAuthToken = {\r\n requestStatus: 1 /* IN_PROGRESS */,\r\n requestTime: Date.now()\r\n };\r\n return __assign(__assign({}, oldEntry), { authToken: inProgressAuthToken });\r\n}\r\nfunction hasAuthTokenRequestTimedOut(authToken) {\r\n return (authToken.requestStatus === 1 /* IN_PROGRESS */ &&\r\n authToken.requestTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getId(dependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, installationEntry, registrationPromise;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, getInstallationEntry(dependencies.appConfig)];\r\n case 1:\r\n _a = _b.sent(), installationEntry = _a.installationEntry, registrationPromise = _a.registrationPromise;\r\n if (registrationPromise) {\r\n registrationPromise.catch(console.error);\r\n }\r\n else {\r\n // If the installation is already registered, update the authentication\r\n // token if needed.\r\n refreshAuthToken(dependencies).catch(console.error);\r\n }\r\n return [2 /*return*/, installationEntry.fid];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getToken(dependencies, forceRefresh) {\r\n if (forceRefresh === void 0) { forceRefresh = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, completeInstallationRegistration(dependencies.appConfig)];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, refreshAuthToken(dependencies, forceRefresh)];\r\n case 2:\r\n authToken = _a.sent();\r\n return [2 /*return*/, authToken.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction completeInstallationRegistration(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var registrationPromise;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getInstallationEntry(appConfig)];\r\n case 1:\r\n registrationPromise = (_a.sent()).registrationPromise;\r\n if (!registrationPromise) return [3 /*break*/, 3];\r\n // A createInstallation request is in progress. Wait until it finishes.\r\n return [4 /*yield*/, registrationPromise];\r\n case 2:\r\n // A createInstallation request is in progress. Wait until it finishes.\r\n _a.sent();\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction deleteInstallationRequest(appConfig, installationEntry) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var endpoint, headers, request, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n endpoint = getDeleteEndpoint(appConfig, installationEntry);\r\n headers = getHeadersWithAuth(appConfig, installationEntry);\r\n request = {\r\n method: 'DELETE',\r\n headers: headers\r\n };\r\n return [4 /*yield*/, retryIfServerError(function () { return fetch(endpoint, request); })];\r\n case 1:\r\n response = _a.sent();\r\n if (!!response.ok) return [3 /*break*/, 3];\r\n return [4 /*yield*/, getErrorFromResponse('Delete Installation', response)];\r\n case 2: throw _a.sent();\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getDeleteEndpoint(appConfig, _a) {\r\n var fid = _a.fid;\r\n return getInstallationsEndpoint(appConfig) + \"/\" + fid;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction deleteInstallation(dependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appConfig, entry;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n appConfig = dependencies.appConfig;\r\n return [4 /*yield*/, update(appConfig, function (oldEntry) {\r\n if (oldEntry && oldEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n // Delete the unregistered entry without sending a deleteInstallation request.\r\n return undefined;\r\n }\r\n return oldEntry;\r\n })];\r\n case 1:\r\n entry = _a.sent();\r\n if (!entry) return [3 /*break*/, 6];\r\n if (!(entry.registrationStatus === 1 /* IN_PROGRESS */)) return [3 /*break*/, 2];\r\n // Can't delete while trying to register.\r\n throw ERROR_FACTORY.create(\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */);\r\n case 2:\r\n if (!(entry.registrationStatus === 2 /* COMPLETED */)) return [3 /*break*/, 6];\r\n if (!!navigator.onLine) return [3 /*break*/, 3];\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n case 3: return [4 /*yield*/, deleteInstallationRequest(appConfig, entry)];\r\n case 4:\r\n _a.sent();\r\n return [4 /*yield*/, remove(appConfig)];\r\n case 5:\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Sets a new callback that will get called when Installation ID changes.\r\n * Returns an unsubscribe function that will remove the callback when called.\r\n */\r\nfunction onIdChange(_a, callback) {\r\n var appConfig = _a.appConfig;\r\n addCallback(appConfig, callback);\r\n return function () {\r\n removeCallback(appConfig, callback);\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n var e_1, _a;\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n var configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId'\r\n ];\r\n try {\r\n for (var configKeys_1 = __values(configKeys), configKeys_1_1 = configKeys_1.next(); !configKeys_1_1.done; configKeys_1_1 = configKeys_1.next()) {\r\n var keyName = configKeys_1_1.value;\r\n if (!app.options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (configKeys_1_1 && !configKeys_1_1.done && (_a = configKeys_1.return)) _a.call(configKeys_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: app.options.projectId,\r\n apiKey: app.options.apiKey,\r\n appId: app.options.appId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName: valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerInstallations(instance) {\r\n var installationsName = 'installations';\r\n instance.INTERNAL.registerComponent(new Component(installationsName, function (container) {\r\n var app = container.getProvider('app').getImmediate();\r\n // Throws if app isn't configured properly.\r\n var appConfig = extractAppConfig(app);\r\n var platformLoggerProvider = container.getProvider('platform-logger');\r\n var dependencies = {\r\n appConfig: appConfig,\r\n platformLoggerProvider: platformLoggerProvider\r\n };\r\n var installations = {\r\n app: app,\r\n getId: function () { return getId(dependencies); },\r\n getToken: function (forceRefresh) {\r\n return getToken(dependencies, forceRefresh);\r\n },\r\n delete: function () { return deleteInstallation(dependencies); },\r\n onIdChange: function (callback) {\r\n return onIdChange(dependencies, callback);\r\n }\r\n };\r\n return installations;\r\n }, \"PUBLIC\" /* PUBLIC */));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterInstallations(firebase);\n\nexport { registerInstallations };\n//# sourceMappingURL=index.esm.js.map\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import '@firebase/installations';\nimport { Component } from '@firebase/component';\nimport { ErrorFactory } from '@firebase/util';\nimport { __spread, __awaiter, __generator, __assign, __values } from 'tslib';\nimport { deleteDb, openDb } from 'idb';\nimport firebase from '@firebase/app';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar _a;\r\nvar ERROR_MAP = (_a = {},\r\n _a[\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */] = 'Missing App configuration value: \"{$valueName}\"',\r\n _a[\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */] = 'This method is available in a Window context.',\r\n _a[\"only-available-in-sw\" /* AVAILABLE_IN_SW */] = 'This method is available in a service worker context.',\r\n _a[\"permission-default\" /* PERMISSION_DEFAULT */] = 'The notification permission was not granted and dismissed instead.',\r\n _a[\"permission-blocked\" /* PERMISSION_BLOCKED */] = 'The notification permission was not granted and blocked instead.',\r\n _a[\"unsupported-browser\" /* UNSUPPORTED_BROWSER */] = \"This browser doesn't support the API's required to use the firebase SDK.\",\r\n _a[\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */] = 'We are unable to register the default service worker. {$browserErrorMessage}',\r\n _a[\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */] = 'A problem occurred while subscribing the user to FCM: {$errorInfo}',\r\n _a[\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */] = 'FCM returned no token when subscribing the user to push.',\r\n _a[\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */] = 'A problem occurred while unsubscribing the ' +\r\n 'user from FCM: {$errorInfo}',\r\n _a[\"token-update-failed\" /* TOKEN_UPDATE_FAILED */] = 'A problem occurred while updating the user from FCM: {$errorInfo}',\r\n _a[\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */] = 'FCM returned no token when updating the user to push.',\r\n _a[\"use-sw-after-get-token\" /* USE_SW_AFTER_GET_TOKEN */] = 'The useServiceWorker() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your service worker is used.',\r\n _a[\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */] = 'The input to useServiceWorker() must be a ServiceWorkerRegistration.',\r\n _a[\"invalid-bg-handler\" /* INVALID_BG_HANDLER */] = 'The input to setBackgroundMessageHandler() must be a function.',\r\n _a[\"invalid-vapid-key\" /* INVALID_VAPID_KEY */] = 'The public VAPID key must be a string.',\r\n _a[\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */] = 'The usePublicVapidKey() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your VAPID key is used.',\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory('messaging', 'Messaging', ERROR_MAP);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DEFAULT_SW_PATH = '/firebase-messaging-sw.js';\r\nvar DEFAULT_SW_SCOPE = '/firebase-cloud-messaging-push-scope';\r\nvar DEFAULT_VAPID_KEY = 'BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4';\r\nvar ENDPOINT = 'https://fcmregistrations.googleapis.com/v1';\r\n// Key of FCM Payload in Notification's data field.\r\nvar FCM_MSG = 'FCM_MSG';\r\nvar TAG = 'FirebaseMessaging: ';\r\n// Set to '1' if Analytics is enabled for the campaign\r\nvar CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\r\nvar CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\r\nvar CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\r\nvar CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l';\r\n// Due to the fact that onBackgroundMessage can't be awaited (to support rxjs), a silent push\r\n// warning might be shown by the browser if the callback fails to completes by the end of onPush.\r\n// Experiments were ran to determine the majority onBackground message clock time. This brief\r\n// blocking time would allow majority of the onBackgroundMessage callback to finish.\r\nvar BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS = 1000;\r\n// Preparation time for client to initialize and set up the message handler.\r\nvar FOREGROUND_HANDLE_PREPARATION_TIME_MS = 3000;\n\n/**\r\n * @license\r\n * Copyright 2018 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\r\n * in compliance with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under the License\r\n * is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r\n * or implied. See the License for the specific language governing permissions and limitations under\r\n * the License.\r\n */\r\nvar MessageType;\r\n(function (MessageType) {\r\n MessageType[\"PUSH_RECEIVED\"] = \"push-received\";\r\n MessageType[\"NOTIFICATION_CLICKED\"] = \"notification-clicked\";\r\n})(MessageType || (MessageType = {}));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction arrayToBase64(array) {\r\n var uint8Array = new Uint8Array(array);\r\n var base64String = btoa(String.fromCharCode.apply(String, __spread(uint8Array)));\r\n return base64String.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\r\nfunction base64ToArray(base64String) {\r\n var padding = '='.repeat((4 - (base64String.length % 4)) % 4);\r\n var base64 = (base64String + padding)\r\n .replace(/\\-/g, '+')\r\n .replace(/_/g, '/');\r\n var rawData = atob(base64);\r\n var outputArray = new Uint8Array(rawData.length);\r\n for (var i = 0; i < rawData.length; ++i) {\r\n outputArray[i] = rawData.charCodeAt(i);\r\n }\r\n return outputArray;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar OLD_DB_NAME = 'fcm_token_details_db';\r\n/**\r\n * The last DB version of 'fcm_token_details_db' was 4. This is one higher, so that the upgrade\r\n * callback is called for all versions of the old DB.\r\n */\r\nvar OLD_DB_VERSION = 5;\r\nvar OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\r\nfunction migrateOldDatabase(senderId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var databases, dbNames, tokenDetails, db;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!('databases' in indexedDB)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, indexedDB.databases()];\r\n case 1:\r\n databases = _a.sent();\r\n dbNames = databases.map(function (db) { return db.name; });\r\n if (!dbNames.includes(OLD_DB_NAME)) {\r\n // old DB didn't exist, no need to open.\r\n return [2 /*return*/, null];\r\n }\r\n _a.label = 2;\r\n case 2:\r\n tokenDetails = null;\r\n return [4 /*yield*/, openDb(OLD_DB_NAME, OLD_DB_VERSION, function (db) { return __awaiter(_this, void 0, void 0, function () {\r\n var objectStore, value, oldDetails, oldDetails, oldDetails;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (db.oldVersion < 2) {\r\n // Database too old, skip migration.\r\n return [2 /*return*/];\r\n }\r\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\r\n // Database did not exist. Nothing to do.\r\n return [2 /*return*/];\r\n }\r\n objectStore = db.transaction.objectStore(OLD_OBJECT_STORE_NAME);\r\n return [4 /*yield*/, objectStore.index('fcmSenderId').get(senderId)];\r\n case 1:\r\n value = _b.sent();\r\n return [4 /*yield*/, objectStore.clear()];\r\n case 2:\r\n _b.sent();\r\n if (!value) {\r\n // No entry in the database, nothing to migrate.\r\n return [2 /*return*/];\r\n }\r\n if (db.oldVersion === 2) {\r\n oldDetails = value;\r\n if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {\r\n return [2 /*return*/];\r\n }\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: (_a = oldDetails.createTime) !== null && _a !== void 0 ? _a : Date.now(),\r\n subscriptionOptions: {\r\n auth: oldDetails.auth,\r\n p256dh: oldDetails.p256dh,\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: typeof oldDetails.vapidKey === 'string'\r\n ? oldDetails.vapidKey\r\n : arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (db.oldVersion === 3) {\r\n oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (db.oldVersion === 4) {\r\n oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); })];\r\n case 3:\r\n db = _a.sent();\r\n db.close();\r\n // Delete all old databases.\r\n return [4 /*yield*/, deleteDb(OLD_DB_NAME)];\r\n case 4:\r\n // Delete all old databases.\r\n _a.sent();\r\n return [4 /*yield*/, deleteDb('fcm_vapid_details_db')];\r\n case 5:\r\n _a.sent();\r\n return [4 /*yield*/, deleteDb('undefined')];\r\n case 6:\r\n _a.sent();\r\n return [2 /*return*/, checkTokenDetails(tokenDetails) ? tokenDetails : null];\r\n }\r\n });\r\n });\r\n}\r\nfunction checkTokenDetails(tokenDetails) {\r\n if (!tokenDetails || !tokenDetails.subscriptionOptions) {\r\n return false;\r\n }\r\n var subscriptionOptions = tokenDetails.subscriptionOptions;\r\n return (typeof tokenDetails.createTime === 'number' &&\r\n tokenDetails.createTime > 0 &&\r\n typeof tokenDetails.token === 'string' &&\r\n tokenDetails.token.length > 0 &&\r\n typeof subscriptionOptions.auth === 'string' &&\r\n subscriptionOptions.auth.length > 0 &&\r\n typeof subscriptionOptions.p256dh === 'string' &&\r\n subscriptionOptions.p256dh.length > 0 &&\r\n typeof subscriptionOptions.endpoint === 'string' &&\r\n subscriptionOptions.endpoint.length > 0 &&\r\n typeof subscriptionOptions.swScope === 'string' &&\r\n subscriptionOptions.swScope.length > 0 &&\r\n typeof subscriptionOptions.vapidKey === 'string' &&\r\n subscriptionOptions.vapidKey.length > 0);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Exported for tests.\r\nvar DATABASE_NAME = 'firebase-messaging-database';\r\nvar DATABASE_VERSION = 1;\r\nvar OBJECT_STORE_NAME = 'firebase-messaging-store';\r\nvar dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, function (upgradeDb) {\r\n // We don't use 'break' in this switch statement, the fall-through behavior is what we want,\r\n // because if there are multiple versions between the old version and the current version, we\r\n // want ALL the migrations that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (upgradeDb.oldVersion) {\r\n case 0:\r\n upgradeDb.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Gets record(s) from the objectStore that match the given key. */\r\nfunction dbGet(firebaseDependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tokenDetails, oldTokenDetails;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n return [4 /*yield*/, db\r\n .transaction(OBJECT_STORE_NAME)\r\n .objectStore(OBJECT_STORE_NAME)\r\n .get(key)];\r\n case 2:\r\n tokenDetails = _a.sent();\r\n if (!tokenDetails) return [3 /*break*/, 3];\r\n return [2 /*return*/, tokenDetails];\r\n case 3: return [4 /*yield*/, migrateOldDatabase(firebaseDependencies.appConfig.senderId)];\r\n case 4:\r\n oldTokenDetails = _a.sent();\r\n if (!oldTokenDetails) return [3 /*break*/, 6];\r\n return [4 /*yield*/, dbSet(firebaseDependencies, oldTokenDetails)];\r\n case 5:\r\n _a.sent();\r\n return [2 /*return*/, oldTokenDetails];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nfunction dbSet(firebaseDependencies, tokenDetails) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/, tokenDetails];\r\n }\r\n });\r\n });\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nfunction dbRemove(firebaseDependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).delete(key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getKey(_a) {\r\n var appConfig = _a.appConfig;\r\n return appConfig.appId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction requestGetToken(firebaseDependencies, subscriptionOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, body, subscribeOptions, responseData, response, err_1, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n body = getBody(subscriptionOptions);\r\n subscribeOptions = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig), subscribeOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_1 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: err_1\r\n });\r\n case 6:\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */);\r\n }\r\n return [2 /*return*/, responseData.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction requestUpdateToken(firebaseDependencies, tokenDetails) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, body, updateOptions, responseData, response, err_2, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n body = getBody(tokenDetails.subscriptionOptions);\r\n updateOptions = {\r\n method: 'PATCH',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig) + \"/\" + tokenDetails.token, updateOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_2 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: err_2\r\n });\r\n case 6:\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */);\r\n }\r\n return [2 /*return*/, responseData.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction requestDeleteToken(firebaseDependencies, token) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, unsubscribeOptions, response, responseData, message, err_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n unsubscribeOptions = {\r\n method: 'DELETE',\r\n headers: headers\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig) + \"/\" + token, unsubscribeOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_3 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: err_3\r\n });\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getEndpoint(_a) {\r\n var projectId = _a.projectId;\r\n return ENDPOINT + \"/projects/\" + projectId + \"/registrations\";\r\n}\r\nfunction getHeaders(_a) {\r\n var appConfig = _a.appConfig, installations = _a.installations;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, installations.getToken()];\r\n case 1:\r\n authToken = _b.sent();\r\n return [2 /*return*/, new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': appConfig.apiKey,\r\n 'x-goog-firebase-installations-auth': \"FIS \" + authToken\r\n })];\r\n }\r\n });\r\n });\r\n}\r\nfunction getBody(_a) {\r\n var p256dh = _a.p256dh, auth = _a.auth, endpoint = _a.endpoint, vapidKey = _a.vapidKey;\r\n var body = {\r\n web: {\r\n endpoint: endpoint,\r\n auth: auth,\r\n p256dh: p256dh\r\n }\r\n };\r\n if (vapidKey !== DEFAULT_VAPID_KEY) {\r\n body.web.applicationPubKey = vapidKey;\r\n }\r\n return body;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** UpdateRegistration will be called once every week. */\r\nvar TOKEN_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\r\nfunction getToken(firebaseDependencies, swRegistration, vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pushSubscription, tokenDetails, subscriptionOptions, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n return [4 /*yield*/, getPushSubscription(swRegistration, vapidKey)];\r\n case 1:\r\n pushSubscription = _a.sent();\r\n return [4 /*yield*/, dbGet(firebaseDependencies)];\r\n case 2:\r\n tokenDetails = _a.sent();\r\n subscriptionOptions = {\r\n vapidKey: vapidKey,\r\n swScope: swRegistration.scope,\r\n endpoint: pushSubscription.endpoint,\r\n auth: arrayToBase64(pushSubscription.getKey('auth')),\r\n p256dh: arrayToBase64(pushSubscription.getKey('p256dh'))\r\n };\r\n if (!!tokenDetails) return [3 /*break*/, 3];\r\n // No token, get a new one.\r\n return [2 /*return*/, getNewToken(firebaseDependencies, subscriptionOptions)];\r\n case 3:\r\n if (!!isTokenValid(tokenDetails.subscriptionOptions, subscriptionOptions)) return [3 /*break*/, 8];\r\n _a.label = 4;\r\n case 4:\r\n _a.trys.push([4, 6, , 7]);\r\n return [4 /*yield*/, requestDeleteToken(firebaseDependencies, tokenDetails.token)];\r\n case 5:\r\n _a.sent();\r\n return [3 /*break*/, 7];\r\n case 6:\r\n e_1 = _a.sent();\r\n // Suppress errors because of #2364\r\n console.warn(e_1);\r\n return [3 /*break*/, 7];\r\n case 7: return [2 /*return*/, getNewToken(firebaseDependencies, subscriptionOptions)];\r\n case 8:\r\n if (Date.now() >= tokenDetails.createTime + TOKEN_EXPIRATION_MS) {\r\n // Weekly token refresh\r\n return [2 /*return*/, updateToken({\r\n token: tokenDetails.token,\r\n createTime: Date.now(),\r\n subscriptionOptions: subscriptionOptions\r\n }, firebaseDependencies, swRegistration)];\r\n }\r\n else {\r\n // Valid token, nothing to do.\r\n return [2 /*return*/, tokenDetails.token];\r\n }\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * This method deletes the token from the database, unsubscribes the token from FCM, and unregisters\r\n * the push subscription if it exists.\r\n */\r\nfunction deleteToken(firebaseDependencies, swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenDetails, pushSubscription;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, dbGet(firebaseDependencies)];\r\n case 1:\r\n tokenDetails = _a.sent();\r\n if (!tokenDetails) return [3 /*break*/, 4];\r\n return [4 /*yield*/, requestDeleteToken(firebaseDependencies, tokenDetails.token)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, dbRemove(firebaseDependencies)];\r\n case 3:\r\n _a.sent();\r\n _a.label = 4;\r\n case 4: return [4 /*yield*/, swRegistration.pushManager.getSubscription()];\r\n case 5:\r\n pushSubscription = _a.sent();\r\n if (pushSubscription) {\r\n return [2 /*return*/, pushSubscription.unsubscribe()];\r\n }\r\n // If there's no SW, consider it a success.\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n}\r\nfunction updateToken(tokenDetails, firebaseDependencies, swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var updatedToken, updatedTokenDetails, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 3, , 5]);\r\n return [4 /*yield*/, requestUpdateToken(firebaseDependencies, tokenDetails)];\r\n case 1:\r\n updatedToken = _a.sent();\r\n updatedTokenDetails = __assign(__assign({}, tokenDetails), { token: updatedToken, createTime: Date.now() });\r\n return [4 /*yield*/, dbSet(firebaseDependencies, updatedTokenDetails)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, updatedToken];\r\n case 3:\r\n e_2 = _a.sent();\r\n return [4 /*yield*/, deleteToken(firebaseDependencies, swRegistration)];\r\n case 4:\r\n _a.sent();\r\n throw e_2;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getNewToken(firebaseDependencies, subscriptionOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token, tokenDetails;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, requestGetToken(firebaseDependencies, subscriptionOptions)];\r\n case 1:\r\n token = _a.sent();\r\n tokenDetails = {\r\n token: token,\r\n createTime: Date.now(),\r\n subscriptionOptions: subscriptionOptions\r\n };\r\n return [4 /*yield*/, dbSet(firebaseDependencies, tokenDetails)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, tokenDetails.token];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Gets a PushSubscription for the current user.\r\n */\r\nfunction getPushSubscription(swRegistration, vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var subscription;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, swRegistration.pushManager.getSubscription()];\r\n case 1:\r\n subscription = _a.sent();\r\n if (subscription) {\r\n return [2 /*return*/, subscription];\r\n }\r\n return [2 /*return*/, swRegistration.pushManager.subscribe({\r\n userVisibleOnly: true,\r\n // Chrome <= 75 doesn't support base64-encoded VAPID key. For backward compatibility, VAPID key\r\n // submitted to pushManager#subscribe must be of type Uint8Array.\r\n applicationServerKey: base64ToArray(vapidKey)\r\n })];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Checks if the saved tokenDetails object matches the configuration provided.\r\n */\r\nfunction isTokenValid(dbOptions, currentOptions) {\r\n var isVapidKeyEqual = currentOptions.vapidKey === dbOptions.vapidKey;\r\n var isEndpointEqual = currentOptions.endpoint === dbOptions.endpoint;\r\n var isAuthEqual = currentOptions.auth === dbOptions.auth;\r\n var isP256dhEqual = currentOptions.p256dh === dbOptions.p256dh;\r\n return isVapidKeyEqual && isEndpointEqual && isAuthEqual && isP256dhEqual;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction externalizePayload(internalPayload) {\r\n var payload = {\r\n from: internalPayload.from,\r\n // eslint-disable-next-line camelcase\r\n collapseKey: internalPayload.collapse_key\r\n };\r\n propagateNotificationPayload(payload, internalPayload);\r\n propagateDataPayload(payload, internalPayload);\r\n propagateFcmOptions(payload, internalPayload);\r\n return payload;\r\n}\r\nfunction propagateNotificationPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.notification) {\r\n return;\r\n }\r\n payload.notification = {};\r\n var title = messagePayloadInternal.notification.title;\r\n if (!!title) {\r\n payload.notification.title = title;\r\n }\r\n var body = messagePayloadInternal.notification.body;\r\n if (!!body) {\r\n payload.notification.body = body;\r\n }\r\n var image = messagePayloadInternal.notification.image;\r\n if (!!image) {\r\n payload.notification.image = image;\r\n }\r\n}\r\nfunction propagateDataPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.data) {\r\n return;\r\n }\r\n payload.data = messagePayloadInternal.data;\r\n}\r\nfunction propagateFcmOptions(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.fcmOptions) {\r\n return;\r\n }\r\n payload.fcmOptions = {};\r\n var link = messagePayloadInternal.fcmOptions.link;\r\n if (!!link) {\r\n payload.fcmOptions.link = link;\r\n }\r\n // eslint-disable-next-line camelcase\r\n var analyticsLabel = messagePayloadInternal.fcmOptions.analytics_label;\r\n if (!!analyticsLabel) {\r\n payload.fcmOptions.analyticsLabel = analyticsLabel;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isConsoleMessage(data) {\r\n // This message has a campaign ID, meaning it was sent using the Firebase Console.\r\n return typeof data === 'object' && !!data && CONSOLE_CAMPAIGN_ID in data;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a promise that resolves after given time passes. */\r\nfunction sleep(ms) {\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar SwController = /** @class */ (function () {\r\n function SwController(firebaseDependencies) {\r\n var _this = this;\r\n this.firebaseDependencies = firebaseDependencies;\r\n // A boolean flag to determine wether an app is using onBackgroundMessage or\r\n // setBackgroundMessageHandler. onBackgroundMessage will receive a MessagePayload regardless of if\r\n // a notification is displayed. Whereas, setBackgroundMessageHandler will swallow the\r\n // MessagePayload if a NotificationPayload is included.\r\n this.isOnBackgroundMessageUsed = null;\r\n this.vapidKey = null;\r\n this.bgMessageHandler = null;\r\n self.addEventListener('push', function (e) {\r\n e.waitUntil(_this.onPush(e));\r\n });\r\n self.addEventListener('pushsubscriptionchange', function (e) {\r\n e.waitUntil(_this.onSubChange(e));\r\n });\r\n self.addEventListener('notificationclick', function (e) {\r\n e.waitUntil(_this.onNotificationClick(e));\r\n });\r\n }\r\n Object.defineProperty(SwController.prototype, \"app\", {\r\n get: function () {\r\n return this.firebaseDependencies.app;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * @deprecated. Use onBackgroundMessage(nextOrObserver: NextFn | Observer):\r\n * Unsubscribe instead.\r\n *\r\n * Calling setBackgroundMessageHandler will opt in to some specific behaviors.\r\n *\r\n * 1.) If a notification doesn't need to be shown due to a window already being visible, then push\r\n * messages will be sent to the page. 2.) If a notification needs to be shown, and the message\r\n * contains no notification data this method will be called and the promise it returns will be\r\n * passed to event.waitUntil. If you do not set this callback then all push messages will let and\r\n * the developer can handle them in a their own 'push' event callback\r\n *\r\n * @param callback The callback to be called when a push message is received and a notification\r\n * must be shown. The callback will be given the data from the push message.\r\n */\r\n SwController.prototype.setBackgroundMessageHandler = function (callback) {\r\n this.isOnBackgroundMessageUsed = false;\r\n if (!callback || typeof callback !== 'function') {\r\n throw ERROR_FACTORY.create(\"invalid-bg-handler\" /* INVALID_BG_HANDLER */);\r\n }\r\n this.bgMessageHandler = callback;\r\n };\r\n SwController.prototype.onBackgroundMessage = function (nextOrObserver) {\r\n var _this = this;\r\n this.isOnBackgroundMessageUsed = true;\r\n this.bgMessageHandler = nextOrObserver;\r\n return function () {\r\n _this.bgMessageHandler = null;\r\n };\r\n };\r\n // TODO: Remove getToken from SW Controller. Calling this from an old SW can cause all kinds of\r\n // trouble.\r\n SwController.prototype.getToken = function () {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenDetails;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n if (!!this.vapidKey) return [3 /*break*/, 2];\r\n return [4 /*yield*/, dbGet(this.firebaseDependencies)];\r\n case 1:\r\n tokenDetails = _c.sent();\r\n this.vapidKey = (_b = (_a = tokenDetails === null || tokenDetails === void 0 ? void 0 : tokenDetails.subscriptionOptions) === null || _a === void 0 ? void 0 : _a.vapidKey) !== null && _b !== void 0 ? _b : DEFAULT_VAPID_KEY;\r\n _c.label = 2;\r\n case 2: return [2 /*return*/, getToken(this.firebaseDependencies, self.registration, this.vapidKey)];\r\n }\r\n });\r\n });\r\n };\r\n // TODO: Remove deleteToken from SW Controller. Calling this from an old SW can cause all kinds of\r\n // trouble.\r\n SwController.prototype.deleteToken = function () {\r\n return deleteToken(this.firebaseDependencies, self.registration);\r\n };\r\n SwController.prototype.requestPermission = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n // TODO: Remove this together with getToken from SW Controller.\r\n SwController.prototype.usePublicVapidKey = function (vapidKey) {\r\n if (this.vapidKey !== null) {\r\n throw ERROR_FACTORY.create(\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */);\r\n }\r\n if (typeof vapidKey !== 'string' || vapidKey.length === 0) {\r\n throw ERROR_FACTORY.create(\"invalid-vapid-key\" /* INVALID_VAPID_KEY */);\r\n }\r\n this.vapidKey = vapidKey;\r\n };\r\n SwController.prototype.useServiceWorker = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n SwController.prototype.onMessage = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n SwController.prototype.onTokenRefresh = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n /**\r\n * A handler for push events that shows notifications based on the content of the payload.\r\n *\r\n * The payload must be a JSON-encoded Object with a `notification` key. The value of the\r\n * `notification` property will be used as the NotificationOptions object passed to\r\n * showNotification. Additionally, the `title` property of the notification object will be used as\r\n * the title.\r\n *\r\n * If there is no notification data in the payload then no notification will be shown.\r\n */\r\n SwController.prototype.onPush = function (event) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, clientList, isNotificationShown, payload;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n internalPayload = getMessagePayloadInternal(event);\r\n if (!internalPayload) {\r\n console.debug(TAG +\r\n 'failed to get parsed MessagePayload from the PushEvent. Skip handling the push.');\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, getClientList()];\r\n case 1:\r\n clientList = _a.sent();\r\n if (hasVisibleClients(clientList)) {\r\n return [2 /*return*/, sendMessagePayloadInternalToWindows(clientList, internalPayload)];\r\n }\r\n isNotificationShown = false;\r\n if (!!!internalPayload.notification) return [3 /*break*/, 3];\r\n return [4 /*yield*/, showNotification(wrapInternalPayload(internalPayload))];\r\n case 2:\r\n _a.sent();\r\n isNotificationShown = true;\r\n _a.label = 3;\r\n case 3:\r\n // MessagePayload is only passed to `onBackgroundMessage`. Skip passing MessagePayload for\r\n // the legacy `setBackgroundMessageHandler` to preserve the SDK behaviors.\r\n if (isNotificationShown === true &&\r\n this.isOnBackgroundMessageUsed === false) {\r\n return [2 /*return*/];\r\n }\r\n if (!!this.bgMessageHandler) {\r\n payload = externalizePayload(internalPayload);\r\n if (typeof this.bgMessageHandler === 'function') {\r\n this.bgMessageHandler(payload);\r\n }\r\n else {\r\n this.bgMessageHandler.next(payload);\r\n }\r\n }\r\n // wait briefly to allow onBackgroundMessage to complete\r\n return [4 /*yield*/, sleep(BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS)];\r\n case 4:\r\n // wait briefly to allow onBackgroundMessage to complete\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n SwController.prototype.onSubChange = function (event) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newSubscription, tokenDetails;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n newSubscription = event.newSubscription;\r\n if (!!newSubscription) return [3 /*break*/, 2];\r\n // Subscription revoked, delete token\r\n return [4 /*yield*/, deleteToken(this.firebaseDependencies, self.registration)];\r\n case 1:\r\n // Subscription revoked, delete token\r\n _c.sent();\r\n return [2 /*return*/];\r\n case 2: return [4 /*yield*/, dbGet(this.firebaseDependencies)];\r\n case 3:\r\n tokenDetails = _c.sent();\r\n return [4 /*yield*/, deleteToken(this.firebaseDependencies, self.registration)];\r\n case 4:\r\n _c.sent();\r\n return [4 /*yield*/, getToken(this.firebaseDependencies, self.registration, (_b = (_a = tokenDetails === null || tokenDetails === void 0 ? void 0 : tokenDetails.subscriptionOptions) === null || _a === void 0 ? void 0 : _a.vapidKey) !== null && _b !== void 0 ? _b : DEFAULT_VAPID_KEY)];\r\n case 5:\r\n _c.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n SwController.prototype.onNotificationClick = function (event) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, link, url, originUrl, client;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n internalPayload = (_b = (_a = event.notification) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b[FCM_MSG];\r\n if (!internalPayload) {\r\n return [2 /*return*/];\r\n }\r\n else if (event.action) {\r\n // User clicked on an action button. This will allow developers to act on action button clicks\r\n // by using a custom onNotificationClick listener that they define.\r\n return [2 /*return*/];\r\n }\r\n // Prevent other listeners from receiving the event\r\n event.stopImmediatePropagation();\r\n event.notification.close();\r\n link = getLink(internalPayload);\r\n if (!link) {\r\n return [2 /*return*/];\r\n }\r\n url = new URL(link, self.location.href);\r\n originUrl = new URL(self.location.origin);\r\n if (url.host !== originUrl.host) {\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, getWindowClient(url)];\r\n case 1:\r\n client = _c.sent();\r\n if (!!client) return [3 /*break*/, 4];\r\n return [4 /*yield*/, self.clients.openWindow(link)];\r\n case 2:\r\n client = _c.sent();\r\n // Wait three seconds for the client to initialize and set up the message handler so that it\r\n // can receive the message.\r\n return [4 /*yield*/, sleep(FOREGROUND_HANDLE_PREPARATION_TIME_MS)];\r\n case 3:\r\n // Wait three seconds for the client to initialize and set up the message handler so that it\r\n // can receive the message.\r\n _c.sent();\r\n return [3 /*break*/, 6];\r\n case 4: return [4 /*yield*/, client.focus()];\r\n case 5:\r\n client = _c.sent();\r\n _c.label = 6;\r\n case 6:\r\n if (!client) {\r\n // Window Client will not be returned if it's for a third party origin.\r\n return [2 /*return*/];\r\n }\r\n internalPayload.messageType = MessageType.NOTIFICATION_CLICKED;\r\n internalPayload.isFirebaseMessaging = true;\r\n return [2 /*return*/, client.postMessage(internalPayload)];\r\n }\r\n });\r\n });\r\n };\r\n return SwController;\r\n}());\r\nfunction wrapInternalPayload(internalPayload) {\r\n var _a;\r\n var wrappedInternalPayload = __assign({}, internalPayload.notification);\r\n // Put the message payload under FCM_MSG name so we can identify the notification as being an FCM\r\n // notification vs a notification from somewhere else (i.e. normal web push or developer generated\r\n // notification).\r\n wrappedInternalPayload.data = (_a = {},\r\n _a[FCM_MSG] = internalPayload,\r\n _a);\r\n return wrappedInternalPayload;\r\n}\r\nfunction getMessagePayloadInternal(_a) {\r\n var data = _a.data;\r\n if (!data) {\r\n return null;\r\n }\r\n try {\r\n return data.json();\r\n }\r\n catch (err) {\r\n // Not JSON so not an FCM message.\r\n return null;\r\n }\r\n}\r\n/**\r\n * @param url The URL to look for when focusing a client.\r\n * @return Returns an existing window client or a newly opened WindowClient.\r\n */\r\nfunction getWindowClient(url) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientList, clientList_1, clientList_1_1, client, clientUrl;\r\n var e_1, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, getClientList()];\r\n case 1:\r\n clientList = _b.sent();\r\n try {\r\n for (clientList_1 = __values(clientList), clientList_1_1 = clientList_1.next(); !clientList_1_1.done; clientList_1_1 = clientList_1.next()) {\r\n client = clientList_1_1.value;\r\n clientUrl = new URL(client.url, self.location.href);\r\n if (url.host === clientUrl.host) {\r\n return [2 /*return*/, client];\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (clientList_1_1 && !clientList_1_1.done && (_a = clientList_1.return)) _a.call(clientList_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * @returns If there is currently a visible WindowClient, this method will resolve to true,\r\n * otherwise false.\r\n */\r\nfunction hasVisibleClients(clientList) {\r\n return clientList.some(function (client) {\r\n return client.visibilityState === 'visible' &&\r\n // Ignore chrome-extension clients as that matches the background pages of extensions, which\r\n // are always considered visible for some reason.\r\n !client.url.startsWith('chrome-extension://');\r\n });\r\n}\r\nfunction sendMessagePayloadInternalToWindows(clientList, internalPayload) {\r\n var e_2, _a;\r\n internalPayload.isFirebaseMessaging = true;\r\n internalPayload.messageType = MessageType.PUSH_RECEIVED;\r\n try {\r\n for (var clientList_2 = __values(clientList), clientList_2_1 = clientList_2.next(); !clientList_2_1.done; clientList_2_1 = clientList_2.next()) {\r\n var client = clientList_2_1.value;\r\n client.postMessage(internalPayload);\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (clientList_2_1 && !clientList_2_1.done && (_a = clientList_2.return)) _a.call(clientList_2);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n}\r\nfunction getClientList() {\r\n return self.clients.matchAll({\r\n type: 'window',\r\n includeUncontrolled: true\r\n // TS doesn't know that \"type: 'window'\" means it'll return WindowClient[]\r\n });\r\n}\r\nfunction showNotification(notificationPayloadInternal) {\r\n var _a;\r\n // Note: Firefox does not support the maxActions property.\r\n // https://developer.mozilla.org/en-US/docs/Web/API/notification/maxActions\r\n var actions = notificationPayloadInternal.actions;\r\n var maxActions = Notification.maxActions;\r\n if (actions && maxActions && actions.length > maxActions) {\r\n console.warn(\"This browser only supports \" + maxActions + \" actions. The remaining actions will not be displayed.\");\r\n }\r\n return self.registration.showNotification((_a = \r\n /* title= */ notificationPayloadInternal.title) !== null && _a !== void 0 ? _a : '', notificationPayloadInternal);\r\n}\r\nfunction getLink(payload) {\r\n var _a, _b, _c;\r\n // eslint-disable-next-line camelcase\r\n var link = (_b = (_a = payload.fcmOptions) === null || _a === void 0 ? void 0 : _a.link) !== null && _b !== void 0 ? _b : (_c = payload.notification) === null || _c === void 0 ? void 0 : _c.click_action;\r\n if (link) {\r\n return link;\r\n }\r\n if (isConsoleMessage(payload.data)) {\r\n // Notification created in the Firebase Console. Redirect to origin.\r\n return self.location.origin;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar WindowController = /** @class */ (function () {\r\n function WindowController(firebaseDependencies) {\r\n var _this = this;\r\n this.firebaseDependencies = firebaseDependencies;\r\n this.vapidKey = null;\r\n this.onMessageCallback = null;\r\n navigator.serviceWorker.addEventListener('message', function (e) {\r\n return _this.messageEventListener(e);\r\n });\r\n }\r\n Object.defineProperty(WindowController.prototype, \"app\", {\r\n get: function () {\r\n return this.firebaseDependencies.app;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WindowController.prototype.messageEventListener = function (event) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, dataPayload;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n internalPayload = event.data;\r\n if (!internalPayload.isFirebaseMessaging) {\r\n return [2 /*return*/];\r\n }\r\n // onMessageCallback is either a function or observer/subscriber.\r\n // TODO: in the modularization release, have onMessage handle type MessagePayload as supposed to\r\n // the legacy payload where some fields are in snake cases.\r\n if (this.onMessageCallback &&\r\n internalPayload.messageType === MessageType.PUSH_RECEIVED) {\r\n if (typeof this.onMessageCallback === 'function') {\r\n this.onMessageCallback(stripInternalFields(Object.assign({}, internalPayload)));\r\n }\r\n else {\r\n this.onMessageCallback.next(Object.assign({}, internalPayload));\r\n }\r\n }\r\n dataPayload = internalPayload.data;\r\n if (!(isConsoleMessage(dataPayload) &&\r\n dataPayload[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1')) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.logEvent(internalPayload.messageType, dataPayload)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.getVapidKey = function () {\r\n return this.vapidKey;\r\n };\r\n WindowController.prototype.getSwReg = function () {\r\n return this.swRegistration;\r\n };\r\n WindowController.prototype.getToken = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(Notification.permission === 'default')) return [3 /*break*/, 2];\r\n return [4 /*yield*/, Notification.requestPermission()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n return [4 /*yield*/, this.updateVapidKey(options === null || options === void 0 ? void 0 : options.vapidKey)];\r\n case 3:\r\n _a.sent();\r\n return [4 /*yield*/, this.updateSwReg(options === null || options === void 0 ? void 0 : options.serviceWorkerRegistration)];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/, getToken(this.firebaseDependencies, this.swRegistration, this.vapidKey)];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.updateVapidKey = function (vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!!vapidKey) {\r\n this.vapidKey = vapidKey;\r\n }\r\n else if (!this.vapidKey) {\r\n this.vapidKey = DEFAULT_VAPID_KEY;\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n WindowController.prototype.updateSwReg = function (swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(!swRegistration && !this.swRegistration)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.registerDefaultSw()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (!swRegistration && !!this.swRegistration) {\r\n return [2 /*return*/];\r\n }\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */);\r\n }\r\n this.swRegistration = swRegistration;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.registerDefaultSw = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, e_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, 2, , 3]);\r\n _a = this;\r\n return [4 /*yield*/, navigator.serviceWorker.register(DEFAULT_SW_PATH, {\r\n scope: DEFAULT_SW_SCOPE\r\n })];\r\n case 1:\r\n _a.swRegistration = _b.sent();\r\n // The timing when browser updates sw when sw has an update is unreliable by my experiment. It\r\n // leads to version conflict when the SDK upgrades to a newer version in the main page, but sw\r\n // is stuck with the old version. For example,\r\n // https://github.com/firebase/firebase-js-sdk/issues/2590 The following line reliably updates\r\n // sw if there was an update.\r\n this.swRegistration.update().catch(function () {\r\n /* it is non blocking and we don't care if it failed */\r\n });\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_1 = _b.sent();\r\n throw ERROR_FACTORY.create(\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */, {\r\n browserErrorMessage: e_1.message\r\n });\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.deleteToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!this.swRegistration) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.registerDefaultSw()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, deleteToken(this.firebaseDependencies, this.swRegistration)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Request permission if it is not currently granted.\r\n *\r\n * @return Resolves if the permission was granted, rejects otherwise.\r\n *\r\n * @deprecated Use Notification.requestPermission() instead.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Notification/requestPermission\r\n */\r\n WindowController.prototype.requestPermission = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var permissionResult;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (Notification.permission === 'granted') {\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, Notification.requestPermission()];\r\n case 1:\r\n permissionResult = _a.sent();\r\n if (permissionResult === 'granted') {\r\n return [2 /*return*/];\r\n }\r\n else if (permissionResult === 'denied') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"permission-default\" /* PERMISSION_DEFAULT */);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @deprecated. Use getToken(options?: {vapidKey?: string; serviceWorkerRegistration?:\r\n * ServiceWorkerRegistration;}): Promise instead.\r\n */\r\n WindowController.prototype.usePublicVapidKey = function (vapidKey) {\r\n if (this.vapidKey !== null) {\r\n throw ERROR_FACTORY.create(\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */);\r\n }\r\n if (typeof vapidKey !== 'string' || vapidKey.length === 0) {\r\n throw ERROR_FACTORY.create(\"invalid-vapid-key\" /* INVALID_VAPID_KEY */);\r\n }\r\n this.vapidKey = vapidKey;\r\n };\r\n /**\r\n * @deprecated. Use getToken(options?: {vapidKey?: string; serviceWorkerRegistration?:\r\n * ServiceWorkerRegistration;}): Promise instead.\r\n */\r\n WindowController.prototype.useServiceWorker = function (swRegistration) {\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */);\r\n }\r\n if (this.swRegistration) {\r\n throw ERROR_FACTORY.create(\"use-sw-after-get-token\" /* USE_SW_AFTER_GET_TOKEN */);\r\n }\r\n this.swRegistration = swRegistration;\r\n };\r\n /**\r\n * @param nextOrObserver An observer object or a function triggered on message.\r\n *\r\n * @return The unsubscribe function for the observer.\r\n */\r\n WindowController.prototype.onMessage = function (nextOrObserver) {\r\n var _this = this;\r\n this.onMessageCallback = nextOrObserver;\r\n return function () {\r\n _this.onMessageCallback = null;\r\n };\r\n };\r\n WindowController.prototype.setBackgroundMessageHandler = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-sw\" /* AVAILABLE_IN_SW */);\r\n };\r\n WindowController.prototype.onBackgroundMessage = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-sw\" /* AVAILABLE_IN_SW */);\r\n };\r\n /**\r\n * @deprecated No-op. It was initially designed with token rotation requests from server in mind.\r\n * However, the plan to implement such feature was abandoned.\r\n */\r\n WindowController.prototype.onTokenRefresh = function () {\r\n return function () { };\r\n };\r\n WindowController.prototype.logEvent = function (messageType, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var eventType, analytics;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n eventType = getEventType(messageType);\r\n return [4 /*yield*/, this.firebaseDependencies.analyticsProvider.get()];\r\n case 1:\r\n analytics = _a.sent();\r\n analytics.logEvent(eventType, {\r\n /* eslint-disable camelcase */\r\n message_id: data[CONSOLE_CAMPAIGN_ID],\r\n message_name: data[CONSOLE_CAMPAIGN_NAME],\r\n message_time: data[CONSOLE_CAMPAIGN_TIME],\r\n message_device_time: Math.floor(Date.now() / 1000)\r\n /* eslint-enable camelcase */\r\n });\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return WindowController;\r\n}());\r\nfunction getEventType(messageType) {\r\n switch (messageType) {\r\n case MessageType.NOTIFICATION_CLICKED:\r\n return 'notification_open';\r\n case MessageType.PUSH_RECEIVED:\r\n return 'notification_foreground';\r\n default:\r\n throw new Error();\r\n }\r\n}\r\nfunction stripInternalFields(internalPayload) {\r\n delete internalPayload.messageType;\r\n delete internalPayload.isFirebaseMessaging;\r\n return internalPayload;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n var e_1, _a;\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration Object');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n var configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId',\r\n 'messagingSenderId'\r\n ];\r\n var options = app.options;\r\n try {\r\n for (var configKeys_1 = __values(configKeys), configKeys_1_1 = configKeys_1.next(); !configKeys_1_1.done; configKeys_1_1 = configKeys_1.next()) {\r\n var keyName = configKeys_1_1.value;\r\n if (!options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (configKeys_1_1 && !configKeys_1_1.done && (_a = configKeys_1.return)) _a.call(configKeys_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: options.projectId,\r\n apiKey: options.apiKey,\r\n appId: options.appId,\r\n senderId: options.messagingSenderId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName: valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar MESSAGING_NAME = 'messaging';\r\nfunction factoryMethod(container) {\r\n // Dependencies.\r\n var app = container.getProvider('app').getImmediate();\r\n var appConfig = extractAppConfig(app);\r\n var installations = container.getProvider('installations').getImmediate();\r\n var analyticsProvider = container.getProvider('analytics-internal');\r\n var firebaseDependencies = {\r\n app: app,\r\n appConfig: appConfig,\r\n installations: installations,\r\n analyticsProvider: analyticsProvider\r\n };\r\n if (!isSupported()) {\r\n throw ERROR_FACTORY.create(\"unsupported-browser\" /* UNSUPPORTED_BROWSER */);\r\n }\r\n if (self && 'ServiceWorkerGlobalScope' in self) {\r\n // Running in ServiceWorker context\r\n return new SwController(firebaseDependencies);\r\n }\r\n else {\r\n // Assume we are in the window context.\r\n return new WindowController(firebaseDependencies);\r\n }\r\n}\r\nvar NAMESPACE_EXPORTS = {\r\n isSupported: isSupported\r\n};\r\nfirebase.INTERNAL.registerComponent(new Component(MESSAGING_NAME, factoryMethod, \"PUBLIC\" /* PUBLIC */).setServiceProps(NAMESPACE_EXPORTS));\r\nfunction isSupported() {\r\n if (self && 'ServiceWorkerGlobalScope' in self) {\r\n // Running in ServiceWorker context\r\n return isSWControllerSupported();\r\n }\r\n else {\r\n // Assume we are in the window context.\r\n return isWindowControllerSupported();\r\n }\r\n}\r\n/**\r\n * Checks to see if the required APIs exist.\r\n */\r\nfunction isWindowControllerSupported() {\r\n return ('indexedDB' in window &&\r\n indexedDB !== null &&\r\n navigator.cookieEnabled &&\r\n 'serviceWorker' in navigator &&\r\n 'PushManager' in window &&\r\n 'Notification' in window &&\r\n 'fetch' in window &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\r\n/**\r\n * Checks to see if the required APIs exist within SW Context.\r\n */\r\nfunction isSWControllerSupported() {\r\n return ('indexedDB' in self &&\r\n indexedDB !== null &&\r\n 'PushManager' in self &&\r\n 'Notification' in self &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\n//# sourceMappingURL=index.esm.js.map\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import firebase from '@firebase/app';\nimport { __extends, __awaiter, __generator, __assign, __spreadArrays } from 'tslib';\nimport { FirebaseError } from '@firebase/util';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Constants used in the Firebase Storage library.\r\n */\r\n/**\r\n * Domain name for firebase storage.\r\n */\r\nvar DEFAULT_HOST = 'firebasestorage.googleapis.com';\r\n/**\r\n * The key in Firebase config json for the storage bucket.\r\n */\r\nvar CONFIG_STORAGE_BUCKET_KEY = 'storageBucket';\r\n/**\r\n * 2 minutes\r\n *\r\n * The timeout for all operations except upload.\r\n */\r\nvar DEFAULT_MAX_OPERATION_RETRY_TIME = 2 * 60 * 1000;\r\n/**\r\n * 10 minutes\r\n *\r\n * The timeout for upload.\r\n */\r\nvar DEFAULT_MAX_UPLOAD_RETRY_TIME = 10 * 60 * 1000;\n\nvar FirebaseStorageError = /** @class */ (function (_super) {\r\n __extends(FirebaseStorageError, _super);\r\n function FirebaseStorageError(code, message) {\r\n var _this = _super.call(this, prependCode(code), \"Firebase Storage: \" + message + \" (\" + prependCode(code) + \")\") || this;\r\n _this.customData = { serverResponse: null };\r\n // Without this, `instanceof FirebaseStorageError`, in tests for example,\r\n // returns false.\r\n Object.setPrototypeOf(_this, FirebaseStorageError.prototype);\r\n return _this;\r\n }\r\n FirebaseStorageError.prototype.codeEquals = function (code) {\r\n return prependCode(code) === this.code;\r\n };\r\n Object.defineProperty(FirebaseStorageError.prototype, \"message\", {\r\n get: function () {\r\n if (this.customData.serverResponse) {\r\n return this.message + \"\\n\" + this.customData.serverResponse;\r\n }\r\n else {\r\n return this.message;\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirebaseStorageError.prototype, \"serverResponse\", {\r\n get: function () {\r\n return this.customData.serverResponse;\r\n },\r\n set: function (serverResponse) {\r\n this.customData.serverResponse = serverResponse;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return FirebaseStorageError;\r\n}(FirebaseError));\r\nvar Code = {\r\n // Shared between all platforms\r\n UNKNOWN: 'unknown',\r\n OBJECT_NOT_FOUND: 'object-not-found',\r\n BUCKET_NOT_FOUND: 'bucket-not-found',\r\n PROJECT_NOT_FOUND: 'project-not-found',\r\n QUOTA_EXCEEDED: 'quota-exceeded',\r\n UNAUTHENTICATED: 'unauthenticated',\r\n UNAUTHORIZED: 'unauthorized',\r\n RETRY_LIMIT_EXCEEDED: 'retry-limit-exceeded',\r\n INVALID_CHECKSUM: 'invalid-checksum',\r\n CANCELED: 'canceled',\r\n // JS specific\r\n INVALID_EVENT_NAME: 'invalid-event-name',\r\n INVALID_URL: 'invalid-url',\r\n INVALID_DEFAULT_BUCKET: 'invalid-default-bucket',\r\n NO_DEFAULT_BUCKET: 'no-default-bucket',\r\n CANNOT_SLICE_BLOB: 'cannot-slice-blob',\r\n SERVER_FILE_WRONG_SIZE: 'server-file-wrong-size',\r\n NO_DOWNLOAD_URL: 'no-download-url',\r\n INVALID_ARGUMENT: 'invalid-argument',\r\n INVALID_ARGUMENT_COUNT: 'invalid-argument-count',\r\n APP_DELETED: 'app-deleted',\r\n INVALID_ROOT_OPERATION: 'invalid-root-operation',\r\n INVALID_FORMAT: 'invalid-format',\r\n INTERNAL_ERROR: 'internal-error',\r\n UNSUPPORTED_ENVIRONMENT: 'unsupported-environment'\r\n};\r\nfunction prependCode(code) {\r\n return 'storage/' + code;\r\n}\r\nfunction unknown() {\r\n var message = 'An unknown error occurred, please check the error payload for ' +\r\n 'server response.';\r\n return new FirebaseStorageError(Code.UNKNOWN, message);\r\n}\r\nfunction objectNotFound(path) {\r\n return new FirebaseStorageError(Code.OBJECT_NOT_FOUND, \"Object '\" + path + \"' does not exist.\");\r\n}\r\nfunction quotaExceeded(bucket) {\r\n return new FirebaseStorageError(Code.QUOTA_EXCEEDED, \"Quota for bucket '\" +\r\n bucket +\r\n \"' exceeded, please view quota on \" +\r\n 'https://firebase.google.com/pricing/.');\r\n}\r\nfunction unauthenticated() {\r\n var message = 'User is not authenticated, please authenticate using Firebase ' +\r\n 'Authentication and try again.';\r\n return new FirebaseStorageError(Code.UNAUTHENTICATED, message);\r\n}\r\nfunction unauthorized(path) {\r\n return new FirebaseStorageError(Code.UNAUTHORIZED, \"User does not have permission to access '\" + path + \"'.\");\r\n}\r\nfunction retryLimitExceeded() {\r\n return new FirebaseStorageError(Code.RETRY_LIMIT_EXCEEDED, 'Max retry time for operation exceeded, please try again.');\r\n}\r\nfunction canceled() {\r\n return new FirebaseStorageError(Code.CANCELED, 'User canceled the upload/download.');\r\n}\r\nfunction invalidUrl(url) {\r\n return new FirebaseStorageError(Code.INVALID_URL, \"Invalid URL '\" + url + \"'.\");\r\n}\r\nfunction invalidDefaultBucket(bucket) {\r\n return new FirebaseStorageError(Code.INVALID_DEFAULT_BUCKET, \"Invalid default bucket '\" + bucket + \"'.\");\r\n}\r\nfunction noDefaultBucket() {\r\n return new FirebaseStorageError(Code.NO_DEFAULT_BUCKET, 'No default bucket ' +\r\n \"found. Did you set the '\" +\r\n CONFIG_STORAGE_BUCKET_KEY +\r\n \"' property when initializing the app?\");\r\n}\r\nfunction cannotSliceBlob() {\r\n return new FirebaseStorageError(Code.CANNOT_SLICE_BLOB, 'Cannot slice blob for upload. Please retry the upload.');\r\n}\r\nfunction serverFileWrongSize() {\r\n return new FirebaseStorageError(Code.SERVER_FILE_WRONG_SIZE, 'Server recorded incorrect upload file size, please retry the upload.');\r\n}\r\nfunction noDownloadURL() {\r\n return new FirebaseStorageError(Code.NO_DOWNLOAD_URL, 'The given file does not have any download URLs.');\r\n}\r\nfunction invalidArgument(message) {\r\n return new FirebaseStorageError(Code.INVALID_ARGUMENT, message);\r\n}\r\nfunction appDeleted() {\r\n return new FirebaseStorageError(Code.APP_DELETED, 'The Firebase app was deleted.');\r\n}\r\n/**\r\n * @param name - The name of the operation that was invalid.\r\n */\r\nfunction invalidRootOperation(name) {\r\n return new FirebaseStorageError(Code.INVALID_ROOT_OPERATION, \"The operation '\" +\r\n name +\r\n \"' cannot be performed on a root reference, create a non-root \" +\r\n \"reference using child, such as .child('file.png').\");\r\n}\r\n/**\r\n * @param format - The format that was not valid.\r\n * @param message - A message describing the format violation.\r\n */\r\nfunction invalidFormat(format, message) {\r\n return new FirebaseStorageError(Code.INVALID_FORMAT, \"String does not match format '\" + format + \"': \" + message);\r\n}\r\n/**\r\n * @param message - A message describing the internal error.\r\n */\r\nfunction internalError(message) {\r\n throw new FirebaseStorageError(Code.INTERNAL_ERROR, 'Internal error: ' + message);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar StringFormat = {\r\n RAW: 'raw',\r\n BASE64: 'base64',\r\n BASE64URL: 'base64url',\r\n DATA_URL: 'data_url'\r\n};\r\nvar StringData = /** @class */ (function () {\r\n function StringData(data, contentType) {\r\n this.data = data;\r\n this.contentType = contentType || null;\r\n }\r\n return StringData;\r\n}());\r\nfunction dataFromString(format, stringData) {\r\n switch (format) {\r\n case StringFormat.RAW:\r\n return new StringData(utf8Bytes_(stringData));\r\n case StringFormat.BASE64:\r\n case StringFormat.BASE64URL:\r\n return new StringData(base64Bytes_(format, stringData));\r\n case StringFormat.DATA_URL:\r\n return new StringData(dataURLBytes_(stringData), dataURLContentType_(stringData));\r\n // do nothing\r\n }\r\n // assert(false);\r\n throw unknown();\r\n}\r\nfunction utf8Bytes_(value) {\r\n var b = [];\r\n for (var i = 0; i < value.length; i++) {\r\n var c = value.charCodeAt(i);\r\n if (c <= 127) {\r\n b.push(c);\r\n }\r\n else {\r\n if (c <= 2047) {\r\n b.push(192 | (c >> 6), 128 | (c & 63));\r\n }\r\n else {\r\n if ((c & 64512) === 55296) {\r\n // The start of a surrogate pair.\r\n var valid = i < value.length - 1 && (value.charCodeAt(i + 1) & 64512) === 56320;\r\n if (!valid) {\r\n // The second surrogate wasn't there.\r\n b.push(239, 191, 189);\r\n }\r\n else {\r\n var hi = c;\r\n var lo = value.charCodeAt(++i);\r\n c = 65536 | ((hi & 1023) << 10) | (lo & 1023);\r\n b.push(240 | (c >> 18), 128 | ((c >> 12) & 63), 128 | ((c >> 6) & 63), 128 | (c & 63));\r\n }\r\n }\r\n else {\r\n if ((c & 64512) === 56320) {\r\n // Invalid low surrogate.\r\n b.push(239, 191, 189);\r\n }\r\n else {\r\n b.push(224 | (c >> 12), 128 | ((c >> 6) & 63), 128 | (c & 63));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return new Uint8Array(b);\r\n}\r\nfunction percentEncodedBytes_(value) {\r\n var decoded;\r\n try {\r\n decoded = decodeURIComponent(value);\r\n }\r\n catch (e) {\r\n throw invalidFormat(StringFormat.DATA_URL, 'Malformed data URL.');\r\n }\r\n return utf8Bytes_(decoded);\r\n}\r\nfunction base64Bytes_(format, value) {\r\n switch (format) {\r\n case StringFormat.BASE64: {\r\n var hasMinus = value.indexOf('-') !== -1;\r\n var hasUnder = value.indexOf('_') !== -1;\r\n if (hasMinus || hasUnder) {\r\n var invalidChar = hasMinus ? '-' : '_';\r\n throw invalidFormat(format, \"Invalid character '\" +\r\n invalidChar +\r\n \"' found: is it base64url encoded?\");\r\n }\r\n break;\r\n }\r\n case StringFormat.BASE64URL: {\r\n var hasPlus = value.indexOf('+') !== -1;\r\n var hasSlash = value.indexOf('/') !== -1;\r\n if (hasPlus || hasSlash) {\r\n var invalidChar = hasPlus ? '+' : '/';\r\n throw invalidFormat(format, \"Invalid character '\" + invalidChar + \"' found: is it base64 encoded?\");\r\n }\r\n value = value.replace(/-/g, '+').replace(/_/g, '/');\r\n break;\r\n }\r\n // do nothing\r\n }\r\n var bytes;\r\n try {\r\n bytes = atob(value);\r\n }\r\n catch (e) {\r\n throw invalidFormat(format, 'Invalid character found');\r\n }\r\n var array = new Uint8Array(bytes.length);\r\n for (var i = 0; i < bytes.length; i++) {\r\n array[i] = bytes.charCodeAt(i);\r\n }\r\n return array;\r\n}\r\nvar DataURLParts = /** @class */ (function () {\r\n function DataURLParts(dataURL) {\r\n this.base64 = false;\r\n this.contentType = null;\r\n var matches = dataURL.match(/^data:([^,]+)?,/);\r\n if (matches === null) {\r\n throw invalidFormat(StringFormat.DATA_URL, \"Must be formatted 'data:[][;base64],\");\r\n }\r\n var middle = matches[1] || null;\r\n if (middle != null) {\r\n this.base64 = endsWith(middle, ';base64');\r\n this.contentType = this.base64\r\n ? middle.substring(0, middle.length - ';base64'.length)\r\n : middle;\r\n }\r\n this.rest = dataURL.substring(dataURL.indexOf(',') + 1);\r\n }\r\n return DataURLParts;\r\n}());\r\nfunction dataURLBytes_(dataUrl) {\r\n var parts = new DataURLParts(dataUrl);\r\n if (parts.base64) {\r\n return base64Bytes_(StringFormat.BASE64, parts.rest);\r\n }\r\n else {\r\n return percentEncodedBytes_(parts.rest);\r\n }\r\n}\r\nfunction dataURLContentType_(dataUrl) {\r\n var parts = new DataURLParts(dataUrl);\r\n return parts.contentType;\r\n}\r\nfunction endsWith(s, end) {\r\n var longEnough = s.length >= end.length;\r\n if (!longEnough) {\r\n return false;\r\n }\r\n return s.substring(s.length - end.length) === end;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar TaskEvent = {\r\n /** Triggered whenever the task changes or progress is updated. */\r\n STATE_CHANGED: 'state_changed'\r\n};\r\nvar InternalTaskState = {\r\n RUNNING: 'running',\r\n PAUSING: 'pausing',\r\n PAUSED: 'paused',\r\n SUCCESS: 'success',\r\n CANCELING: 'canceling',\r\n CANCELED: 'canceled',\r\n ERROR: 'error'\r\n};\r\nvar TaskState = {\r\n /** The task is currently transferring data. */\r\n RUNNING: 'running',\r\n /** The task was paused by the user. */\r\n PAUSED: 'paused',\r\n /** The task completed successfully. */\r\n SUCCESS: 'success',\r\n /** The task was canceled. */\r\n CANCELED: 'canceled',\r\n /** The task failed with an error. */\r\n ERROR: 'error'\r\n};\r\nfunction taskStateFromInternalTaskState(state) {\r\n switch (state) {\r\n case InternalTaskState.RUNNING:\r\n case InternalTaskState.PAUSING:\r\n case InternalTaskState.CANCELING:\r\n return TaskState.RUNNING;\r\n case InternalTaskState.PAUSED:\r\n return TaskState.PAUSED;\r\n case InternalTaskState.SUCCESS:\r\n return TaskState.SUCCESS;\r\n case InternalTaskState.CANCELED:\r\n return TaskState.CANCELED;\r\n case InternalTaskState.ERROR:\r\n return TaskState.ERROR;\r\n default:\r\n // TODO(andysoto): assert(false);\r\n return TaskState.ERROR;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar ErrorCode;\r\n(function (ErrorCode) {\r\n ErrorCode[ErrorCode[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\r\n ErrorCode[ErrorCode[\"NETWORK_ERROR\"] = 1] = \"NETWORK_ERROR\";\r\n ErrorCode[ErrorCode[\"ABORT\"] = 2] = \"ABORT\";\r\n})(ErrorCode || (ErrorCode = {}));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * We use this instead of goog.net.XhrIo because goog.net.XhrIo is hyuuuuge and\r\n * doesn't work in React Native on Android.\r\n */\r\nvar NetworkXhrIo = /** @class */ (function () {\r\n function NetworkXhrIo() {\r\n var _this = this;\r\n this.sent_ = false;\r\n this.xhr_ = new XMLHttpRequest();\r\n this.errorCode_ = ErrorCode.NO_ERROR;\r\n this.sendPromise_ = new Promise(function (resolve) {\r\n _this.xhr_.addEventListener('abort', function () {\r\n _this.errorCode_ = ErrorCode.ABORT;\r\n resolve(_this);\r\n });\r\n _this.xhr_.addEventListener('error', function () {\r\n _this.errorCode_ = ErrorCode.NETWORK_ERROR;\r\n resolve(_this);\r\n });\r\n _this.xhr_.addEventListener('load', function () {\r\n resolve(_this);\r\n });\r\n });\r\n }\r\n /**\r\n * @override\r\n */\r\n NetworkXhrIo.prototype.send = function (url, method, body, headers) {\r\n if (this.sent_) {\r\n throw internalError('cannot .send() more than once');\r\n }\r\n this.sent_ = true;\r\n this.xhr_.open(method, url, true);\r\n if (headers !== undefined) {\r\n for (var key in headers) {\r\n if (headers.hasOwnProperty(key)) {\r\n this.xhr_.setRequestHeader(key, headers[key].toString());\r\n }\r\n }\r\n }\r\n if (body !== undefined) {\r\n this.xhr_.send(body);\r\n }\r\n else {\r\n this.xhr_.send();\r\n }\r\n return this.sendPromise_;\r\n };\r\n /**\r\n * @override\r\n */\r\n NetworkXhrIo.prototype.getErrorCode = function () {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getErrorCode() before sending');\r\n }\r\n return this.errorCode_;\r\n };\r\n /**\r\n * @override\r\n */\r\n NetworkXhrIo.prototype.getStatus = function () {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getStatus() before sending');\r\n }\r\n try {\r\n return this.xhr_.status;\r\n }\r\n catch (e) {\r\n return -1;\r\n }\r\n };\r\n /**\r\n * @override\r\n */\r\n NetworkXhrIo.prototype.getResponseText = function () {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getResponseText() before sending');\r\n }\r\n return this.xhr_.responseText;\r\n };\r\n /**\r\n * Aborts the request.\r\n * @override\r\n */\r\n NetworkXhrIo.prototype.abort = function () {\r\n this.xhr_.abort();\r\n };\r\n /**\r\n * @override\r\n */\r\n NetworkXhrIo.prototype.getResponseHeader = function (header) {\r\n return this.xhr_.getResponseHeader(header);\r\n };\r\n /**\r\n * @override\r\n */\r\n NetworkXhrIo.prototype.addUploadProgressListener = function (listener) {\r\n if (this.xhr_.upload != null) {\r\n this.xhr_.upload.addEventListener('progress', listener);\r\n }\r\n };\r\n /**\r\n * @override\r\n */\r\n NetworkXhrIo.prototype.removeUploadProgressListener = function (listener) {\r\n if (this.xhr_.upload != null) {\r\n this.xhr_.upload.removeEventListener('progress', listener);\r\n }\r\n };\r\n return NetworkXhrIo;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Factory-like class for creating XhrIo instances.\r\n */\r\nvar XhrIoPool = /** @class */ (function () {\r\n function XhrIoPool() {\r\n }\r\n XhrIoPool.prototype.createXhrIo = function () {\r\n return new NetworkXhrIo();\r\n };\r\n return XhrIoPool;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isJustDef(p) {\r\n return p !== void 0;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction isFunction(p) {\r\n return typeof p === 'function';\r\n}\r\nfunction isNonArrayObject(p) {\r\n return typeof p === 'object' && !Array.isArray(p);\r\n}\r\nfunction isString(p) {\r\n return typeof p === 'string' || p instanceof String;\r\n}\r\nfunction isNativeBlob(p) {\r\n return isNativeBlobDefined() && p instanceof Blob;\r\n}\r\nfunction isNativeBlobDefined() {\r\n return typeof Blob !== 'undefined';\r\n}\r\nfunction validateNumber(argument, minValue, maxValue, value) {\r\n if (value < minValue) {\r\n throw new FirebaseStorageError(Code.INVALID_ARGUMENT, \"Invalid value for '\" + argument + \"'. Expected \" + minValue + \" or greater.\");\r\n }\r\n if (value > maxValue) {\r\n throw new FirebaseStorageError(Code.INVALID_ARGUMENT, \"Invalid value for '\" + argument + \"'. Expected \" + maxValue + \" or less.\");\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getBlobBuilder() {\r\n if (typeof BlobBuilder !== 'undefined') {\r\n return BlobBuilder;\r\n }\r\n else if (typeof WebKitBlobBuilder !== 'undefined') {\r\n return WebKitBlobBuilder;\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n/**\r\n * Concatenates one or more values together and converts them to a Blob.\r\n *\r\n * @param args The values that will make up the resulting blob.\r\n * @return The blob.\r\n */\r\nfunction getBlob() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var BlobBuilder = getBlobBuilder();\r\n if (BlobBuilder !== undefined) {\r\n var bb = new BlobBuilder();\r\n for (var i = 0; i < args.length; i++) {\r\n bb.append(args[i]);\r\n }\r\n return bb.getBlob();\r\n }\r\n else {\r\n if (isNativeBlobDefined()) {\r\n return new Blob(args);\r\n }\r\n else {\r\n throw new FirebaseStorageError(Code.UNSUPPORTED_ENVIRONMENT, \"This browser doesn't seem to support creating Blobs\");\r\n }\r\n }\r\n}\r\n/**\r\n * Slices the blob. The returned blob contains data from the start byte\r\n * (inclusive) till the end byte (exclusive). Negative indices cannot be used.\r\n *\r\n * @param blob The blob to be sliced.\r\n * @param start Index of the starting byte.\r\n * @param end Index of the ending byte.\r\n * @return The blob slice or null if not supported.\r\n */\r\nfunction sliceBlob(blob, start, end) {\r\n if (blob.webkitSlice) {\r\n return blob.webkitSlice(start, end);\r\n }\r\n else if (blob.mozSlice) {\r\n return blob.mozSlice(start, end);\r\n }\r\n else if (blob.slice) {\r\n return blob.slice(start, end);\r\n }\r\n return null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @param opt_elideCopy - If true, doesn't copy mutable input data\r\n * (e.g. Uint8Arrays). Pass true only if you know the objects will not be\r\n * modified after this blob's construction.\r\n */\r\nvar FbsBlob = /** @class */ (function () {\r\n function FbsBlob(data, elideCopy) {\r\n var size = 0;\r\n var blobType = '';\r\n if (isNativeBlob(data)) {\r\n this.data_ = data;\r\n size = data.size;\r\n blobType = data.type;\r\n }\r\n else if (data instanceof ArrayBuffer) {\r\n if (elideCopy) {\r\n this.data_ = new Uint8Array(data);\r\n }\r\n else {\r\n this.data_ = new Uint8Array(data.byteLength);\r\n this.data_.set(new Uint8Array(data));\r\n }\r\n size = this.data_.length;\r\n }\r\n else if (data instanceof Uint8Array) {\r\n if (elideCopy) {\r\n this.data_ = data;\r\n }\r\n else {\r\n this.data_ = new Uint8Array(data.length);\r\n this.data_.set(data);\r\n }\r\n size = data.length;\r\n }\r\n this.size_ = size;\r\n this.type_ = blobType;\r\n }\r\n FbsBlob.prototype.size = function () {\r\n return this.size_;\r\n };\r\n FbsBlob.prototype.type = function () {\r\n return this.type_;\r\n };\r\n FbsBlob.prototype.slice = function (startByte, endByte) {\r\n if (isNativeBlob(this.data_)) {\r\n var realBlob = this.data_;\r\n var sliced = sliceBlob(realBlob, startByte, endByte);\r\n if (sliced === null) {\r\n return null;\r\n }\r\n return new FbsBlob(sliced);\r\n }\r\n else {\r\n var slice = new Uint8Array(this.data_.buffer, startByte, endByte - startByte);\r\n return new FbsBlob(slice, true);\r\n }\r\n };\r\n FbsBlob.getBlob = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (isNativeBlobDefined()) {\r\n var blobby = args.map(function (val) {\r\n if (val instanceof FbsBlob) {\r\n return val.data_;\r\n }\r\n else {\r\n return val;\r\n }\r\n });\r\n return new FbsBlob(getBlob.apply(null, blobby));\r\n }\r\n else {\r\n var uint8Arrays = args.map(function (val) {\r\n if (isString(val)) {\r\n return dataFromString(StringFormat.RAW, val).data;\r\n }\r\n else {\r\n // Blobs don't exist, so this has to be a Uint8Array.\r\n return val.data_;\r\n }\r\n });\r\n var finalLength_1 = 0;\r\n uint8Arrays.forEach(function (array) {\r\n finalLength_1 += array.byteLength;\r\n });\r\n var merged_1 = new Uint8Array(finalLength_1);\r\n var index_1 = 0;\r\n uint8Arrays.forEach(function (array) {\r\n for (var i = 0; i < array.length; i++) {\r\n merged_1[index_1++] = array[i];\r\n }\r\n });\r\n return new FbsBlob(merged_1, true);\r\n }\r\n };\r\n FbsBlob.prototype.uploadData = function () {\r\n return this.data_;\r\n };\r\n return FbsBlob;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar Location = /** @class */ (function () {\r\n function Location(bucket, path) {\r\n this.bucket = bucket;\r\n this.path_ = path;\r\n }\r\n Object.defineProperty(Location.prototype, \"path\", {\r\n get: function () {\r\n return this.path_;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Location.prototype, \"isRoot\", {\r\n get: function () {\r\n return this.path.length === 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Location.prototype.fullServerUrl = function () {\r\n var encode = encodeURIComponent;\r\n return '/b/' + encode(this.bucket) + '/o/' + encode(this.path);\r\n };\r\n Location.prototype.bucketOnlyServerUrl = function () {\r\n var encode = encodeURIComponent;\r\n return '/b/' + encode(this.bucket) + '/o';\r\n };\r\n Location.makeFromBucketSpec = function (bucketString) {\r\n var bucketLocation;\r\n try {\r\n bucketLocation = Location.makeFromUrl(bucketString);\r\n }\r\n catch (e) {\r\n // Not valid URL, use as-is. This lets you put bare bucket names in\r\n // config.\r\n return new Location(bucketString, '');\r\n }\r\n if (bucketLocation.path === '') {\r\n return bucketLocation;\r\n }\r\n else {\r\n throw invalidDefaultBucket(bucketString);\r\n }\r\n };\r\n Location.makeFromUrl = function (url) {\r\n var location = null;\r\n var bucketDomain = '([A-Za-z0-9.\\\\-_]+)';\r\n function gsModify(loc) {\r\n if (loc.path.charAt(loc.path.length - 1) === '/') {\r\n loc.path_ = loc.path_.slice(0, -1);\r\n }\r\n }\r\n var gsPath = '(/(.*))?$';\r\n var gsRegex = new RegExp('^gs://' + bucketDomain + gsPath, 'i');\r\n var gsIndices = { bucket: 1, path: 3 };\r\n function httpModify(loc) {\r\n loc.path_ = decodeURIComponent(loc.path);\r\n }\r\n var version = 'v[A-Za-z0-9_]+';\r\n var firebaseStorageHost = DEFAULT_HOST.replace(/[.]/g, '\\\\.');\r\n var firebaseStoragePath = '(/([^?#]*).*)?$';\r\n var firebaseStorageRegExp = new RegExp(\"^https?://\" + firebaseStorageHost + \"/\" + version + \"/b/\" + bucketDomain + \"/o\" + firebaseStoragePath, 'i');\r\n var firebaseStorageIndices = { bucket: 1, path: 3 };\r\n var cloudStorageHost = '(?:storage.googleapis.com|storage.cloud.google.com)';\r\n var cloudStoragePath = '([^?#]*)';\r\n var cloudStorageRegExp = new RegExp(\"^https?://\" + cloudStorageHost + \"/\" + bucketDomain + \"/\" + cloudStoragePath, 'i');\r\n var cloudStorageIndices = { bucket: 1, path: 2 };\r\n var groups = [\r\n { regex: gsRegex, indices: gsIndices, postModify: gsModify },\r\n {\r\n regex: firebaseStorageRegExp,\r\n indices: firebaseStorageIndices,\r\n postModify: httpModify\r\n },\r\n {\r\n regex: cloudStorageRegExp,\r\n indices: cloudStorageIndices,\r\n postModify: httpModify\r\n }\r\n ];\r\n for (var i = 0; i < groups.length; i++) {\r\n var group = groups[i];\r\n var captures = group.regex.exec(url);\r\n if (captures) {\r\n var bucketValue = captures[group.indices.bucket];\r\n var pathValue = captures[group.indices.path];\r\n if (!pathValue) {\r\n pathValue = '';\r\n }\r\n location = new Location(bucketValue, pathValue);\r\n group.postModify(location);\r\n break;\r\n }\r\n }\r\n if (location == null) {\r\n throw invalidUrl(url);\r\n }\r\n return location;\r\n };\r\n return Location;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns the Object resulting from parsing the given JSON, or null if the\r\n * given string does not represent a JSON object.\r\n */\r\nfunction jsonObjectOrNull(s) {\r\n var obj;\r\n try {\r\n obj = JSON.parse(s);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n if (isNonArrayObject(obj)) {\r\n return obj;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Contains helper methods for manipulating paths.\r\n */\r\n/**\r\n * @return Null if the path is already at the root.\r\n */\r\nfunction parent(path) {\r\n if (path.length === 0) {\r\n return null;\r\n }\r\n var index = path.lastIndexOf('/');\r\n if (index === -1) {\r\n return '';\r\n }\r\n var newPath = path.slice(0, index);\r\n return newPath;\r\n}\r\nfunction child(path, childPath) {\r\n var canonicalChildPath = childPath\r\n .split('/')\r\n .filter(function (component) { return component.length > 0; })\r\n .join('/');\r\n if (path.length === 0) {\r\n return canonicalChildPath;\r\n }\r\n else {\r\n return path + '/' + canonicalChildPath;\r\n }\r\n}\r\n/**\r\n * Returns the last component of a path.\r\n * '/foo/bar' -> 'bar'\r\n * '/foo/bar/baz/' -> 'baz/'\r\n * '/a' -> 'a'\r\n */\r\nfunction lastComponent(path) {\r\n var index = path.lastIndexOf('/', path.length - 2);\r\n if (index === -1) {\r\n return path;\r\n }\r\n else {\r\n return path.slice(index + 1);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction makeUrl(urlPart) {\r\n return \"https://\" + DEFAULT_HOST + \"/v0\" + urlPart;\r\n}\r\nfunction makeQueryString(params) {\r\n var encode = encodeURIComponent;\r\n var queryPart = '?';\r\n for (var key in params) {\r\n if (params.hasOwnProperty(key)) {\r\n var nextPart = encode(key) + '=' + encode(params[key]);\r\n queryPart = queryPart + nextPart + '&';\r\n }\r\n }\r\n // Chop off the extra '&' or '?' on the end\r\n queryPart = queryPart.slice(0, -1);\r\n return queryPart;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction noXform_(metadata, value) {\r\n return value;\r\n}\r\nvar Mapping = /** @class */ (function () {\r\n function Mapping(server, local, writable, xform) {\r\n this.server = server;\r\n this.local = local || server;\r\n this.writable = !!writable;\r\n this.xform = xform || noXform_;\r\n }\r\n return Mapping;\r\n}());\r\nvar mappings_ = null;\r\nfunction xformPath(fullPath) {\r\n if (!isString(fullPath) || fullPath.length < 2) {\r\n return fullPath;\r\n }\r\n else {\r\n return lastComponent(fullPath);\r\n }\r\n}\r\nfunction getMappings() {\r\n if (mappings_) {\r\n return mappings_;\r\n }\r\n var mappings = [];\r\n mappings.push(new Mapping('bucket'));\r\n mappings.push(new Mapping('generation'));\r\n mappings.push(new Mapping('metageneration'));\r\n mappings.push(new Mapping('name', 'fullPath', true));\r\n function mappingsXformPath(_metadata, fullPath) {\r\n return xformPath(fullPath);\r\n }\r\n var nameMapping = new Mapping('name');\r\n nameMapping.xform = mappingsXformPath;\r\n mappings.push(nameMapping);\r\n /**\r\n * Coerces the second param to a number, if it is defined.\r\n */\r\n function xformSize(_metadata, size) {\r\n if (size !== undefined) {\r\n return Number(size);\r\n }\r\n else {\r\n return size;\r\n }\r\n }\r\n var sizeMapping = new Mapping('size');\r\n sizeMapping.xform = xformSize;\r\n mappings.push(sizeMapping);\r\n mappings.push(new Mapping('timeCreated'));\r\n mappings.push(new Mapping('updated'));\r\n mappings.push(new Mapping('md5Hash', null, true));\r\n mappings.push(new Mapping('cacheControl', null, true));\r\n mappings.push(new Mapping('contentDisposition', null, true));\r\n mappings.push(new Mapping('contentEncoding', null, true));\r\n mappings.push(new Mapping('contentLanguage', null, true));\r\n mappings.push(new Mapping('contentType', null, true));\r\n mappings.push(new Mapping('metadata', 'customMetadata', true));\r\n mappings_ = mappings;\r\n return mappings_;\r\n}\r\nfunction addRef(metadata, service) {\r\n function generateRef() {\r\n var bucket = metadata['bucket'];\r\n var path = metadata['fullPath'];\r\n var loc = new Location(bucket, path);\r\n return service.makeStorageReference(loc);\r\n }\r\n Object.defineProperty(metadata, 'ref', { get: generateRef });\r\n}\r\nfunction fromResource(service, resource, mappings) {\r\n var metadata = {};\r\n metadata['type'] = 'file';\r\n var len = mappings.length;\r\n for (var i = 0; i < len; i++) {\r\n var mapping = mappings[i];\r\n metadata[mapping.local] = mapping.xform(metadata, resource[mapping.server]);\r\n }\r\n addRef(metadata, service);\r\n return metadata;\r\n}\r\nfunction fromResourceString(service, resourceString, mappings) {\r\n var obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n var resource = obj;\r\n return fromResource(service, resource, mappings);\r\n}\r\nfunction downloadUrlFromResourceString(metadata, resourceString) {\r\n var obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n if (!isString(obj['downloadTokens'])) {\r\n // This can happen if objects are uploaded through GCS and retrieved\r\n // through list, so we don't want to throw an Error.\r\n return null;\r\n }\r\n var tokens = obj['downloadTokens'];\r\n if (tokens.length === 0) {\r\n return null;\r\n }\r\n var encode = encodeURIComponent;\r\n var tokensList = tokens.split(',');\r\n var urls = tokensList.map(function (token) {\r\n var bucket = metadata['bucket'];\r\n var path = metadata['fullPath'];\r\n var urlPart = '/b/' + encode(bucket) + '/o/' + encode(path);\r\n var base = makeUrl(urlPart);\r\n var queryString = makeQueryString({\r\n alt: 'media',\r\n token: token\r\n });\r\n return base + queryString;\r\n });\r\n return urls[0];\r\n}\r\nfunction toResourceString(metadata, mappings) {\r\n var resource = {};\r\n var len = mappings.length;\r\n for (var i = 0; i < len; i++) {\r\n var mapping = mappings[i];\r\n if (mapping.writable) {\r\n resource[mapping.server] = metadata[mapping.local];\r\n }\r\n }\r\n return JSON.stringify(resource);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar PREFIXES_KEY = 'prefixes';\r\nvar ITEMS_KEY = 'items';\r\nfunction fromBackendResponse(service, bucket, resource) {\r\n var listResult = {\r\n prefixes: [],\r\n items: [],\r\n nextPageToken: resource['nextPageToken']\r\n };\r\n if (resource[PREFIXES_KEY]) {\r\n for (var _i = 0, _a = resource[PREFIXES_KEY]; _i < _a.length; _i++) {\r\n var path = _a[_i];\r\n var pathWithoutTrailingSlash = path.replace(/\\/$/, '');\r\n var reference = service.makeStorageReference(new Location(bucket, pathWithoutTrailingSlash));\r\n listResult.prefixes.push(reference);\r\n }\r\n }\r\n if (resource[ITEMS_KEY]) {\r\n for (var _b = 0, _c = resource[ITEMS_KEY]; _b < _c.length; _b++) {\r\n var item = _c[_b];\r\n var reference = service.makeStorageReference(new Location(bucket, item['name']));\r\n listResult.items.push(reference);\r\n }\r\n }\r\n return listResult;\r\n}\r\nfunction fromResponseString(service, bucket, resourceString) {\r\n var obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n var resource = obj;\r\n return fromBackendResponse(service, bucket, resource);\r\n}\n\nvar RequestInfo = /** @class */ (function () {\r\n function RequestInfo(url, method, \r\n /**\r\n * Returns the value with which to resolve the request's promise. Only called\r\n * if the request is successful. Throw from this function to reject the\r\n * returned Request's promise with the thrown error.\r\n * Note: The XhrIo passed to this function may be reused after this callback\r\n * returns. Do not keep a reference to it in any way.\r\n */\r\n handler, timeout) {\r\n this.url = url;\r\n this.method = method;\r\n this.handler = handler;\r\n this.timeout = timeout;\r\n this.urlParams = {};\r\n this.headers = {};\r\n this.body = null;\r\n this.errorHandler = null;\r\n /**\r\n * Called with the current number of bytes uploaded and total size (-1 if not\r\n * computable) of the request body (i.e. used to report upload progress).\r\n */\r\n this.progressCallback = null;\r\n this.successCodes = [200];\r\n this.additionalRetryCodes = [];\r\n }\r\n return RequestInfo;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws the UNKNOWN FirebaseStorageError if cndn is false.\r\n */\r\nfunction handlerCheck(cndn) {\r\n if (!cndn) {\r\n throw unknown();\r\n }\r\n}\r\nfunction metadataHandler(service, mappings) {\r\n function handler(xhr, text) {\r\n var metadata = fromResourceString(service, text, mappings);\r\n handlerCheck(metadata !== null);\r\n return metadata;\r\n }\r\n return handler;\r\n}\r\nfunction listHandler(service, bucket) {\r\n function handler(xhr, text) {\r\n var listResult = fromResponseString(service, bucket, text);\r\n handlerCheck(listResult !== null);\r\n return listResult;\r\n }\r\n return handler;\r\n}\r\nfunction downloadUrlHandler(service, mappings) {\r\n function handler(xhr, text) {\r\n var metadata = fromResourceString(service, text, mappings);\r\n handlerCheck(metadata !== null);\r\n return downloadUrlFromResourceString(metadata, text);\r\n }\r\n return handler;\r\n}\r\nfunction sharedErrorHandler(location) {\r\n function errorHandler(xhr, err) {\r\n var newErr;\r\n if (xhr.getStatus() === 401) {\r\n newErr = unauthenticated();\r\n }\r\n else {\r\n if (xhr.getStatus() === 402) {\r\n newErr = quotaExceeded(location.bucket);\r\n }\r\n else {\r\n if (xhr.getStatus() === 403) {\r\n newErr = unauthorized(location.path);\r\n }\r\n else {\r\n newErr = err;\r\n }\r\n }\r\n }\r\n newErr.serverResponse = err.serverResponse;\r\n return newErr;\r\n }\r\n return errorHandler;\r\n}\r\nfunction objectErrorHandler(location) {\r\n var shared = sharedErrorHandler(location);\r\n function errorHandler(xhr, err) {\r\n var newErr = shared(xhr, err);\r\n if (xhr.getStatus() === 404) {\r\n newErr = objectNotFound(location.path);\r\n }\r\n newErr.serverResponse = err.serverResponse;\r\n return newErr;\r\n }\r\n return errorHandler;\r\n}\r\nfunction getMetadata(service, location, mappings) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart);\r\n var method = 'GET';\r\n var timeout = service.maxOperationRetryTime;\r\n var requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction list(service, location, delimiter, pageToken, maxResults) {\r\n var urlParams = {};\r\n if (location.isRoot) {\r\n urlParams['prefix'] = '';\r\n }\r\n else {\r\n urlParams['prefix'] = location.path + '/';\r\n }\r\n if (delimiter && delimiter.length > 0) {\r\n urlParams['delimiter'] = delimiter;\r\n }\r\n if (pageToken) {\r\n urlParams['pageToken'] = pageToken;\r\n }\r\n if (maxResults) {\r\n urlParams['maxResults'] = maxResults;\r\n }\r\n var urlPart = location.bucketOnlyServerUrl();\r\n var url = makeUrl(urlPart);\r\n var method = 'GET';\r\n var timeout = service.maxOperationRetryTime;\r\n var requestInfo = new RequestInfo(url, method, listHandler(service, location.bucket), timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction getDownloadUrl(service, location, mappings) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart);\r\n var method = 'GET';\r\n var timeout = service.maxOperationRetryTime;\r\n var requestInfo = new RequestInfo(url, method, downloadUrlHandler(service, mappings), timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction updateMetadata(service, location, metadata, mappings) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart);\r\n var method = 'PATCH';\r\n var body = toResourceString(metadata, mappings);\r\n var headers = { 'Content-Type': 'application/json; charset=utf-8' };\r\n var timeout = service.maxOperationRetryTime;\r\n var requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.body = body;\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction deleteObject(service, location) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart);\r\n var method = 'DELETE';\r\n var timeout = service.maxOperationRetryTime;\r\n function handler(_xhr, _text) { }\r\n var requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.successCodes = [200, 204];\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction determineContentType_(metadata, blob) {\r\n return ((metadata && metadata['contentType']) ||\r\n (blob && blob.type()) ||\r\n 'application/octet-stream');\r\n}\r\nfunction metadataForUpload_(location, blob, metadata) {\r\n var metadataClone = Object.assign({}, metadata);\r\n metadataClone['fullPath'] = location.path;\r\n metadataClone['size'] = blob.size();\r\n if (!metadataClone['contentType']) {\r\n metadataClone['contentType'] = determineContentType_(null, blob);\r\n }\r\n return metadataClone;\r\n}\r\nfunction multipartUpload(service, location, mappings, blob, metadata) {\r\n var urlPart = location.bucketOnlyServerUrl();\r\n var headers = {\r\n 'X-Goog-Upload-Protocol': 'multipart'\r\n };\r\n function genBoundary() {\r\n var str = '';\r\n for (var i = 0; i < 2; i++) {\r\n str = str + Math.random().toString().slice(2);\r\n }\r\n return str;\r\n }\r\n var boundary = genBoundary();\r\n headers['Content-Type'] = 'multipart/related; boundary=' + boundary;\r\n var metadata_ = metadataForUpload_(location, blob, metadata);\r\n var metadataString = toResourceString(metadata_, mappings);\r\n var preBlobPart = '--' +\r\n boundary +\r\n '\\r\\n' +\r\n 'Content-Type: application/json; charset=utf-8\\r\\n\\r\\n' +\r\n metadataString +\r\n '\\r\\n--' +\r\n boundary +\r\n '\\r\\n' +\r\n 'Content-Type: ' +\r\n metadata_['contentType'] +\r\n '\\r\\n\\r\\n';\r\n var postBlobPart = '\\r\\n--' + boundary + '--';\r\n var body = FbsBlob.getBlob(preBlobPart, blob, postBlobPart);\r\n if (body === null) {\r\n throw cannotSliceBlob();\r\n }\r\n var urlParams = { name: metadata_['fullPath'] };\r\n var url = makeUrl(urlPart);\r\n var method = 'POST';\r\n var timeout = service.maxUploadRetryTime;\r\n var requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.headers = headers;\r\n requestInfo.body = body.uploadData();\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * @param current The number of bytes that have been uploaded so far.\r\n * @param total The total number of bytes in the upload.\r\n * @param opt_finalized True if the server has finished the upload.\r\n * @param opt_metadata The upload metadata, should\r\n * only be passed if opt_finalized is true.\r\n */\r\nvar ResumableUploadStatus = /** @class */ (function () {\r\n function ResumableUploadStatus(current, total, finalized, metadata) {\r\n this.current = current;\r\n this.total = total;\r\n this.finalized = !!finalized;\r\n this.metadata = metadata || null;\r\n }\r\n return ResumableUploadStatus;\r\n}());\r\nfunction checkResumeHeader_(xhr, allowed) {\r\n var status = null;\r\n try {\r\n status = xhr.getResponseHeader('X-Goog-Upload-Status');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n var allowedStatus = allowed || ['active'];\r\n handlerCheck(!!status && allowedStatus.indexOf(status) !== -1);\r\n return status;\r\n}\r\nfunction createResumableUpload(service, location, mappings, blob, metadata) {\r\n var urlPart = location.bucketOnlyServerUrl();\r\n var metadataForUpload = metadataForUpload_(location, blob, metadata);\r\n var urlParams = { name: metadataForUpload['fullPath'] };\r\n var url = makeUrl(urlPart);\r\n var method = 'POST';\r\n var headers = {\r\n 'X-Goog-Upload-Protocol': 'resumable',\r\n 'X-Goog-Upload-Command': 'start',\r\n 'X-Goog-Upload-Header-Content-Length': blob.size(),\r\n 'X-Goog-Upload-Header-Content-Type': metadataForUpload['contentType'],\r\n 'Content-Type': 'application/json; charset=utf-8'\r\n };\r\n var body = toResourceString(metadataForUpload, mappings);\r\n var timeout = service.maxUploadRetryTime;\r\n function handler(xhr) {\r\n checkResumeHeader_(xhr);\r\n var url;\r\n try {\r\n url = xhr.getResponseHeader('X-Goog-Upload-URL');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n handlerCheck(isString(url));\r\n return url;\r\n }\r\n var requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.headers = headers;\r\n requestInfo.body = body;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * @param url From a call to fbs.requests.createResumableUpload.\r\n */\r\nfunction getResumableUploadStatus(service, location, url, blob) {\r\n var headers = { 'X-Goog-Upload-Command': 'query' };\r\n function handler(xhr) {\r\n var status = checkResumeHeader_(xhr, ['active', 'final']);\r\n var sizeString = null;\r\n try {\r\n sizeString = xhr.getResponseHeader('X-Goog-Upload-Size-Received');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n if (!sizeString) {\r\n // null or empty string\r\n handlerCheck(false);\r\n }\r\n var size = Number(sizeString);\r\n handlerCheck(!isNaN(size));\r\n return new ResumableUploadStatus(size, blob.size(), status === 'final');\r\n }\r\n var method = 'POST';\r\n var timeout = service.maxUploadRetryTime;\r\n var requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * Any uploads via the resumable upload API must transfer a number of bytes\r\n * that is a multiple of this number.\r\n */\r\nvar resumableUploadChunkSize = 256 * 1024;\r\n/**\r\n * @param url From a call to fbs.requests.createResumableUpload.\r\n * @param chunkSize Number of bytes to upload.\r\n * @param status The previous status.\r\n * If not passed or null, we start from the beginning.\r\n * @throws fbs.Error If the upload is already complete, the passed in status\r\n * has a final size inconsistent with the blob, or the blob cannot be sliced\r\n * for upload.\r\n */\r\nfunction continueResumableUpload(location, service, url, blob, chunkSize, mappings, status, progressCallback) {\r\n // TODO(andysoto): standardize on internal asserts\r\n // assert(!(opt_status && opt_status.finalized));\r\n var status_ = new ResumableUploadStatus(0, 0);\r\n if (status) {\r\n status_.current = status.current;\r\n status_.total = status.total;\r\n }\r\n else {\r\n status_.current = 0;\r\n status_.total = blob.size();\r\n }\r\n if (blob.size() !== status_.total) {\r\n throw serverFileWrongSize();\r\n }\r\n var bytesLeft = status_.total - status_.current;\r\n var bytesToUpload = bytesLeft;\r\n if (chunkSize > 0) {\r\n bytesToUpload = Math.min(bytesToUpload, chunkSize);\r\n }\r\n var startByte = status_.current;\r\n var endByte = startByte + bytesToUpload;\r\n var uploadCommand = bytesToUpload === bytesLeft ? 'upload, finalize' : 'upload';\r\n var headers = {\r\n 'X-Goog-Upload-Command': uploadCommand,\r\n 'X-Goog-Upload-Offset': status_.current\r\n };\r\n var body = blob.slice(startByte, endByte);\r\n if (body === null) {\r\n throw cannotSliceBlob();\r\n }\r\n function handler(xhr, text) {\r\n // TODO(andysoto): Verify the MD5 of each uploaded range:\r\n // the 'x-range-md5' header comes back with status code 308 responses.\r\n // We'll only be able to bail out though, because you can't re-upload a\r\n // range that you previously uploaded.\r\n var uploadStatus = checkResumeHeader_(xhr, ['active', 'final']);\r\n var newCurrent = status_.current + bytesToUpload;\r\n var size = blob.size();\r\n var metadata;\r\n if (uploadStatus === 'final') {\r\n metadata = metadataHandler(service, mappings)(xhr, text);\r\n }\r\n else {\r\n metadata = null;\r\n }\r\n return new ResumableUploadStatus(newCurrent, size, uploadStatus === 'final', metadata);\r\n }\r\n var method = 'POST';\r\n var timeout = service.maxUploadRetryTime;\r\n var requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.body = body.uploadData();\r\n requestInfo.progressCallback = progressCallback || null;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar Observer = /** @class */ (function () {\r\n function Observer(nextOrObserver, error, complete) {\r\n var asFunctions = isFunction(nextOrObserver) || error != null || complete != null;\r\n if (asFunctions) {\r\n this.next = nextOrObserver;\r\n this.error = error;\r\n this.complete = complete;\r\n }\r\n else {\r\n var observer = nextOrObserver;\r\n this.next = observer.next;\r\n this.error = observer.error;\r\n this.complete = observer.complete;\r\n }\r\n }\r\n return Observer;\r\n}());\n\nvar UploadTaskSnapshot = /** @class */ (function () {\r\n function UploadTaskSnapshot(bytesTransferred, totalBytes, state, metadata, task, ref) {\r\n this.bytesTransferred = bytesTransferred;\r\n this.totalBytes = totalBytes;\r\n this.state = state;\r\n this.metadata = metadata;\r\n this.task = task;\r\n this.ref = ref;\r\n }\r\n return UploadTaskSnapshot;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a function that invokes f with its arguments asynchronously as a\r\n * microtask, i.e. as soon as possible after the current script returns back\r\n * into browser code.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(f) {\r\n return function () {\r\n var argsToForward = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n argsToForward[_i] = arguments[_i];\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n Promise.resolve().then(function () { return f.apply(void 0, argsToForward); });\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Represents a blob being uploaded. Can be used to pause/resume/cancel the\r\n * upload and manage callbacks for various events.\r\n */\r\nvar UploadTask = /** @class */ (function () {\r\n /**\r\n * @param ref - The firebaseStorage.Reference object this task came\r\n * from, untyped to avoid cyclic dependencies.\r\n * @param blob - The blob to upload.\r\n */\r\n function UploadTask(ref, blob, metadata) {\r\n var _this = this;\r\n if (metadata === void 0) { metadata = null; }\r\n /**\r\n * @internal\r\n */\r\n this._transferred = 0;\r\n this._needToFetchStatus = false;\r\n this._needToFetchMetadata = false;\r\n this._observers = [];\r\n this._error = undefined;\r\n this._uploadUrl = undefined;\r\n this._request = undefined;\r\n this._chunkMultiplier = 1;\r\n this._resolve = undefined;\r\n this._reject = undefined;\r\n this._ref = ref;\r\n this._blob = blob;\r\n this._metadata = metadata;\r\n this._mappings = getMappings();\r\n this._resumable = this._shouldDoResumable(this._blob);\r\n this._state = InternalTaskState.RUNNING;\r\n this._errorHandler = function (error) {\r\n _this._request = undefined;\r\n _this._chunkMultiplier = 1;\r\n if (error.codeEquals(Code.CANCELED)) {\r\n _this._needToFetchStatus = true;\r\n _this.completeTransitions_();\r\n }\r\n else {\r\n _this._error = error;\r\n _this._transition(InternalTaskState.ERROR);\r\n }\r\n };\r\n this._metadataErrorHandler = function (error) {\r\n _this._request = undefined;\r\n if (error.codeEquals(Code.CANCELED)) {\r\n _this.completeTransitions_();\r\n }\r\n else {\r\n _this._error = error;\r\n _this._transition(InternalTaskState.ERROR);\r\n }\r\n };\r\n this._promise = new Promise(function (resolve, reject) {\r\n _this._resolve = resolve;\r\n _this._reject = reject;\r\n _this._start();\r\n });\r\n // Prevent uncaught rejections on the internal promise from bubbling out\r\n // to the top level with a dummy handler.\r\n this._promise.then(null, function () { });\r\n }\r\n UploadTask.prototype._makeProgressCallback = function () {\r\n var _this = this;\r\n var sizeBefore = this._transferred;\r\n return function (loaded) { return _this._updateProgress(sizeBefore + loaded); };\r\n };\r\n UploadTask.prototype._shouldDoResumable = function (blob) {\r\n return blob.size() > 256 * 1024;\r\n };\r\n UploadTask.prototype._start = function () {\r\n if (this._state !== InternalTaskState.RUNNING) {\r\n // This can happen if someone pauses us in a resume callback, for example.\r\n return;\r\n }\r\n if (this._request !== undefined) {\r\n return;\r\n }\r\n if (this._resumable) {\r\n if (this._uploadUrl === undefined) {\r\n this._createResumable();\r\n }\r\n else {\r\n if (this._needToFetchStatus) {\r\n this._fetchStatus();\r\n }\r\n else {\r\n if (this._needToFetchMetadata) {\r\n // Happens if we miss the metadata on upload completion.\r\n this._fetchMetadata();\r\n }\r\n else {\r\n this._continueUpload();\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this._oneShotUpload();\r\n }\r\n };\r\n UploadTask.prototype._resolveToken = function (callback) {\r\n var _this = this;\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._ref.storage.getAuthToken().then(function (authToken) {\r\n switch (_this._state) {\r\n case InternalTaskState.RUNNING:\r\n callback(authToken);\r\n break;\r\n case InternalTaskState.CANCELING:\r\n _this._transition(InternalTaskState.CANCELED);\r\n break;\r\n case InternalTaskState.PAUSING:\r\n _this._transition(InternalTaskState.PAUSED);\r\n break;\r\n }\r\n });\r\n };\r\n // TODO(andysoto): assert false\r\n UploadTask.prototype._createResumable = function () {\r\n var _this = this;\r\n this._resolveToken(function (authToken) {\r\n var requestInfo = createResumableUpload(_this._ref.storage, _this._ref._location, _this._mappings, _this._blob, _this._metadata);\r\n var createRequest = _this._ref.storage.makeRequest(requestInfo, authToken);\r\n _this._request = createRequest;\r\n createRequest.getPromise().then(function (url) {\r\n _this._request = undefined;\r\n _this._uploadUrl = url;\r\n _this._needToFetchStatus = false;\r\n _this.completeTransitions_();\r\n }, _this._errorHandler);\r\n });\r\n };\r\n UploadTask.prototype._fetchStatus = function () {\r\n var _this = this;\r\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\r\n var url = this._uploadUrl;\r\n this._resolveToken(function (authToken) {\r\n var requestInfo = getResumableUploadStatus(_this._ref.storage, _this._ref._location, url, _this._blob);\r\n var statusRequest = _this._ref.storage.makeRequest(requestInfo, authToken);\r\n _this._request = statusRequest;\r\n statusRequest.getPromise().then(function (status) {\r\n status = status;\r\n _this._request = undefined;\r\n _this._updateProgress(status.current);\r\n _this._needToFetchStatus = false;\r\n if (status.finalized) {\r\n _this._needToFetchMetadata = true;\r\n }\r\n _this.completeTransitions_();\r\n }, _this._errorHandler);\r\n });\r\n };\r\n UploadTask.prototype._continueUpload = function () {\r\n var _this = this;\r\n var chunkSize = resumableUploadChunkSize * this._chunkMultiplier;\r\n var status = new ResumableUploadStatus(this._transferred, this._blob.size());\r\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\r\n var url = this._uploadUrl;\r\n this._resolveToken(function (authToken) {\r\n var requestInfo;\r\n try {\r\n requestInfo = continueResumableUpload(_this._ref._location, _this._ref.storage, url, _this._blob, chunkSize, _this._mappings, status, _this._makeProgressCallback());\r\n }\r\n catch (e) {\r\n _this._error = e;\r\n _this._transition(InternalTaskState.ERROR);\r\n return;\r\n }\r\n var uploadRequest = _this._ref.storage.makeRequest(requestInfo, authToken);\r\n _this._request = uploadRequest;\r\n uploadRequest\r\n .getPromise()\r\n .then(function (newStatus) {\r\n _this._increaseMultiplier();\r\n _this._request = undefined;\r\n _this._updateProgress(newStatus.current);\r\n if (newStatus.finalized) {\r\n _this._metadata = newStatus.metadata;\r\n _this._transition(InternalTaskState.SUCCESS);\r\n }\r\n else {\r\n _this.completeTransitions_();\r\n }\r\n }, _this._errorHandler);\r\n });\r\n };\r\n UploadTask.prototype._increaseMultiplier = function () {\r\n var currentSize = resumableUploadChunkSize * this._chunkMultiplier;\r\n // Max chunk size is 32M.\r\n if (currentSize < 32 * 1024 * 1024) {\r\n this._chunkMultiplier *= 2;\r\n }\r\n };\r\n UploadTask.prototype._fetchMetadata = function () {\r\n var _this = this;\r\n this._resolveToken(function (authToken) {\r\n var requestInfo = getMetadata(_this._ref.storage, _this._ref._location, _this._mappings);\r\n var metadataRequest = _this._ref.storage.makeRequest(requestInfo, authToken);\r\n _this._request = metadataRequest;\r\n metadataRequest.getPromise().then(function (metadata) {\r\n _this._request = undefined;\r\n _this._metadata = metadata;\r\n _this._transition(InternalTaskState.SUCCESS);\r\n }, _this._metadataErrorHandler);\r\n });\r\n };\r\n UploadTask.prototype._oneShotUpload = function () {\r\n var _this = this;\r\n this._resolveToken(function (authToken) {\r\n var requestInfo = multipartUpload(_this._ref.storage, _this._ref._location, _this._mappings, _this._blob, _this._metadata);\r\n var multipartRequest = _this._ref.storage.makeRequest(requestInfo, authToken);\r\n _this._request = multipartRequest;\r\n multipartRequest.getPromise().then(function (metadata) {\r\n _this._request = undefined;\r\n _this._metadata = metadata;\r\n _this._updateProgress(_this._blob.size());\r\n _this._transition(InternalTaskState.SUCCESS);\r\n }, _this._errorHandler);\r\n });\r\n };\r\n UploadTask.prototype._updateProgress = function (transferred) {\r\n var old = this._transferred;\r\n this._transferred = transferred;\r\n // A progress update can make the \"transferred\" value smaller (e.g. a\r\n // partial upload not completed by server, after which the \"transferred\"\r\n // value may reset to the value at the beginning of the request).\r\n if (this._transferred !== old) {\r\n this._notifyObservers();\r\n }\r\n };\r\n UploadTask.prototype._transition = function (state) {\r\n if (this._state === state) {\r\n return;\r\n }\r\n switch (state) {\r\n case InternalTaskState.CANCELING:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING);\r\n this._state = state;\r\n if (this._request !== undefined) {\r\n this._request.cancel();\r\n }\r\n break;\r\n case InternalTaskState.PAUSING:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING);\r\n this._state = state;\r\n if (this._request !== undefined) {\r\n this._request.cancel();\r\n }\r\n break;\r\n case InternalTaskState.RUNNING:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSED ||\r\n // this.state_ === InternalTaskState.PAUSING);\r\n var wasPaused = this._state === InternalTaskState.PAUSED;\r\n this._state = state;\r\n if (wasPaused) {\r\n this._notifyObservers();\r\n this._start();\r\n }\r\n break;\r\n case InternalTaskState.PAUSED:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case InternalTaskState.CANCELED:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSED ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._error = canceled();\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case InternalTaskState.ERROR:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case InternalTaskState.SUCCESS:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n }\r\n };\r\n UploadTask.prototype.completeTransitions_ = function () {\r\n switch (this._state) {\r\n case InternalTaskState.PAUSING:\r\n this._transition(InternalTaskState.PAUSED);\r\n break;\r\n case InternalTaskState.CANCELING:\r\n this._transition(InternalTaskState.CANCELED);\r\n break;\r\n case InternalTaskState.RUNNING:\r\n this._start();\r\n break;\r\n }\r\n };\r\n Object.defineProperty(UploadTask.prototype, \"snapshot\", {\r\n get: function () {\r\n var externalState = taskStateFromInternalTaskState(this._state);\r\n return new UploadTaskSnapshot(this._transferred, this._blob.size(), externalState, this._metadata, this, this._ref);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Adds a callback for an event.\r\n * @param type - The type of event to listen for.\r\n */\r\n UploadTask.prototype.on = function (type, nextOrObserver, error, completed) {\r\n var _this = this;\r\n var observer = new Observer(nextOrObserver, error, completed);\r\n this._addObserver(observer);\r\n return function () {\r\n _this._removeObserver(observer);\r\n };\r\n };\r\n /**\r\n * This object behaves like a Promise, and resolves with its snapshot data\r\n * when the upload completes.\r\n * @param onFulfilled - The fulfillment callback. Promise chaining works as normal.\r\n * @param onRejected - The rejection callback.\r\n */\r\n UploadTask.prototype.then = function (onFulfilled, onRejected) {\r\n // These casts are needed so that TypeScript can infer the types of the\r\n // resulting Promise.\r\n return this._promise.then(onFulfilled, onRejected);\r\n };\r\n /**\r\n * Equivalent to calling `then(null, onRejected)`.\r\n */\r\n UploadTask.prototype.catch = function (onRejected) {\r\n return this.then(null, onRejected);\r\n };\r\n /**\r\n * Adds the given observer.\r\n */\r\n UploadTask.prototype._addObserver = function (observer) {\r\n this._observers.push(observer);\r\n this._notifyObserver(observer);\r\n };\r\n /**\r\n * Removes the given observer.\r\n */\r\n UploadTask.prototype._removeObserver = function (observer) {\r\n var i = this._observers.indexOf(observer);\r\n if (i !== -1) {\r\n this._observers.splice(i, 1);\r\n }\r\n };\r\n UploadTask.prototype._notifyObservers = function () {\r\n var _this = this;\r\n this._finishPromise();\r\n var observers = this._observers.slice();\r\n observers.forEach(function (observer) {\r\n _this._notifyObserver(observer);\r\n });\r\n };\r\n UploadTask.prototype._finishPromise = function () {\r\n if (this._resolve !== undefined) {\r\n var triggered = true;\r\n switch (taskStateFromInternalTaskState(this._state)) {\r\n case TaskState.SUCCESS:\r\n async(this._resolve.bind(null, this.snapshot))();\r\n break;\r\n case TaskState.CANCELED:\r\n case TaskState.ERROR:\r\n var toCall = this._reject;\r\n async(toCall.bind(null, this._error))();\r\n break;\r\n default:\r\n triggered = false;\r\n break;\r\n }\r\n if (triggered) {\r\n this._resolve = undefined;\r\n this._reject = undefined;\r\n }\r\n }\r\n };\r\n UploadTask.prototype._notifyObserver = function (observer) {\r\n var externalState = taskStateFromInternalTaskState(this._state);\r\n switch (externalState) {\r\n case TaskState.RUNNING:\r\n case TaskState.PAUSED:\r\n if (observer.next) {\r\n async(observer.next.bind(observer, this.snapshot))();\r\n }\r\n break;\r\n case TaskState.SUCCESS:\r\n if (observer.complete) {\r\n async(observer.complete.bind(observer))();\r\n }\r\n break;\r\n case TaskState.CANCELED:\r\n case TaskState.ERROR:\r\n if (observer.error) {\r\n async(observer.error.bind(observer, this._error))();\r\n }\r\n break;\r\n default:\r\n // TODO(andysoto): assert(false);\r\n if (observer.error) {\r\n async(observer.error.bind(observer, this._error))();\r\n }\r\n }\r\n };\r\n /**\r\n * Resumes a paused task. Has no effect on a currently running or failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n UploadTask.prototype.resume = function () {\r\n var valid = this._state === InternalTaskState.PAUSED ||\r\n this._state === InternalTaskState.PAUSING;\r\n if (valid) {\r\n this._transition(InternalTaskState.RUNNING);\r\n }\r\n return valid;\r\n };\r\n /**\r\n * Pauses a currently running task. Has no effect on a paused or failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n UploadTask.prototype.pause = function () {\r\n var valid = this._state === InternalTaskState.RUNNING;\r\n if (valid) {\r\n this._transition(InternalTaskState.PAUSING);\r\n }\r\n return valid;\r\n };\r\n /**\r\n * Cancels a currently running or paused task. Has no effect on a complete or\r\n * failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n UploadTask.prototype.cancel = function () {\r\n var valid = this._state === InternalTaskState.RUNNING ||\r\n this._state === InternalTaskState.PAUSING;\r\n if (valid) {\r\n this._transition(InternalTaskState.CANCELING);\r\n }\r\n return valid;\r\n };\r\n return UploadTask;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provides methods to interact with a bucket in the Firebase Storage service.\r\n * @param location - An fbs.location, or the URL at\r\n * which to base this object, in one of the following forms:\r\n * gs:///\r\n * http[s]://firebasestorage.googleapis.com/\r\n * /b//o/\r\n * Any query or fragment strings will be ignored in the http[s]\r\n * format. If no value is passed, the storage object will use a URL based on\r\n * the project ID of the base firebase.App instance.\r\n */\r\nvar Reference = /** @class */ (function () {\r\n function Reference(_service, location) {\r\n this._service = _service;\r\n if (location instanceof Location) {\r\n this._location = location;\r\n }\r\n else {\r\n this._location = Location.makeFromUrl(location);\r\n }\r\n }\r\n /**\r\n * @returns The URL for the bucket and path this object references,\r\n * in the form gs:///\r\n * @override\r\n */\r\n Reference.prototype.toString = function () {\r\n return 'gs://' + this._location.bucket + '/' + this._location.path;\r\n };\r\n Reference.prototype.newRef = function (service, location) {\r\n return new Reference(service, location);\r\n };\r\n Object.defineProperty(Reference.prototype, \"root\", {\r\n /**\r\n * @returns An reference to the root of this\r\n * object's bucket.\r\n */\r\n get: function () {\r\n var location = new Location(this._location.bucket, '');\r\n return this.newRef(this._service, location);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"bucket\", {\r\n get: function () {\r\n return this._location.bucket;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"fullPath\", {\r\n get: function () {\r\n return this._location.path;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"name\", {\r\n get: function () {\r\n return lastComponent(this._location.path);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"storage\", {\r\n get: function () {\r\n return this._service;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"parent\", {\r\n get: function () {\r\n var newPath = parent(this._location.path);\r\n if (newPath === null) {\r\n return null;\r\n }\r\n var location = new Location(this._location.bucket, newPath);\r\n return new Reference(this._service, location);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Reference.prototype._throwIfRoot = function (name) {\r\n if (this._location.path === '') {\r\n throw invalidRootOperation(name);\r\n }\r\n };\r\n return Reference;\r\n}());\r\n/**\r\n * Uploads a blob to this object's location.\r\n * @public\r\n * @param ref - Storage Reference where data should be uploaded.\r\n * @param data - The data to upload.\r\n * @param metadata - Metadata for the newly uploaded string.\r\n * @returns An UploadTask that lets you control and\r\n * observe the upload.\r\n */\r\nfunction uploadBytesResumable(ref, data, metadata) {\r\n if (metadata === void 0) { metadata = null; }\r\n ref._throwIfRoot('uploadBytesResumable');\r\n return new UploadTask(ref, new FbsBlob(data), metadata);\r\n}\r\n/**\r\n * Uploads a string to this object's location.\r\n * @public\r\n * @param ref - Storage Reference where string should be uploaded.\r\n * @param value - The string to upload.\r\n * @param format - The format of the string to upload.\r\n * @param metadata - Metadata for the newly uploaded object.\r\n * @returns An UploadTask that lets you control and\r\n * observe the upload.\r\n */\r\nfunction uploadString(ref, value, format, metadata) {\r\n if (format === void 0) { format = StringFormat.RAW; }\r\n ref._throwIfRoot('putString');\r\n var data = dataFromString(format, value);\r\n var metadataClone = __assign({}, metadata);\r\n if (metadataClone['contentType'] == null && data.contentType != null) {\r\n metadataClone['contentType'] = data.contentType;\r\n }\r\n return new UploadTask(ref, new FbsBlob(data.data, true), metadataClone);\r\n}\r\n/**\r\n * List all items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * This is a helper method for calling list() repeatedly until there are\r\n * no more results. The default pagination size is 1000.\r\n *\r\n * Note: The results may not be consistent if objects are changed while this\r\n * operation is running.\r\n *\r\n * Warning: listAll may potentially consume too many resources if there are\r\n * too many results.\r\n * @public\r\n * @param ref - Storage Reference to get list from.\r\n *\r\n * @returns A Promise that resolves with all the items and prefixes under\r\n * the current storage reference. `prefixes` contains references to\r\n * sub-directories and `items` contains references to objects in this\r\n * folder. `nextPageToken` is never returned.\r\n */\r\nfunction listAll(ref) {\r\n var accumulator = {\r\n prefixes: [],\r\n items: []\r\n };\r\n return listAllHelper(ref, accumulator).then(function () { return accumulator; });\r\n}\r\n/**\r\n * Separated from listAll because async functions can't use \"arguments\".\r\n * @internal\r\n * @param ref\r\n * @param accumulator\r\n * @param pageToken\r\n */\r\nfunction listAllHelper(ref, accumulator, pageToken) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var opt, nextPage;\r\n var _a, _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n opt = {\r\n // maxResults is 1000 by default.\r\n pageToken: pageToken\r\n };\r\n return [4 /*yield*/, list$1(ref, opt)];\r\n case 1:\r\n nextPage = _c.sent();\r\n (_a = accumulator.prefixes).push.apply(_a, nextPage.prefixes);\r\n (_b = accumulator.items).push.apply(_b, nextPage.items);\r\n if (!(nextPage.nextPageToken != null)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, listAllHelper(ref, accumulator, nextPage.nextPageToken)];\r\n case 2:\r\n _c.sent();\r\n _c.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * List items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * List API is only available for Firebase Rules Version 2.\r\n *\r\n * GCS is a key-blob store. Firebase Storage imposes the semantic of '/'\r\n * delimited folder structure.\r\n * Refer to GCS's List API if you want to learn more.\r\n *\r\n * To adhere to Firebase Rules's Semantics, Firebase Storage does not\r\n * support objects whose paths end with \"/\" or contain two consecutive\r\n * \"/\"s. Firebase Storage List API will filter these unsupported objects.\r\n * list() may fail if there are too many unsupported objects in the bucket.\r\n * @public\r\n *\r\n * @param ref - Storage Reference to get list from.\r\n * @param options - See ListOptions for details.\r\n * @returns A Promise that resolves with the items and prefixes.\r\n * `prefixes` contains references to sub-folders and `items`\r\n * contains references to objects in this folder. `nextPageToken`\r\n * can be used to get the rest of the results.\r\n */\r\nfunction list$1(ref, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken, op, requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (options != null) {\r\n if (typeof options.maxResults === 'number') {\r\n validateNumber('options.maxResults', \r\n /* minValue= */ 1, \r\n /* maxValue= */ 1000, options.maxResults);\r\n }\r\n }\r\n return [4 /*yield*/, ref.storage.getAuthToken()];\r\n case 1:\r\n authToken = _a.sent();\r\n op = options || {};\r\n requestInfo = list(ref.storage, ref._location, \r\n /*delimiter= */ '/', op.pageToken, op.maxResults);\r\n return [2 /*return*/, ref.storage.makeRequest(requestInfo, authToken).getPromise()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * A promise that resolves with the metadata for this object. If this\r\n * object doesn't exist or metadata cannot be retreived, the promise is\r\n * rejected.\r\n * @public\r\n * @param ref - Storage Reference to get metadata from.\r\n */\r\nfunction getMetadata$1(ref) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken, requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ref._throwIfRoot('getMetadata');\r\n return [4 /*yield*/, ref.storage.getAuthToken()];\r\n case 1:\r\n authToken = _a.sent();\r\n requestInfo = getMetadata(ref.storage, ref._location, getMappings());\r\n return [2 /*return*/, ref.storage.makeRequest(requestInfo, authToken).getPromise()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Updates the metadata for this object.\r\n * @public\r\n * @param ref - Storage Reference to update metadata for.\r\n * @param metadata - The new metadata for the object.\r\n * Only values that have been explicitly set will be changed. Explicitly\r\n * setting a value to null will remove the metadata.\r\n * @returns A promise that resolves\r\n * with the new metadata for this object.\r\n * See `firebaseStorage.Reference.prototype.getMetadata`\r\n */\r\nfunction updateMetadata$1(ref, metadata) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken, requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ref._throwIfRoot('updateMetadata');\r\n return [4 /*yield*/, ref.storage.getAuthToken()];\r\n case 1:\r\n authToken = _a.sent();\r\n requestInfo = updateMetadata(ref.storage, ref._location, metadata, getMappings());\r\n return [2 /*return*/, ref.storage.makeRequest(requestInfo, authToken).getPromise()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Returns the download URL for the given Reference.\r\n * @public\r\n * @returns A promise that resolves with the download\r\n * URL for this object.\r\n */\r\nfunction getDownloadURL(ref) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken, requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ref._throwIfRoot('getDownloadURL');\r\n return [4 /*yield*/, ref.storage.getAuthToken()];\r\n case 1:\r\n authToken = _a.sent();\r\n requestInfo = getDownloadUrl(ref.storage, ref._location, getMappings());\r\n return [2 /*return*/, ref.storage\r\n .makeRequest(requestInfo, authToken)\r\n .getPromise()\r\n .then(function (url) {\r\n if (url === null) {\r\n throw noDownloadURL();\r\n }\r\n return url;\r\n })];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Deletes the object at this location.\r\n * @public\r\n * @param ref - Storage Reference for object to delete.\r\n * @returns A promise that resolves if the deletion succeeds.\r\n */\r\nfunction deleteObject$1(ref) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken, requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ref._throwIfRoot('deleteObject');\r\n return [4 /*yield*/, ref.storage.getAuthToken()];\r\n case 1:\r\n authToken = _a.sent();\r\n requestInfo = deleteObject(ref.storage, ref._location);\r\n return [2 /*return*/, ref.storage.makeRequest(requestInfo, authToken).getPromise()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Returns reference for object obtained by appending `childPath` to `ref`.\r\n * @internal\r\n *\r\n * @param ref - Storage Reference to get child of.\r\n * @param childPath - Child path from provided ref.\r\n * @returns A reference to the object obtained by\r\n * appending childPath, removing any duplicate, beginning, or trailing\r\n * slashes.\r\n */\r\nfunction getChild(ref, childPath) {\r\n var newPath = child(ref._location.path, childPath);\r\n var location = new Location(ref._location.bucket, newPath);\r\n return new Reference(ref.storage, location);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar UploadTaskSnapshotCompat = /** @class */ (function () {\r\n function UploadTaskSnapshotCompat(_delegate, task, ref) {\r\n this._delegate = _delegate;\r\n this.task = task;\r\n this.ref = ref;\r\n }\r\n Object.defineProperty(UploadTaskSnapshotCompat.prototype, \"bytesTransferred\", {\r\n get: function () {\r\n return this._delegate.bytesTransferred;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UploadTaskSnapshotCompat.prototype, \"metadata\", {\r\n get: function () {\r\n return this._delegate.metadata;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UploadTaskSnapshotCompat.prototype, \"state\", {\r\n get: function () {\r\n return this._delegate.state;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UploadTaskSnapshotCompat.prototype, \"totalBytes\", {\r\n get: function () {\r\n return this._delegate.totalBytes;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return UploadTaskSnapshotCompat;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar UploadTaskCompat = /** @class */ (function () {\r\n function UploadTaskCompat(_delegate, _ref) {\r\n this._delegate = _delegate;\r\n this._ref = _ref;\r\n this.cancel = this._delegate.cancel.bind(this._delegate);\r\n this.catch = this._delegate.catch.bind(this._delegate);\r\n this.pause = this._delegate.pause.bind(this._delegate);\r\n this.resume = this._delegate.resume.bind(this._delegate);\r\n this._snapshot = new UploadTaskSnapshotCompat(this._delegate.snapshot, this, this._ref);\r\n }\r\n Object.defineProperty(UploadTaskCompat.prototype, \"snapshot\", {\r\n get: function () {\r\n return this._snapshot;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n UploadTaskCompat.prototype.then = function (onFulfilled, onRejected) {\r\n var _this = this;\r\n return this._delegate.then(function (snapshot) {\r\n if (onFulfilled) {\r\n return onFulfilled(new UploadTaskSnapshotCompat(snapshot, _this, _this._ref));\r\n }\r\n }, onRejected);\r\n };\r\n UploadTaskCompat.prototype.on = function (type, nextOrObserver, error, completed) {\r\n var _this = this;\r\n var wrappedNextOrObserver = undefined;\r\n if (!!nextOrObserver) {\r\n if (typeof nextOrObserver === 'function') {\r\n wrappedNextOrObserver = function (taskSnapshot) {\r\n return nextOrObserver(new UploadTaskSnapshotCompat(taskSnapshot, _this, _this._ref));\r\n };\r\n }\r\n else {\r\n wrappedNextOrObserver = {\r\n next: !!nextOrObserver.next\r\n ? function (taskSnapshot) {\r\n return nextOrObserver.next(new UploadTaskSnapshotCompat(taskSnapshot, _this, _this._ref));\r\n }\r\n : undefined,\r\n complete: nextOrObserver.complete || undefined,\r\n error: nextOrObserver.error || undefined\r\n };\r\n }\r\n }\r\n return this._delegate.on(type, wrappedNextOrObserver, error || undefined, completed || undefined);\r\n };\r\n return UploadTaskCompat;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar ListResultCompat = /** @class */ (function () {\r\n function ListResultCompat(_delegate, _service) {\r\n this._delegate = _delegate;\r\n this._service = _service;\r\n }\r\n Object.defineProperty(ListResultCompat.prototype, \"prefixes\", {\r\n get: function () {\r\n var _this = this;\r\n return this._delegate.prefixes.map(function (ref) { return new ReferenceCompat(ref, _this._service); });\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ListResultCompat.prototype, \"items\", {\r\n get: function () {\r\n var _this = this;\r\n return this._delegate.items.map(function (ref) { return new ReferenceCompat(ref, _this._service); });\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ListResultCompat.prototype, \"nextPageToken\", {\r\n get: function () {\r\n return this._delegate.nextPageToken || null;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return ListResultCompat;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar ReferenceCompat = /** @class */ (function () {\r\n function ReferenceCompat(_delegate, storage) {\r\n this._delegate = _delegate;\r\n this.storage = storage;\r\n }\r\n Object.defineProperty(ReferenceCompat.prototype, \"name\", {\r\n get: function () {\r\n return this._delegate.name;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReferenceCompat.prototype, \"bucket\", {\r\n get: function () {\r\n return this._delegate.bucket;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReferenceCompat.prototype, \"fullPath\", {\r\n get: function () {\r\n return this._delegate.fullPath;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ReferenceCompat.prototype.toString = function () {\r\n return this._delegate.toString();\r\n };\r\n /**\r\n * @returns A reference to the object obtained by\r\n * appending childPath, removing any duplicate, beginning, or trailing\r\n * slashes.\r\n */\r\n ReferenceCompat.prototype.child = function (childPath) {\r\n var reference = getChild(this._delegate, childPath);\r\n return new ReferenceCompat(reference, this.storage);\r\n };\r\n Object.defineProperty(ReferenceCompat.prototype, \"root\", {\r\n get: function () {\r\n return new ReferenceCompat(this._delegate.root, this.storage);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReferenceCompat.prototype, \"parent\", {\r\n /**\r\n * @returns A reference to the parent of the\r\n * current object, or null if the current object is the root.\r\n */\r\n get: function () {\r\n var reference = this._delegate.parent;\r\n if (reference == null) {\r\n return null;\r\n }\r\n return new ReferenceCompat(reference, this.storage);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Uploads a blob to this object's location.\r\n * @param data - The blob to upload.\r\n * @returns An UploadTask that lets you control and\r\n * observe the upload.\r\n */\r\n ReferenceCompat.prototype.put = function (data, metadata) {\r\n this._throwIfRoot('put');\r\n return new UploadTaskCompat(uploadBytesResumable(this._delegate, data, metadata), this);\r\n };\r\n /**\r\n * Uploads a string to this object's location.\r\n * @param value - The string to upload.\r\n * @param format - The format of the string to upload.\r\n * @returns An UploadTask that lets you control and\r\n * observe the upload.\r\n */\r\n ReferenceCompat.prototype.putString = function (value, format, metadata) {\r\n if (format === void 0) { format = StringFormat.RAW; }\r\n this._throwIfRoot('putString');\r\n return new UploadTaskCompat(uploadString(this._delegate, value, format, metadata), this);\r\n };\r\n /**\r\n * List all items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * This is a helper method for calling list() repeatedly until there are\r\n * no more results. The default pagination size is 1000.\r\n *\r\n * Note: The results may not be consistent if objects are changed while this\r\n * operation is running.\r\n *\r\n * Warning: listAll may potentially consume too many resources if there are\r\n * too many results.\r\n *\r\n * @returns A Promise that resolves with all the items and prefixes under\r\n * the current storage reference. `prefixes` contains references to\r\n * sub-directories and `items` contains references to objects in this\r\n * folder. `nextPageToken` is never returned.\r\n */\r\n ReferenceCompat.prototype.listAll = function () {\r\n var _this = this;\r\n return listAll(this._delegate).then(function (r) { return new ListResultCompat(r, _this.storage); });\r\n };\r\n /**\r\n * List items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * List API is only available for Firebase Rules Version 2.\r\n *\r\n * GCS is a key-blob store. Firebase Storage imposes the semantic of '/'\r\n * delimited folder structure. Refer to GCS's List API if you want to learn more.\r\n *\r\n * To adhere to Firebase Rules's Semantics, Firebase Storage does not\r\n * support objects whose paths end with \"/\" or contain two consecutive\r\n * \"/\"s. Firebase Storage List API will filter these unsupported objects.\r\n * list() may fail if there are too many unsupported objects in the bucket.\r\n *\r\n * @param options - See ListOptions for details.\r\n * @returns A Promise that resolves with the items and prefixes.\r\n * `prefixes` contains references to sub-folders and `items`\r\n * contains references to objects in this folder. `nextPageToken`\r\n * can be used to get the rest of the results.\r\n */\r\n ReferenceCompat.prototype.list = function (options) {\r\n var _this = this;\r\n return list$1(this._delegate, options).then(function (r) { return new ListResultCompat(r, _this.storage); });\r\n };\r\n /**\r\n * A promise that resolves with the metadata for this object. If this\r\n * object doesn't exist or metadata cannot be retreived, the promise is\r\n * rejected.\r\n */\r\n ReferenceCompat.prototype.getMetadata = function () {\r\n return getMetadata$1(this._delegate);\r\n };\r\n /**\r\n * Updates the metadata for this object.\r\n * @param metadata - The new metadata for the object.\r\n * Only values that have been explicitly set will be changed. Explicitly\r\n * setting a value to null will remove the metadata.\r\n * @returns A promise that resolves\r\n * with the new metadata for this object.\r\n * @see firebaseStorage.Reference.prototype.getMetadata\r\n */\r\n ReferenceCompat.prototype.updateMetadata = function (metadata) {\r\n return updateMetadata$1(this._delegate, metadata);\r\n };\r\n /**\r\n * @returns A promise that resolves with the download\r\n * URL for this object.\r\n */\r\n ReferenceCompat.prototype.getDownloadURL = function () {\r\n return getDownloadURL(this._delegate);\r\n };\r\n /**\r\n * Deletes the object at this location.\r\n * @returns A promise that resolves if the deletion succeeds.\r\n */\r\n ReferenceCompat.prototype.delete = function () {\r\n this._throwIfRoot('delete');\r\n return deleteObject$1(this._delegate);\r\n };\r\n ReferenceCompat.prototype._throwIfRoot = function (name) {\r\n if (this._delegate._location.path === '') {\r\n throw invalidRootOperation(name);\r\n }\r\n };\r\n return ReferenceCompat;\r\n}());\n\n/**\r\n * A request whose promise always fails.\r\n */\r\nvar FailRequest = /** @class */ (function () {\r\n function FailRequest(error) {\r\n this.promise_ = Promise.reject(error);\r\n }\r\n /** @inheritDoc */\r\n FailRequest.prototype.getPromise = function () {\r\n return this.promise_;\r\n };\r\n /** @inheritDoc */\r\n FailRequest.prototype.cancel = function (_appDelete) {\r\n };\r\n return FailRequest;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @param f May be invoked\r\n * before the function returns.\r\n * @param callback Get all the arguments passed to the function\r\n * passed to f, including the initial boolean.\r\n */\r\nfunction start(f, \r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ncallback, timeout) {\r\n // TODO(andysoto): make this code cleaner (probably refactor into an actual\r\n // type instead of a bunch of functions with state shared in the closure)\r\n var waitSeconds = 1;\r\n // Would type this as \"number\" but that doesn't work for Node so ¯\\_(ツ)_/¯\r\n // TODO: find a way to exclude Node type definition for storage because storage only works in browser\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var timeoutId = null;\r\n var hitTimeout = false;\r\n var cancelState = 0;\r\n function canceled() {\r\n return cancelState === 2;\r\n }\r\n var triggeredCallback = false;\r\n function triggerCallback() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (!triggeredCallback) {\r\n triggeredCallback = true;\r\n callback.apply(null, args);\r\n }\r\n }\r\n function callWithDelay(millis) {\r\n timeoutId = setTimeout(function () {\r\n timeoutId = null;\r\n f(handler, canceled());\r\n }, millis);\r\n }\r\n function handler(success) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n if (triggeredCallback) {\r\n return;\r\n }\r\n if (success) {\r\n triggerCallback.call.apply(triggerCallback, __spreadArrays([null, success], args));\r\n return;\r\n }\r\n var mustStop = canceled() || hitTimeout;\r\n if (mustStop) {\r\n triggerCallback.call.apply(triggerCallback, __spreadArrays([null, success], args));\r\n return;\r\n }\r\n if (waitSeconds < 64) {\r\n /* TODO(andysoto): don't back off so quickly if we know we're offline. */\r\n waitSeconds *= 2;\r\n }\r\n var waitMillis;\r\n if (cancelState === 1) {\r\n cancelState = 2;\r\n waitMillis = 0;\r\n }\r\n else {\r\n waitMillis = (waitSeconds + Math.random()) * 1000;\r\n }\r\n callWithDelay(waitMillis);\r\n }\r\n var stopped = false;\r\n function stop(wasTimeout) {\r\n if (stopped) {\r\n return;\r\n }\r\n stopped = true;\r\n if (triggeredCallback) {\r\n return;\r\n }\r\n if (timeoutId !== null) {\r\n if (!wasTimeout) {\r\n cancelState = 2;\r\n }\r\n clearTimeout(timeoutId);\r\n callWithDelay(0);\r\n }\r\n else {\r\n if (!wasTimeout) {\r\n cancelState = 1;\r\n }\r\n }\r\n }\r\n callWithDelay(0);\r\n setTimeout(function () {\r\n hitTimeout = true;\r\n stop(true);\r\n }, timeout);\r\n return stop;\r\n}\r\n/**\r\n * Stops the retry loop from repeating.\r\n * If the function is currently \"in between\" retries, it is invoked immediately\r\n * with the second parameter as \"true\". Otherwise, it will be invoked once more\r\n * after the current invocation finishes iff the current invocation would have\r\n * triggered another retry.\r\n */\r\nfunction stop(id) {\r\n id(false);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar NetworkRequest = /** @class */ (function () {\r\n function NetworkRequest(url, method, headers, body, successCodes, additionalRetryCodes, callback, errorCallback, timeout, progressCallback, pool) {\r\n var _this = this;\r\n this.pendingXhr_ = null;\r\n this.backoffId_ = null;\r\n this.canceled_ = false;\r\n this.appDelete_ = false;\r\n this.url_ = url;\r\n this.method_ = method;\r\n this.headers_ = headers;\r\n this.body_ = body;\r\n this.successCodes_ = successCodes.slice();\r\n this.additionalRetryCodes_ = additionalRetryCodes.slice();\r\n this.callback_ = callback;\r\n this.errorCallback_ = errorCallback;\r\n this.progressCallback_ = progressCallback;\r\n this.timeout_ = timeout;\r\n this.pool_ = pool;\r\n this.promise_ = new Promise(function (resolve, reject) {\r\n _this.resolve_ = resolve;\r\n _this.reject_ = reject;\r\n _this.start_();\r\n });\r\n }\r\n /**\r\n * Actually starts the retry loop.\r\n */\r\n NetworkRequest.prototype.start_ = function () {\r\n var self = this;\r\n function doTheRequest(backoffCallback, canceled) {\r\n if (canceled) {\r\n backoffCallback(false, new RequestEndStatus(false, null, true));\r\n return;\r\n }\r\n var xhr = self.pool_.createXhrIo();\r\n self.pendingXhr_ = xhr;\r\n function progressListener(progressEvent) {\r\n var loaded = progressEvent.loaded;\r\n var total = progressEvent.lengthComputable ? progressEvent.total : -1;\r\n if (self.progressCallback_ !== null) {\r\n self.progressCallback_(loaded, total);\r\n }\r\n }\r\n if (self.progressCallback_ !== null) {\r\n xhr.addUploadProgressListener(progressListener);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n xhr\r\n .send(self.url_, self.method_, self.body_, self.headers_)\r\n .then(function (xhr) {\r\n if (self.progressCallback_ !== null) {\r\n xhr.removeUploadProgressListener(progressListener);\r\n }\r\n self.pendingXhr_ = null;\r\n xhr = xhr;\r\n var hitServer = xhr.getErrorCode() === ErrorCode.NO_ERROR;\r\n var status = xhr.getStatus();\r\n if (!hitServer || self.isRetryStatusCode_(status)) {\r\n var wasCanceled = xhr.getErrorCode() === ErrorCode.ABORT;\r\n backoffCallback(false, new RequestEndStatus(false, null, wasCanceled));\r\n return;\r\n }\r\n var successCode = self.successCodes_.indexOf(status) !== -1;\r\n backoffCallback(true, new RequestEndStatus(successCode, xhr));\r\n });\r\n }\r\n /**\r\n * @param requestWentThrough - True if the request eventually went\r\n * through, false if it hit the retry limit or was canceled.\r\n */\r\n function backoffDone(requestWentThrough, status) {\r\n var resolve = self.resolve_;\r\n var reject = self.reject_;\r\n var xhr = status.xhr;\r\n if (status.wasSuccessCode) {\r\n try {\r\n var result = self.callback_(xhr, xhr.getResponseText());\r\n if (isJustDef(result)) {\r\n resolve(result);\r\n }\r\n else {\r\n resolve();\r\n }\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n }\r\n else {\r\n if (xhr !== null) {\r\n var err = unknown();\r\n err.serverResponse = xhr.getResponseText();\r\n if (self.errorCallback_) {\r\n reject(self.errorCallback_(xhr, err));\r\n }\r\n else {\r\n reject(err);\r\n }\r\n }\r\n else {\r\n if (status.canceled) {\r\n var err = self.appDelete_ ? appDeleted() : canceled();\r\n reject(err);\r\n }\r\n else {\r\n var err = retryLimitExceeded();\r\n reject(err);\r\n }\r\n }\r\n }\r\n }\r\n if (this.canceled_) {\r\n backoffDone(false, new RequestEndStatus(false, null, true));\r\n }\r\n else {\r\n this.backoffId_ = start(doTheRequest, backoffDone, this.timeout_);\r\n }\r\n };\r\n /** @inheritDoc */\r\n NetworkRequest.prototype.getPromise = function () {\r\n return this.promise_;\r\n };\r\n /** @inheritDoc */\r\n NetworkRequest.prototype.cancel = function (appDelete) {\r\n this.canceled_ = true;\r\n this.appDelete_ = appDelete || false;\r\n if (this.backoffId_ !== null) {\r\n stop(this.backoffId_);\r\n }\r\n if (this.pendingXhr_ !== null) {\r\n this.pendingXhr_.abort();\r\n }\r\n };\r\n NetworkRequest.prototype.isRetryStatusCode_ = function (status) {\r\n // The codes for which to retry came from this page:\r\n // https://cloud.google.com/storage/docs/exponential-backoff\r\n var isFiveHundredCode = status >= 500 && status < 600;\r\n var extraRetryCodes = [\r\n // Request Timeout: web server didn't receive full request in time.\r\n 408,\r\n // Too Many Requests: you're getting rate-limited, basically.\r\n 429\r\n ];\r\n var isExtraRetryCode = extraRetryCodes.indexOf(status) !== -1;\r\n var isRequestSpecificRetryCode = this.additionalRetryCodes_.indexOf(status) !== -1;\r\n return isFiveHundredCode || isExtraRetryCode || isRequestSpecificRetryCode;\r\n };\r\n return NetworkRequest;\r\n}());\r\n/**\r\n * A collection of information about the result of a network request.\r\n * @param opt_canceled - Defaults to false.\r\n */\r\nvar RequestEndStatus = /** @class */ (function () {\r\n function RequestEndStatus(wasSuccessCode, xhr, canceled) {\r\n this.wasSuccessCode = wasSuccessCode;\r\n this.xhr = xhr;\r\n this.canceled = !!canceled;\r\n }\r\n return RequestEndStatus;\r\n}());\r\nfunction addAuthHeader_(headers, authToken) {\r\n if (authToken !== null && authToken.length > 0) {\r\n headers['Authorization'] = 'Firebase ' + authToken;\r\n }\r\n}\r\nfunction addVersionHeader_(headers) {\r\n var version = typeof firebase !== 'undefined' ? firebase.SDK_VERSION : 'AppManager';\r\n headers['X-Firebase-Storage-Version'] = 'webjs/' + version;\r\n}\r\nfunction addGmpidHeader_(headers, appId) {\r\n if (appId) {\r\n headers['X-Firebase-GMPID'] = appId;\r\n }\r\n}\r\nfunction makeRequest(requestInfo, appId, authToken, pool) {\r\n var queryPart = makeQueryString(requestInfo.urlParams);\r\n var url = requestInfo.url + queryPart;\r\n var headers = Object.assign({}, requestInfo.headers);\r\n addGmpidHeader_(headers, appId);\r\n addAuthHeader_(headers, authToken);\r\n addVersionHeader_(headers);\r\n return new NetworkRequest(url, requestInfo.method, headers, requestInfo.body, requestInfo.successCodes, requestInfo.additionalRetryCodes, requestInfo.handler, requestInfo.errorHandler, requestInfo.timeout, requestInfo.progressCallback, pool);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isUrl(path) {\r\n return /^[A-Za-z]+:\\/\\//.test(path);\r\n}\r\n/**\r\n * Returns a firebaseStorage.Reference for the given url.\r\n */\r\nfunction refFromURL(service, url) {\r\n return new Reference(service, url);\r\n}\r\n/**\r\n * Returns a firebaseStorage.Reference for the given path in the default\r\n * bucket.\r\n */\r\nfunction refFromPath(ref, path) {\r\n if (ref instanceof StorageService) {\r\n var service = ref;\r\n if (service._bucket == null) {\r\n throw noDefaultBucket();\r\n }\r\n var reference = new Reference(service, service._bucket);\r\n if (path != null) {\r\n return refFromPath(reference, path);\r\n }\r\n else {\r\n return reference;\r\n }\r\n }\r\n else {\r\n // ref is a Reference\r\n if (path !== undefined) {\r\n if (path.includes('..')) {\r\n throw invalidArgument('`path` param cannot contain \"..\"');\r\n }\r\n return getChild(ref, path);\r\n }\r\n else {\r\n return ref;\r\n }\r\n }\r\n}\r\nfunction ref(serviceOrRef, pathOrUrl) {\r\n if (pathOrUrl && isUrl(pathOrUrl)) {\r\n if (serviceOrRef instanceof StorageService) {\r\n return refFromURL(serviceOrRef, pathOrUrl);\r\n }\r\n else {\r\n throw invalidArgument('To use ref(service, url), the first argument must be a Storage instance.');\r\n }\r\n }\r\n else {\r\n return refFromPath(serviceOrRef, pathOrUrl);\r\n }\r\n}\r\nfunction extractBucket(config) {\r\n var bucketString = config === null || config === void 0 ? void 0 : config[CONFIG_STORAGE_BUCKET_KEY];\r\n if (bucketString == null) {\r\n return null;\r\n }\r\n return Location.makeFromBucketSpec(bucketString);\r\n}\r\n/**\r\n * A service that provides Firebase Storage Reference instances.\r\n * @param opt_url - gs:// url to a custom Storage Bucket\r\n */\r\nvar StorageService = /** @class */ (function () {\r\n function StorageService(app, \r\n /**\r\n * @internal\r\n */\r\n _authProvider, \r\n /**\r\n * @internal\r\n */\r\n _pool, \r\n /**\r\n * @internal\r\n */\r\n _url) {\r\n this.app = app;\r\n this._authProvider = _authProvider;\r\n this._pool = _pool;\r\n this._url = _url;\r\n /**\r\n * @internal\r\n */\r\n this._bucket = null;\r\n this._appId = null;\r\n this._deleted = false;\r\n this._maxOperationRetryTime = DEFAULT_MAX_OPERATION_RETRY_TIME;\r\n this._maxUploadRetryTime = DEFAULT_MAX_UPLOAD_RETRY_TIME;\r\n this._requests = new Set();\r\n if (_url != null) {\r\n this._bucket = Location.makeFromBucketSpec(_url);\r\n }\r\n else {\r\n this._bucket = extractBucket(this.app.options);\r\n }\r\n }\r\n Object.defineProperty(StorageService.prototype, \"maxUploadRetryTime\", {\r\n get: function () {\r\n return this._maxUploadRetryTime;\r\n },\r\n set: function (time) {\r\n validateNumber('time', \r\n /* minValue=*/ 0, \r\n /* maxValue= */ Number.POSITIVE_INFINITY, time);\r\n this._maxUploadRetryTime = time;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(StorageService.prototype, \"maxOperationRetryTime\", {\r\n get: function () {\r\n return this._maxOperationRetryTime;\r\n },\r\n set: function (time) {\r\n validateNumber('time', \r\n /* minValue=*/ 0, \r\n /* maxValue= */ Number.POSITIVE_INFINITY, time);\r\n this._maxOperationRetryTime = time;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n StorageService.prototype.getAuthToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var auth, tokenData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n auth = this._authProvider.getImmediate({ optional: true });\r\n if (!auth) return [3 /*break*/, 2];\r\n return [4 /*yield*/, auth.getToken()];\r\n case 1:\r\n tokenData = _a.sent();\r\n if (tokenData !== null) {\r\n return [2 /*return*/, tokenData.accessToken];\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Stop running requests and prevent more from being created.\r\n * @internal\r\n */\r\n StorageService.prototype._delete = function () {\r\n this._deleted = true;\r\n this._requests.forEach(function (request) { return request.cancel(); });\r\n this._requests.clear();\r\n return Promise.resolve();\r\n };\r\n /**\r\n * Returns a new firebaseStorage.Reference object referencing this StorageService\r\n * at the given Location.\r\n */\r\n StorageService.prototype.makeStorageReference = function (loc) {\r\n return new Reference(this, loc);\r\n };\r\n /**\r\n * @internal\r\n * @param requestInfo - HTTP RequestInfo object\r\n * @param authToken - Firebase auth token\r\n */\r\n StorageService.prototype.makeRequest = function (requestInfo, authToken) {\r\n var _this = this;\r\n if (!this._deleted) {\r\n var request_1 = makeRequest(requestInfo, this._appId, authToken, this._pool);\r\n this._requests.add(request_1);\r\n // Request removes itself from set when complete.\r\n request_1.getPromise().then(function () { return _this._requests.delete(request_1); }, function () { return _this._requests.delete(request_1); });\r\n return request_1;\r\n }\r\n else {\r\n return new FailRequest(appDeleted());\r\n }\r\n };\r\n return StorageService;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A service that provides firebaseStorage.Reference instances.\r\n * @param opt_url gs:// url to a custom Storage Bucket\r\n */\r\nvar StorageServiceCompat = /** @class */ (function () {\r\n function StorageServiceCompat(app, _delegate) {\r\n var _this = this;\r\n this.app = app;\r\n this._delegate = _delegate;\r\n this.INTERNAL = {\r\n /**\r\n * Called when the associated app is deleted.\r\n */\r\n delete: function () {\r\n return _this._delegate._delete();\r\n }\r\n };\r\n }\r\n Object.defineProperty(StorageServiceCompat.prototype, \"maxOperationRetryTime\", {\r\n get: function () {\r\n return this._delegate.maxOperationRetryTime;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(StorageServiceCompat.prototype, \"maxUploadRetryTime\", {\r\n get: function () {\r\n return this._delegate.maxUploadRetryTime;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a firebaseStorage.Reference for the given path in the default\r\n * bucket.\r\n */\r\n StorageServiceCompat.prototype.ref = function (path) {\r\n if (isUrl(path)) {\r\n throw invalidArgument('ref() expected a child path but got a URL, use refFromURL instead.');\r\n }\r\n return new ReferenceCompat(ref(this._delegate, path), this);\r\n };\r\n /**\r\n * Returns a firebaseStorage.Reference object for the given absolute URL,\r\n * which must be a gs:// or http[s]:// URL.\r\n */\r\n StorageServiceCompat.prototype.refFromURL = function (url) {\r\n if (!isUrl(url)) {\r\n throw invalidArgument('refFromURL() expected a full URL but got a child path, use ref() instead.');\r\n }\r\n try {\r\n Location.makeFromUrl(url);\r\n }\r\n catch (e) {\r\n throw invalidArgument('refFromUrl() expected a valid full URL but got an invalid one.');\r\n }\r\n return new ReferenceCompat(ref(this._delegate, url), this);\r\n };\r\n StorageServiceCompat.prototype.setMaxUploadRetryTime = function (time) {\r\n this._delegate.maxUploadRetryTime = time;\r\n };\r\n StorageServiceCompat.prototype.setMaxOperationRetryTime = function (time) {\r\n this._delegate.maxOperationRetryTime = time;\r\n };\r\n return StorageServiceCompat;\r\n}());\n\nvar name = \"@firebase/storage\";\nvar version = \"0.4.2\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Type constant for Firebase Storage.\r\n */\r\nvar STORAGE_TYPE = 'storage';\r\nfunction factory(container, url) {\r\n // Dependencies\r\n // TODO: This should eventually be 'app-compat'\r\n var app = container.getProvider('app').getImmediate();\r\n var authProvider = container.getProvider('auth-internal');\r\n // TODO: get StorageService instance from component framework instead\r\n // of creating a new one.\r\n var storageServiceCompat = new StorageServiceCompat(app, new StorageService(app, authProvider, new XhrIoPool(), url));\r\n return storageServiceCompat;\r\n}\r\nfunction registerStorage(instance) {\r\n var namespaceExports = {\r\n // no-inline\r\n TaskState: TaskState,\r\n TaskEvent: TaskEvent,\r\n StringFormat: StringFormat,\r\n Storage: StorageService,\r\n Reference: ReferenceCompat\r\n };\r\n instance.INTERNAL.registerComponent(new Component(STORAGE_TYPE, factory, \"PUBLIC\" /* PUBLIC */)\r\n .setServiceProps(namespaceExports)\r\n .setMultipleInstances(true));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterStorage(firebase);\n\nexport { registerStorage };\n//# sourceMappingURL=index.esm.js.map\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import firebase from '@firebase/app';\nimport '@firebase/installations';\nimport { __spreadArrays, __assign } from 'tslib';\nimport { ErrorFactory, isIndexedDBAvailable, validateIndexedDBOpenable } from '@firebase/util';\nimport { Logger, LogLevel } from '@firebase/logger';\nimport { Component } from '@firebase/component';\n\nvar name = \"@firebase/performance\";\nvar version = \"0.4.4\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar SDK_VERSION = version;\r\n/** The prefix for start User Timing marks used for creating Traces. */\r\nvar TRACE_START_MARK_PREFIX = 'FB-PERF-TRACE-START';\r\n/** The prefix for stop User Timing marks used for creating Traces. */\r\nvar TRACE_STOP_MARK_PREFIX = 'FB-PERF-TRACE-STOP';\r\n/** The prefix for User Timing measure used for creating Traces. */\r\nvar TRACE_MEASURE_PREFIX = 'FB-PERF-TRACE-MEASURE';\r\n/** The prefix for out of the box page load Trace name. */\r\nvar OOB_TRACE_PAGE_LOAD_PREFIX = '_wt_';\r\nvar FIRST_PAINT_COUNTER_NAME = '_fp';\r\nvar FIRST_CONTENTFUL_PAINT_COUNTER_NAME = '_fcp';\r\nvar FIRST_INPUT_DELAY_COUNTER_NAME = '_fid';\r\nvar CONFIG_LOCAL_STORAGE_KEY = '@firebase/performance/config';\r\nvar CONFIG_EXPIRY_LOCAL_STORAGE_KEY = '@firebase/performance/configexpire';\r\nvar SERVICE = 'performance';\r\nvar SERVICE_NAME = 'Performance';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar _a;\r\nvar ERROR_DESCRIPTION_MAP = (_a = {},\r\n _a[\"trace started\" /* TRACE_STARTED_BEFORE */] = 'Trace {$traceName} was started before.',\r\n _a[\"trace stopped\" /* TRACE_STOPPED_BEFORE */] = 'Trace {$traceName} is not running.',\r\n _a[\"nonpositive trace startTime\" /* NONPOSITIVE_TRACE_START_TIME */] = 'Trace {$traceName} startTime should be positive.',\r\n _a[\"nonpositive trace duration\" /* NONPOSITIVE_TRACE_DURATION */] = 'Trace {$traceName} duration should be positive.',\r\n _a[\"no window\" /* NO_WINDOW */] = 'Window is not available.',\r\n _a[\"no app id\" /* NO_APP_ID */] = 'App id is not available.',\r\n _a[\"no project id\" /* NO_PROJECT_ID */] = 'Project id is not available.',\r\n _a[\"no api key\" /* NO_API_KEY */] = 'Api key is not available.',\r\n _a[\"invalid cc log\" /* INVALID_CC_LOG */] = 'Attempted to queue invalid cc event',\r\n _a[\"FB not default\" /* FB_NOT_DEFAULT */] = 'Performance can only start when Firebase app instance is the default one.',\r\n _a[\"RC response not ok\" /* RC_NOT_OK */] = 'RC response is not ok',\r\n _a[\"invalid attribute name\" /* INVALID_ATTRIBUTE_NAME */] = 'Attribute name {$attributeName} is invalid.',\r\n _a[\"invalid attribute value\" /* INVALID_ATTRIBUTE_VALUE */] = 'Attribute value {$attributeValue} is invalid.',\r\n _a[\"invalid custom metric name\" /* INVALID_CUSTOM_METRIC_NAME */] = 'Custom metric name {$customMetricName} is invalid',\r\n _a[\"invalid String merger input\" /* INVALID_STRING_MERGER_PARAMETER */] = 'Input for String merger is invalid, contact support team to resolve.',\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar consoleLogger = new Logger(SERVICE_NAME);\r\nconsoleLogger.logLevel = LogLevel.INFO;\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar apiInstance;\r\nvar windowInstance;\r\n/**\r\n * This class holds a reference to various browser related objects injected by\r\n * set methods.\r\n */\r\nvar Api = /** @class */ (function () {\r\n function Api(window) {\r\n this.window = window;\r\n if (!window) {\r\n throw ERROR_FACTORY.create(\"no window\" /* NO_WINDOW */);\r\n }\r\n this.performance = window.performance;\r\n this.PerformanceObserver = window.PerformanceObserver;\r\n this.windowLocation = window.location;\r\n this.navigator = window.navigator;\r\n this.document = window.document;\r\n if (this.navigator && this.navigator.cookieEnabled) {\r\n // If user blocks cookies on the browser, accessing localStorage will\r\n // throw an exception.\r\n this.localStorage = window.localStorage;\r\n }\r\n if (window.perfMetrics && window.perfMetrics.onFirstInputDelay) {\r\n this.onFirstInputDelay = window.perfMetrics.onFirstInputDelay;\r\n }\r\n }\r\n Api.prototype.getUrl = function () {\r\n // Do not capture the string query part of url.\r\n return this.windowLocation.href.split('?')[0];\r\n };\r\n Api.prototype.mark = function (name) {\r\n if (!this.performance || !this.performance.mark) {\r\n return;\r\n }\r\n this.performance.mark(name);\r\n };\r\n Api.prototype.measure = function (measureName, mark1, mark2) {\r\n if (!this.performance || !this.performance.measure) {\r\n return;\r\n }\r\n this.performance.measure(measureName, mark1, mark2);\r\n };\r\n Api.prototype.getEntriesByType = function (type) {\r\n if (!this.performance || !this.performance.getEntriesByType) {\r\n return [];\r\n }\r\n return this.performance.getEntriesByType(type);\r\n };\r\n Api.prototype.getEntriesByName = function (name) {\r\n if (!this.performance || !this.performance.getEntriesByName) {\r\n return [];\r\n }\r\n return this.performance.getEntriesByName(name);\r\n };\r\n Api.prototype.getTimeOrigin = function () {\r\n // Polyfill the time origin with performance.timing.navigationStart.\r\n return (this.performance &&\r\n (this.performance.timeOrigin || this.performance.timing.navigationStart));\r\n };\r\n Api.prototype.requiredApisAvailable = function () {\r\n if (!fetch ||\r\n !Promise ||\r\n !this.navigator ||\r\n !this.navigator.cookieEnabled) {\r\n consoleLogger.info('Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled.');\r\n return false;\r\n }\r\n if (!isIndexedDBAvailable()) {\r\n consoleLogger.info('IndexedDB is not supported by current browswer');\r\n return false;\r\n }\r\n return true;\r\n };\r\n Api.prototype.setupObserver = function (entryType, callback) {\r\n if (!this.PerformanceObserver) {\r\n return;\r\n }\r\n var observer = new this.PerformanceObserver(function (list) {\r\n for (var _i = 0, _a = list.getEntries(); _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n // `entry` is a PerformanceEntry instance.\r\n callback(entry);\r\n }\r\n });\r\n // Start observing the entry types you care about.\r\n observer.observe({ entryTypes: [entryType] });\r\n };\r\n Api.getInstance = function () {\r\n if (apiInstance === undefined) {\r\n apiInstance = new Api(windowInstance);\r\n }\r\n return apiInstance;\r\n };\r\n return Api;\r\n}());\r\nfunction setupApi(window) {\r\n windowInstance = window;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction mergeStrings(part1, part2) {\r\n var sizeDiff = part1.length - part2.length;\r\n if (sizeDiff < 0 || sizeDiff > 1) {\r\n throw ERROR_FACTORY.create(\"invalid String merger input\" /* INVALID_STRING_MERGER_PARAMETER */);\r\n }\r\n var resultArray = [];\r\n for (var i = 0; i < part1.length; i++) {\r\n resultArray.push(part1.charAt(i));\r\n if (part2.length > i) {\r\n resultArray.push(part2.charAt(i));\r\n }\r\n }\r\n return resultArray.join('');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar settingsServiceInstance;\r\nvar SettingsService = /** @class */ (function () {\r\n function SettingsService() {\r\n // The variable which controls logging of automatic traces and HTTP/S network monitoring.\r\n this.instrumentationEnabled = true;\r\n // The variable which controls logging of custom traces.\r\n this.dataCollectionEnabled = true;\r\n // Configuration flags set through remote config.\r\n this.loggingEnabled = false;\r\n // Sampling rate between 0 and 1.\r\n this.tracesSamplingRate = 1;\r\n this.networkRequestsSamplingRate = 1;\r\n // Address of logging service.\r\n this.logEndPointUrl = 'https://firebaselogging.googleapis.com/v0cc/log?format=json_proto';\r\n // Performance event transport endpoint URL which should be compatible with proto3.\r\n // New Address for transport service, not configurable via Remote Config.\r\n this.flTransportEndpointUrl = mergeStrings('hts/frbslgigp.ogepscmv/ieo/eaylg', 'tp:/ieaeogn-agolai.o/1frlglgc/o');\r\n this.transportKey = mergeStrings('AzSC8r6ReiGqFMyfvgow', 'Iayx0u-XT3vksVM-pIV');\r\n // Source type for performance event logs.\r\n this.logSource = 462;\r\n // Flags which control per session logging of traces and network requests.\r\n this.logTraceAfterSampling = false;\r\n this.logNetworkAfterSampling = false;\r\n // TTL of config retrieved from remote config in hours.\r\n this.configTimeToLive = 12;\r\n }\r\n SettingsService.prototype.getAppId = function () {\r\n var appId = this.firebaseAppInstance &&\r\n this.firebaseAppInstance.options &&\r\n this.firebaseAppInstance.options.appId;\r\n if (!appId) {\r\n throw ERROR_FACTORY.create(\"no app id\" /* NO_APP_ID */);\r\n }\r\n return appId;\r\n };\r\n SettingsService.prototype.getProjectId = function () {\r\n var projectId = this.firebaseAppInstance &&\r\n this.firebaseAppInstance.options &&\r\n this.firebaseAppInstance.options.projectId;\r\n if (!projectId) {\r\n throw ERROR_FACTORY.create(\"no project id\" /* NO_PROJECT_ID */);\r\n }\r\n return projectId;\r\n };\r\n SettingsService.prototype.getApiKey = function () {\r\n var apiKey = this.firebaseAppInstance &&\r\n this.firebaseAppInstance.options &&\r\n this.firebaseAppInstance.options.apiKey;\r\n if (!apiKey) {\r\n throw ERROR_FACTORY.create(\"no api key\" /* NO_API_KEY */);\r\n }\r\n return apiKey;\r\n };\r\n SettingsService.prototype.getFlTransportFullUrl = function () {\r\n return this.flTransportEndpointUrl.concat('?key=', this.transportKey);\r\n };\r\n SettingsService.getInstance = function () {\r\n if (settingsServiceInstance === undefined) {\r\n settingsServiceInstance = new SettingsService();\r\n }\r\n return settingsServiceInstance;\r\n };\r\n return SettingsService;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar iid;\r\nfunction getIidPromise() {\r\n var iidPromise = SettingsService.getInstance().installationsService.getId();\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n iidPromise.then(function (iidVal) {\r\n iid = iidVal;\r\n });\r\n return iidPromise;\r\n}\r\n// This method should be used after the iid is retrieved by getIidPromise method.\r\nfunction getIid() {\r\n return iid;\r\n}\r\nfunction getAuthTokenPromise() {\r\n var authTokenPromise = SettingsService.getInstance().installationsService.getToken();\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n authTokenPromise.then(function (authTokenVal) {\r\n });\r\n return authTokenPromise;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar VisibilityState;\r\n(function (VisibilityState) {\r\n VisibilityState[VisibilityState[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\r\n VisibilityState[VisibilityState[\"VISIBLE\"] = 1] = \"VISIBLE\";\r\n VisibilityState[VisibilityState[\"HIDDEN\"] = 2] = \"HIDDEN\";\r\n})(VisibilityState || (VisibilityState = {}));\r\nvar RESERVED_ATTRIBUTE_PREFIXES = ['firebase_', 'google_', 'ga_'];\r\nvar ATTRIBUTE_FORMAT_REGEX = new RegExp('^[a-zA-Z]\\\\w*$');\r\nvar MAX_ATTRIBUTE_NAME_LENGTH = 40;\r\nvar MAX_ATTRIBUTE_VALUE_LENGTH = 100;\r\nfunction getServiceWorkerStatus() {\r\n var navigator = Api.getInstance().navigator;\r\n if ('serviceWorker' in navigator) {\r\n if (navigator.serviceWorker.controller) {\r\n return 2 /* CONTROLLED */;\r\n }\r\n else {\r\n return 3 /* UNCONTROLLED */;\r\n }\r\n }\r\n else {\r\n return 1 /* UNSUPPORTED */;\r\n }\r\n}\r\nfunction getVisibilityState() {\r\n var document = Api.getInstance().document;\r\n var visibilityState = document.visibilityState;\r\n switch (visibilityState) {\r\n case 'visible':\r\n return VisibilityState.VISIBLE;\r\n case 'hidden':\r\n return VisibilityState.HIDDEN;\r\n default:\r\n return VisibilityState.UNKNOWN;\r\n }\r\n}\r\nfunction getEffectiveConnectionType() {\r\n var navigator = Api.getInstance().navigator;\r\n var navigatorConnection = navigator.connection;\r\n var effectiveType = navigatorConnection && navigatorConnection.effectiveType;\r\n switch (effectiveType) {\r\n case 'slow-2g':\r\n return 1 /* CONNECTION_SLOW_2G */;\r\n case '2g':\r\n return 2 /* CONNECTION_2G */;\r\n case '3g':\r\n return 3 /* CONNECTION_3G */;\r\n case '4g':\r\n return 4 /* CONNECTION_4G */;\r\n default:\r\n return 0 /* UNKNOWN */;\r\n }\r\n}\r\nfunction isValidCustomAttributeName(name) {\r\n if (name.length === 0 || name.length > MAX_ATTRIBUTE_NAME_LENGTH) {\r\n return false;\r\n }\r\n var matchesReservedPrefix = RESERVED_ATTRIBUTE_PREFIXES.some(function (prefix) {\r\n return name.startsWith(prefix);\r\n });\r\n return !matchesReservedPrefix && !!name.match(ATTRIBUTE_FORMAT_REGEX);\r\n}\r\nfunction isValidCustomAttributeValue(value) {\r\n return value.length !== 0 && value.length <= MAX_ATTRIBUTE_VALUE_LENGTH;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar REMOTE_CONFIG_SDK_VERSION = '0.0.1';\r\n// These values will be used if the remote config object is successfully\r\n// retrieved, but the template does not have these fields.\r\nvar DEFAULT_CONFIGS = {\r\n loggingEnabled: true\r\n};\r\nvar FIS_AUTH_PREFIX = 'FIREBASE_INSTALLATIONS_AUTH';\r\nfunction getConfig(iid) {\r\n var config = getStoredConfig();\r\n if (config) {\r\n processConfig(config);\r\n return Promise.resolve();\r\n }\r\n return getRemoteConfig(iid)\r\n .then(processConfig)\r\n .then(function (config) { return storeConfig(config); }, \r\n /** Do nothing for error, use defaults set in settings service. */\r\n function () { });\r\n}\r\nfunction getStoredConfig() {\r\n var localStorage = Api.getInstance().localStorage;\r\n if (!localStorage) {\r\n return;\r\n }\r\n var expiryString = localStorage.getItem(CONFIG_EXPIRY_LOCAL_STORAGE_KEY);\r\n if (!expiryString || !configValid(expiryString)) {\r\n return;\r\n }\r\n var configStringified = localStorage.getItem(CONFIG_LOCAL_STORAGE_KEY);\r\n if (!configStringified) {\r\n return;\r\n }\r\n try {\r\n var configResponse = JSON.parse(configStringified);\r\n return configResponse;\r\n }\r\n catch (_a) {\r\n return;\r\n }\r\n}\r\nfunction storeConfig(config) {\r\n var localStorage = Api.getInstance().localStorage;\r\n if (!config || !localStorage) {\r\n return;\r\n }\r\n localStorage.setItem(CONFIG_LOCAL_STORAGE_KEY, JSON.stringify(config));\r\n localStorage.setItem(CONFIG_EXPIRY_LOCAL_STORAGE_KEY, String(Date.now() +\r\n SettingsService.getInstance().configTimeToLive * 60 * 60 * 1000));\r\n}\r\nvar COULD_NOT_GET_CONFIG_MSG = 'Could not fetch config, will use default configs';\r\nfunction getRemoteConfig(iid) {\r\n // Perf needs auth token only to retrieve remote config.\r\n return getAuthTokenPromise()\r\n .then(function (authToken) {\r\n var projectId = SettingsService.getInstance().getProjectId();\r\n var configEndPoint = \"https://firebaseremoteconfig.googleapis.com/v1/projects/\" + projectId + \"/namespaces/fireperf:fetch?key=\" + SettingsService.getInstance().getApiKey();\r\n var request = new Request(configEndPoint, {\r\n method: 'POST',\r\n headers: { Authorization: FIS_AUTH_PREFIX + \" \" + authToken },\r\n /* eslint-disable camelcase */\r\n body: JSON.stringify({\r\n app_instance_id: iid,\r\n app_instance_id_token: authToken,\r\n app_id: SettingsService.getInstance().getAppId(),\r\n app_version: SDK_VERSION,\r\n sdk_version: REMOTE_CONFIG_SDK_VERSION\r\n })\r\n /* eslint-enable camelcase */\r\n });\r\n return fetch(request).then(function (response) {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n // In case response is not ok. This will be caught by catch.\r\n throw ERROR_FACTORY.create(\"RC response not ok\" /* RC_NOT_OK */);\r\n });\r\n })\r\n .catch(function () {\r\n consoleLogger.info(COULD_NOT_GET_CONFIG_MSG);\r\n return undefined;\r\n });\r\n}\r\n/**\r\n * Processes config coming either from calling RC or from local storage.\r\n * This method only runs if call is successful or config in storage\r\n * is valid.\r\n */\r\nfunction processConfig(config) {\r\n if (!config) {\r\n return config;\r\n }\r\n var settingsServiceInstance = SettingsService.getInstance();\r\n var entries = config.entries || {};\r\n if (entries.fpr_enabled !== undefined) {\r\n // TODO: Change the assignment of loggingEnabled once the received type is\r\n // known.\r\n settingsServiceInstance.loggingEnabled =\r\n String(entries.fpr_enabled) === 'true';\r\n }\r\n else {\r\n // Config retrieved successfully, but there is no fpr_enabled in template.\r\n // Use secondary configs value.\r\n settingsServiceInstance.loggingEnabled = DEFAULT_CONFIGS.loggingEnabled;\r\n }\r\n if (entries.fpr_log_source) {\r\n settingsServiceInstance.logSource = Number(entries.fpr_log_source);\r\n }\r\n if (entries.fpr_log_endpoint_url) {\r\n settingsServiceInstance.logEndPointUrl = entries.fpr_log_endpoint_url;\r\n }\r\n // Key from Remote Config has to be non-empty string, otherwsie use local value.\r\n if (entries.fpr_log_transport_key) {\r\n settingsServiceInstance.transportKey = entries.fpr_log_transport_key;\r\n }\r\n if (entries.fpr_vc_network_request_sampling_rate !== undefined) {\r\n settingsServiceInstance.networkRequestsSamplingRate = Number(entries.fpr_vc_network_request_sampling_rate);\r\n }\r\n if (entries.fpr_vc_trace_sampling_rate !== undefined) {\r\n settingsServiceInstance.tracesSamplingRate = Number(entries.fpr_vc_trace_sampling_rate);\r\n }\r\n // Set the per session trace and network logging flags.\r\n settingsServiceInstance.logTraceAfterSampling = shouldLogAfterSampling(settingsServiceInstance.tracesSamplingRate);\r\n settingsServiceInstance.logNetworkAfterSampling = shouldLogAfterSampling(settingsServiceInstance.networkRequestsSamplingRate);\r\n return config;\r\n}\r\nfunction configValid(expiry) {\r\n return Number(expiry) > Date.now();\r\n}\r\nfunction shouldLogAfterSampling(samplingRate) {\r\n return Math.random() <= samplingRate;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar initializationStatus = 1 /* notInitialized */;\r\nvar initializationPromise;\r\nfunction getInitializationPromise() {\r\n initializationStatus = 2 /* initializationPending */;\r\n initializationPromise = initializationPromise || initializePerf();\r\n return initializationPromise;\r\n}\r\nfunction isPerfInitialized() {\r\n return initializationStatus === 3 /* initialized */;\r\n}\r\nfunction initializePerf() {\r\n return getDocumentReadyComplete()\r\n .then(function () { return getIidPromise(); })\r\n .then(function (iid) { return getConfig(iid); })\r\n .then(function () { return changeInitializationStatus(); }, function () { return changeInitializationStatus(); });\r\n}\r\n/**\r\n * Returns a promise which resolves whenever the document readystate is complete or\r\n * immediately if it is called after page load complete.\r\n */\r\nfunction getDocumentReadyComplete() {\r\n var document = Api.getInstance().document;\r\n return new Promise(function (resolve) {\r\n if (document && document.readyState !== 'complete') {\r\n var handler_1 = function () {\r\n if (document.readyState === 'complete') {\r\n document.removeEventListener('readystatechange', handler_1);\r\n resolve();\r\n }\r\n };\r\n document.addEventListener('readystatechange', handler_1);\r\n }\r\n else {\r\n resolve();\r\n }\r\n });\r\n}\r\nfunction changeInitializationStatus() {\r\n initializationStatus = 3 /* initialized */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DEFAULT_SEND_INTERVAL_MS = 10 * 1000;\r\nvar INITIAL_SEND_TIME_DELAY_MS = 5.5 * 1000;\r\n// If end point does not work, the call will be tried for these many times.\r\nvar DEFAULT_REMAINING_TRIES = 3;\r\nvar remainingTries = DEFAULT_REMAINING_TRIES;\r\n/* eslint-enable camelcase */\r\nvar queue = [];\r\nvar isTransportSetup = false;\r\nfunction setupTransportService() {\r\n if (!isTransportSetup) {\r\n processQueue(INITIAL_SEND_TIME_DELAY_MS);\r\n isTransportSetup = true;\r\n }\r\n}\r\nfunction processQueue(timeOffset) {\r\n setTimeout(function () {\r\n // If there is no remainingTries left, stop retrying.\r\n if (remainingTries === 0) {\r\n return;\r\n }\r\n // If there are no events to process, wait for DEFAULT_SEND_INTERVAL_MS and try again.\r\n if (!queue.length) {\r\n return processQueue(DEFAULT_SEND_INTERVAL_MS);\r\n }\r\n dispatchQueueEvents();\r\n }, timeOffset);\r\n}\r\nfunction dispatchQueueEvents() {\r\n // Capture a snapshot of the queue and empty the \"official queue\".\r\n var staged = __spreadArrays(queue);\r\n queue = [];\r\n /* eslint-disable camelcase */\r\n // We will pass the JSON serialized event to the backend.\r\n var log_event = staged.map(function (evt) { return ({\r\n source_extension_json_proto3: evt.message,\r\n event_time_ms: String(evt.eventTime)\r\n }); });\r\n var data = {\r\n request_time_ms: String(Date.now()),\r\n client_info: {\r\n client_type: 1,\r\n js_client_info: {}\r\n },\r\n log_source: SettingsService.getInstance().logSource,\r\n log_event: log_event\r\n };\r\n /* eslint-enable camelcase */\r\n sendEventsToFl(data, staged).catch(function () {\r\n // If the request fails for some reason, add the events that were attempted\r\n // back to the primary queue to retry later.\r\n queue = __spreadArrays(staged, queue);\r\n remainingTries--;\r\n consoleLogger.info(\"Tries left: \" + remainingTries + \".\");\r\n processQueue(DEFAULT_SEND_INTERVAL_MS);\r\n });\r\n}\r\nfunction sendEventsToFl(data, staged) {\r\n return postToFlEndpoint(data)\r\n .then(function (res) {\r\n if (!res.ok) {\r\n consoleLogger.info('Call to Firebase backend failed.');\r\n }\r\n return res.json();\r\n })\r\n .then(function (res) {\r\n // Find the next call wait time from the response.\r\n var transportWait = Number(res.nextRequestWaitMillis);\r\n var requestOffset = DEFAULT_SEND_INTERVAL_MS;\r\n if (!isNaN(transportWait)) {\r\n requestOffset = Math.max(transportWait, requestOffset);\r\n }\r\n // Delete request if response include RESPONSE_ACTION_UNKNOWN or DELETE_REQUEST action.\r\n // Otherwise, retry request using normal scheduling if response include RETRY_REQUEST_LATER.\r\n var logResponseDetails = res.logResponseDetails;\r\n if (Array.isArray(logResponseDetails) &&\r\n logResponseDetails.length > 0 &&\r\n logResponseDetails[0].responseAction === 'RETRY_REQUEST_LATER') {\r\n queue = __spreadArrays(staged, queue);\r\n consoleLogger.info(\"Retry transport request later.\");\r\n }\r\n remainingTries = DEFAULT_REMAINING_TRIES;\r\n // Schedule the next process.\r\n processQueue(requestOffset);\r\n });\r\n}\r\nfunction postToFlEndpoint(data) {\r\n var flTransportFullUrl = SettingsService.getInstance().getFlTransportFullUrl();\r\n return fetch(flTransportFullUrl, {\r\n method: 'POST',\r\n body: JSON.stringify(data)\r\n });\r\n}\r\nfunction addToQueue(evt) {\r\n if (!evt.eventTime || !evt.message) {\r\n throw ERROR_FACTORY.create(\"invalid cc log\" /* INVALID_CC_LOG */);\r\n }\r\n // Add the new event to the queue.\r\n queue = __spreadArrays(queue, [evt]);\r\n}\r\n/** Log handler for cc service to send the performance logs to the server. */\r\nfunction transportHandler(\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nserializer) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var message = serializer.apply(void 0, args);\r\n addToQueue({\r\n message: message,\r\n eventTime: Date.now()\r\n });\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/* eslint-enble camelcase */\r\nvar logger;\r\n// This method is not called before initialization.\r\nfunction sendLog(resource, resourceType) {\r\n if (!logger) {\r\n logger = transportHandler(serializer);\r\n }\r\n logger(resource, resourceType);\r\n}\r\nfunction logTrace(trace) {\r\n var settingsService = SettingsService.getInstance();\r\n // Do not log if trace is auto generated and instrumentation is disabled.\r\n if (!settingsService.instrumentationEnabled && trace.isAuto) {\r\n return;\r\n }\r\n // Do not log if trace is custom and data collection is disabled.\r\n if (!settingsService.dataCollectionEnabled && !trace.isAuto) {\r\n return;\r\n }\r\n // Do not log if required apis are not available.\r\n if (!Api.getInstance().requiredApisAvailable()) {\r\n return;\r\n }\r\n // Only log the page load auto traces if page is visible.\r\n if (trace.isAuto && getVisibilityState() !== VisibilityState.VISIBLE) {\r\n return;\r\n }\r\n if (isPerfInitialized()) {\r\n sendTraceLog(trace);\r\n }\r\n else {\r\n // Custom traces can be used before the initialization but logging\r\n // should wait until after.\r\n getInitializationPromise().then(function () { return sendTraceLog(trace); }, function () { return sendTraceLog(trace); });\r\n }\r\n}\r\nfunction sendTraceLog(trace) {\r\n if (!getIid()) {\r\n return;\r\n }\r\n var settingsService = SettingsService.getInstance();\r\n if (!settingsService.loggingEnabled ||\r\n !settingsService.logTraceAfterSampling) {\r\n return;\r\n }\r\n setTimeout(function () { return sendLog(trace, 1 /* Trace */); }, 0);\r\n}\r\nfunction logNetworkRequest(networkRequest) {\r\n var settingsService = SettingsService.getInstance();\r\n // Do not log network requests if instrumentation is disabled.\r\n if (!settingsService.instrumentationEnabled) {\r\n return;\r\n }\r\n // Do not log the js sdk's call to transport service domain to avoid unnecessary cycle.\r\n // Need to blacklist both old and new endpoints to avoid migration gap.\r\n var networkRequestUrl = networkRequest.url;\r\n // Blacklist old log endpoint and new transport endpoint.\r\n // Because Performance SDK doesn't instrument requests sent from SDK itself.\r\n var logEndpointUrl = settingsService.logEndPointUrl.split('?')[0];\r\n var flEndpointUrl = settingsService.flTransportEndpointUrl.split('?')[0];\r\n if (networkRequestUrl === logEndpointUrl ||\r\n networkRequestUrl === flEndpointUrl) {\r\n return;\r\n }\r\n if (!settingsService.loggingEnabled ||\r\n !settingsService.logNetworkAfterSampling) {\r\n return;\r\n }\r\n setTimeout(function () { return sendLog(networkRequest, 0 /* NetworkRequest */); }, 0);\r\n}\r\nfunction serializer(resource, resourceType) {\r\n if (resourceType === 0 /* NetworkRequest */) {\r\n return serializeNetworkRequest(resource);\r\n }\r\n return serializeTrace(resource);\r\n}\r\nfunction serializeNetworkRequest(networkRequest) {\r\n var networkRequestMetric = {\r\n url: networkRequest.url,\r\n http_method: networkRequest.httpMethod || 0,\r\n http_response_code: 200,\r\n response_payload_bytes: networkRequest.responsePayloadBytes,\r\n client_start_time_us: networkRequest.startTimeUs,\r\n time_to_response_initiated_us: networkRequest.timeToResponseInitiatedUs,\r\n time_to_response_completed_us: networkRequest.timeToResponseCompletedUs\r\n };\r\n var perfMetric = {\r\n application_info: getApplicationInfo(),\r\n network_request_metric: networkRequestMetric\r\n };\r\n return JSON.stringify(perfMetric);\r\n}\r\nfunction serializeTrace(trace) {\r\n var traceMetric = {\r\n name: trace.name,\r\n is_auto: trace.isAuto,\r\n client_start_time_us: trace.startTimeUs,\r\n duration_us: trace.durationUs\r\n };\r\n if (Object.keys(trace.counters).length !== 0) {\r\n traceMetric.counters = trace.counters;\r\n }\r\n var customAttributes = trace.getAttributes();\r\n if (Object.keys(customAttributes).length !== 0) {\r\n traceMetric.custom_attributes = customAttributes;\r\n }\r\n var perfMetric = {\r\n application_info: getApplicationInfo(),\r\n trace_metric: traceMetric\r\n };\r\n return JSON.stringify(perfMetric);\r\n}\r\nfunction getApplicationInfo() {\r\n return {\r\n google_app_id: SettingsService.getInstance().getAppId(),\r\n app_instance_id: getIid(),\r\n web_app_info: {\r\n sdk_version: SDK_VERSION,\r\n page_url: Api.getInstance().getUrl(),\r\n service_worker_status: getServiceWorkerStatus(),\r\n visibility_state: getVisibilityState(),\r\n effective_connection_type: getEffectiveConnectionType()\r\n },\r\n application_process_state: 0\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar MAX_METRIC_NAME_LENGTH = 100;\r\nvar RESERVED_AUTO_PREFIX = '_';\r\nvar oobMetrics = [\r\n FIRST_PAINT_COUNTER_NAME,\r\n FIRST_CONTENTFUL_PAINT_COUNTER_NAME,\r\n FIRST_INPUT_DELAY_COUNTER_NAME\r\n];\r\n/**\r\n * Returns true if the metric is custom and does not start with reserved prefix, or if\r\n * the metric is one of out of the box page load trace metrics.\r\n */\r\nfunction isValidMetricName(name, traceName) {\r\n if (name.length === 0 || name.length > MAX_METRIC_NAME_LENGTH) {\r\n return false;\r\n }\r\n return ((traceName &&\r\n traceName.startsWith(OOB_TRACE_PAGE_LOAD_PREFIX) &&\r\n oobMetrics.indexOf(name) > -1) ||\r\n !name.startsWith(RESERVED_AUTO_PREFIX));\r\n}\r\n/**\r\n * Converts the provided value to an integer value to be used in case of a metric.\r\n * @param providedValue Provided number value of the metric that needs to be converted to an integer.\r\n *\r\n * @returns Converted integer number to be set for the metric.\r\n */\r\nfunction convertMetricValueToInteger(providedValue) {\r\n var valueAsInteger = Math.floor(providedValue);\r\n if (valueAsInteger < providedValue) {\r\n consoleLogger.info(\"Metric value should be an Integer, setting the value as : \" + valueAsInteger + \".\");\r\n }\r\n return valueAsInteger;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar Trace = /** @class */ (function () {\r\n /**\r\n * @param name The name of the trace.\r\n * @param isAuto If the trace is auto-instrumented.\r\n * @param traceMeasureName The name of the measure marker in user timing specification. This field\r\n * is only set when the trace is built for logging when the user directly uses the user timing\r\n * api (performance.mark and performance.measure).\r\n */\r\n function Trace(name, isAuto, traceMeasureName) {\r\n if (isAuto === void 0) { isAuto = false; }\r\n this.name = name;\r\n this.isAuto = isAuto;\r\n this.state = 1 /* UNINITIALIZED */;\r\n this.customAttributes = {};\r\n this.counters = {};\r\n this.api = Api.getInstance();\r\n this.randomId = Math.floor(Math.random() * 1000000);\r\n if (!this.isAuto) {\r\n this.traceStartMark = TRACE_START_MARK_PREFIX + \"-\" + this.randomId + \"-\" + this.name;\r\n this.traceStopMark = TRACE_STOP_MARK_PREFIX + \"-\" + this.randomId + \"-\" + this.name;\r\n this.traceMeasure =\r\n traceMeasureName ||\r\n TRACE_MEASURE_PREFIX + \"-\" + this.randomId + \"-\" + this.name;\r\n if (traceMeasureName) {\r\n // For the case of direct user timing traces, no start stop will happen. The measure object\r\n // is already available.\r\n this.calculateTraceMetrics();\r\n }\r\n }\r\n }\r\n /**\r\n * Starts a trace. The measurement of the duration starts at this point.\r\n */\r\n Trace.prototype.start = function () {\r\n if (this.state !== 1 /* UNINITIALIZED */) {\r\n throw ERROR_FACTORY.create(\"trace started\" /* TRACE_STARTED_BEFORE */, {\r\n traceName: this.name\r\n });\r\n }\r\n this.api.mark(this.traceStartMark);\r\n this.state = 2 /* RUNNING */;\r\n };\r\n /**\r\n * Stops the trace. The measurement of the duration of the trace stops at this point and trace\r\n * is logged.\r\n */\r\n Trace.prototype.stop = function () {\r\n if (this.state !== 2 /* RUNNING */) {\r\n throw ERROR_FACTORY.create(\"trace stopped\" /* TRACE_STOPPED_BEFORE */, {\r\n traceName: this.name\r\n });\r\n }\r\n this.state = 3 /* TERMINATED */;\r\n this.api.mark(this.traceStopMark);\r\n this.api.measure(this.traceMeasure, this.traceStartMark, this.traceStopMark);\r\n this.calculateTraceMetrics();\r\n logTrace(this);\r\n };\r\n /**\r\n * Records a trace with predetermined values. If this method is used a trace is created and logged\r\n * directly. No need to use start and stop methods.\r\n * @param startTime Trace start time since epoch in millisec\r\n * @param duration The duraction of the trace in millisec\r\n * @param options An object which can optionally hold maps of custom metrics and custom attributes\r\n */\r\n Trace.prototype.record = function (startTime, duration, options) {\r\n if (startTime <= 0) {\r\n throw ERROR_FACTORY.create(\"nonpositive trace startTime\" /* NONPOSITIVE_TRACE_START_TIME */, {\r\n traceName: this.name\r\n });\r\n }\r\n if (duration <= 0) {\r\n throw ERROR_FACTORY.create(\"nonpositive trace duration\" /* NONPOSITIVE_TRACE_DURATION */, {\r\n traceName: this.name\r\n });\r\n }\r\n this.durationUs = Math.floor(duration * 1000);\r\n this.startTimeUs = Math.floor(startTime * 1000);\r\n if (options && options.attributes) {\r\n this.customAttributes = __assign({}, options.attributes);\r\n }\r\n if (options && options.metrics) {\r\n for (var _i = 0, _a = Object.keys(options.metrics); _i < _a.length; _i++) {\r\n var metric = _a[_i];\r\n if (!isNaN(Number(options.metrics[metric]))) {\r\n this.counters[metric] = Number(Math.floor(options.metrics[metric]));\r\n }\r\n }\r\n }\r\n logTrace(this);\r\n };\r\n /**\r\n * Increments a custom metric by a certain number or 1 if number not specified. Will create a new\r\n * custom metric if one with the given name does not exist. The value will be floored down to an\r\n * integer.\r\n * @param counter Name of the custom metric\r\n * @param numAsInteger Increment by value\r\n */\r\n Trace.prototype.incrementMetric = function (counter, numAsInteger) {\r\n if (numAsInteger === void 0) { numAsInteger = 1; }\r\n if (this.counters[counter] === undefined) {\r\n this.putMetric(counter, numAsInteger);\r\n }\r\n else {\r\n this.putMetric(counter, this.counters[counter] + numAsInteger);\r\n }\r\n };\r\n /**\r\n * Sets a custom metric to a specified value. Will create a new custom metric if one with the\r\n * given name does not exist. The value will be floored down to an integer.\r\n * @param counter Name of the custom metric\r\n * @param numAsInteger Set custom metric to this value\r\n */\r\n Trace.prototype.putMetric = function (counter, numAsInteger) {\r\n if (isValidMetricName(counter, this.name)) {\r\n this.counters[counter] = convertMetricValueToInteger(numAsInteger);\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"invalid custom metric name\" /* INVALID_CUSTOM_METRIC_NAME */, {\r\n customMetricName: counter\r\n });\r\n }\r\n };\r\n /**\r\n * Returns the value of the custom metric by that name. If a custom metric with that name does\r\n * not exist will return zero.\r\n * @param counter\r\n */\r\n Trace.prototype.getMetric = function (counter) {\r\n return this.counters[counter] || 0;\r\n };\r\n /**\r\n * Sets a custom attribute of a trace to a certain value.\r\n * @param attr\r\n * @param value\r\n */\r\n Trace.prototype.putAttribute = function (attr, value) {\r\n var isValidName = isValidCustomAttributeName(attr);\r\n var isValidValue = isValidCustomAttributeValue(value);\r\n if (isValidName && isValidValue) {\r\n this.customAttributes[attr] = value;\r\n return;\r\n }\r\n // Throw appropriate error when the attribute name or value is invalid.\r\n if (!isValidName) {\r\n throw ERROR_FACTORY.create(\"invalid attribute name\" /* INVALID_ATTRIBUTE_NAME */, {\r\n attributeName: attr\r\n });\r\n }\r\n if (!isValidValue) {\r\n throw ERROR_FACTORY.create(\"invalid attribute value\" /* INVALID_ATTRIBUTE_VALUE */, {\r\n attributeValue: value\r\n });\r\n }\r\n };\r\n /**\r\n * Retrieves the value a custom attribute of a trace is set to.\r\n * @param attr\r\n */\r\n Trace.prototype.getAttribute = function (attr) {\r\n return this.customAttributes[attr];\r\n };\r\n Trace.prototype.removeAttribute = function (attr) {\r\n if (this.customAttributes[attr] === undefined) {\r\n return;\r\n }\r\n delete this.customAttributes[attr];\r\n };\r\n Trace.prototype.getAttributes = function () {\r\n return __assign({}, this.customAttributes);\r\n };\r\n Trace.prototype.setStartTime = function (startTime) {\r\n this.startTimeUs = startTime;\r\n };\r\n Trace.prototype.setDuration = function (duration) {\r\n this.durationUs = duration;\r\n };\r\n /**\r\n * Calculates and assigns the duration and start time of the trace using the measure performance\r\n * entry.\r\n */\r\n Trace.prototype.calculateTraceMetrics = function () {\r\n var perfMeasureEntries = this.api.getEntriesByName(this.traceMeasure);\r\n var perfMeasureEntry = perfMeasureEntries && perfMeasureEntries[0];\r\n if (perfMeasureEntry) {\r\n this.durationUs = Math.floor(perfMeasureEntry.duration * 1000);\r\n this.startTimeUs = Math.floor((perfMeasureEntry.startTime + this.api.getTimeOrigin()) * 1000);\r\n }\r\n };\r\n /**\r\n * @param navigationTimings A single element array which contains the navigationTIming object of\r\n * the page load\r\n * @param paintTimings A array which contains paintTiming object of the page load\r\n * @param firstInputDelay First input delay in millisec\r\n */\r\n Trace.createOobTrace = function (navigationTimings, paintTimings, firstInputDelay) {\r\n var route = Api.getInstance().getUrl();\r\n if (!route) {\r\n return;\r\n }\r\n var trace = new Trace(OOB_TRACE_PAGE_LOAD_PREFIX + route, true);\r\n var timeOriginUs = Math.floor(Api.getInstance().getTimeOrigin() * 1000);\r\n trace.setStartTime(timeOriginUs);\r\n // navigationTimings includes only one element.\r\n if (navigationTimings && navigationTimings[0]) {\r\n trace.setDuration(Math.floor(navigationTimings[0].duration * 1000));\r\n trace.putMetric('domInteractive', Math.floor(navigationTimings[0].domInteractive * 1000));\r\n trace.putMetric('domContentLoadedEventEnd', Math.floor(navigationTimings[0].domContentLoadedEventEnd * 1000));\r\n trace.putMetric('loadEventEnd', Math.floor(navigationTimings[0].loadEventEnd * 1000));\r\n }\r\n var FIRST_PAINT = 'first-paint';\r\n var FIRST_CONTENTFUL_PAINT = 'first-contentful-paint';\r\n if (paintTimings) {\r\n var firstPaint = paintTimings.find(function (paintObject) { return paintObject.name === FIRST_PAINT; });\r\n if (firstPaint && firstPaint.startTime) {\r\n trace.putMetric(FIRST_PAINT_COUNTER_NAME, Math.floor(firstPaint.startTime * 1000));\r\n }\r\n var firstContentfulPaint = paintTimings.find(function (paintObject) { return paintObject.name === FIRST_CONTENTFUL_PAINT; });\r\n if (firstContentfulPaint && firstContentfulPaint.startTime) {\r\n trace.putMetric(FIRST_CONTENTFUL_PAINT_COUNTER_NAME, Math.floor(firstContentfulPaint.startTime * 1000));\r\n }\r\n if (firstInputDelay) {\r\n trace.putMetric(FIRST_INPUT_DELAY_COUNTER_NAME, Math.floor(firstInputDelay * 1000));\r\n }\r\n }\r\n logTrace(trace);\r\n };\r\n Trace.createUserTimingTrace = function (measureName) {\r\n var trace = new Trace(measureName, false, measureName);\r\n logTrace(trace);\r\n };\r\n return Trace;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createNetworkRequestEntry(entry) {\r\n var performanceEntry = entry;\r\n if (!performanceEntry || performanceEntry.responseStart === undefined) {\r\n return;\r\n }\r\n var timeOrigin = Api.getInstance().getTimeOrigin();\r\n var startTimeUs = Math.floor((performanceEntry.startTime + timeOrigin) * 1000);\r\n var timeToResponseInitiatedUs = performanceEntry.responseStart\r\n ? Math.floor((performanceEntry.responseStart - performanceEntry.startTime) * 1000)\r\n : undefined;\r\n var timeToResponseCompletedUs = Math.floor((performanceEntry.responseEnd - performanceEntry.startTime) * 1000);\r\n // Remove the query params from logged network request url.\r\n var url = performanceEntry.name && performanceEntry.name.split('?')[0];\r\n var networkRequest = {\r\n url: url,\r\n responsePayloadBytes: performanceEntry.transferSize,\r\n startTimeUs: startTimeUs,\r\n timeToResponseInitiatedUs: timeToResponseInitiatedUs,\r\n timeToResponseCompletedUs: timeToResponseCompletedUs\r\n };\r\n logNetworkRequest(networkRequest);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar FID_WAIT_TIME_MS = 5000;\r\nfunction setupOobResources() {\r\n // Do not initialize unless iid is available.\r\n if (!getIid()) {\r\n return;\r\n }\r\n // The load event might not have fired yet, and that means performance navigation timing\r\n // object has a duration of 0. The setup should run after all current tasks in js queue.\r\n setTimeout(function () { return setupOobTraces(); }, 0);\r\n setTimeout(function () { return setupNetworkRequests(); }, 0);\r\n setTimeout(function () { return setupUserTimingTraces(); }, 0);\r\n}\r\nfunction setupNetworkRequests() {\r\n var api = Api.getInstance();\r\n var resources = api.getEntriesByType('resource');\r\n for (var _i = 0, resources_1 = resources; _i < resources_1.length; _i++) {\r\n var resource = resources_1[_i];\r\n createNetworkRequestEntry(resource);\r\n }\r\n api.setupObserver('resource', createNetworkRequestEntry);\r\n}\r\nfunction setupOobTraces() {\r\n var api = Api.getInstance();\r\n var navigationTimings = api.getEntriesByType('navigation');\r\n var paintTimings = api.getEntriesByType('paint');\r\n // If First Input Desly polyfill is added to the page, report the fid value.\r\n // https://github.com/GoogleChromeLabs/first-input-delay\r\n if (api.onFirstInputDelay) {\r\n // If the fid call back is not called for certain time, continue without it.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var timeoutId_1 = setTimeout(function () {\r\n Trace.createOobTrace(navigationTimings, paintTimings);\r\n timeoutId_1 = undefined;\r\n }, FID_WAIT_TIME_MS);\r\n api.onFirstInputDelay(function (fid) {\r\n if (timeoutId_1) {\r\n clearTimeout(timeoutId_1);\r\n Trace.createOobTrace(navigationTimings, paintTimings, fid);\r\n }\r\n });\r\n }\r\n else {\r\n Trace.createOobTrace(navigationTimings, paintTimings);\r\n }\r\n}\r\nfunction setupUserTimingTraces() {\r\n var api = Api.getInstance();\r\n // Run through the measure performance entries collected up to this point.\r\n var measures = api.getEntriesByType('measure');\r\n for (var _i = 0, measures_1 = measures; _i < measures_1.length; _i++) {\r\n var measure = measures_1[_i];\r\n createUserTimingTrace(measure);\r\n }\r\n // Setup an observer to capture the measures from this point on.\r\n api.setupObserver('measure', createUserTimingTrace);\r\n}\r\nfunction createUserTimingTrace(measure) {\r\n var measureName = measure.name;\r\n // Do not create a trace, if the user timing marks and measures are created by the sdk itself.\r\n if (measureName.substring(0, TRACE_MEASURE_PREFIX.length) ===\r\n TRACE_MEASURE_PREFIX) {\r\n return;\r\n }\r\n Trace.createUserTimingTrace(measureName);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar PerformanceController = /** @class */ (function () {\r\n function PerformanceController(app) {\r\n this.app = app;\r\n if (Api.getInstance().requiredApisAvailable()) {\r\n validateIndexedDBOpenable()\r\n .then(function (isAvailable) {\r\n if (isAvailable) {\r\n setupTransportService();\r\n getInitializationPromise().then(setupOobResources, setupOobResources);\r\n }\r\n })\r\n .catch(function (error) {\r\n consoleLogger.info(\"Environment doesn't support IndexedDB: \" + error);\r\n });\r\n }\r\n }\r\n PerformanceController.prototype.trace = function (name) {\r\n return new Trace(name);\r\n };\r\n Object.defineProperty(PerformanceController.prototype, \"instrumentationEnabled\", {\r\n get: function () {\r\n return SettingsService.getInstance().instrumentationEnabled;\r\n },\r\n set: function (val) {\r\n SettingsService.getInstance().instrumentationEnabled = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(PerformanceController.prototype, \"dataCollectionEnabled\", {\r\n get: function () {\r\n return SettingsService.getInstance().dataCollectionEnabled;\r\n },\r\n set: function (val) {\r\n SettingsService.getInstance().dataCollectionEnabled = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return PerformanceController;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DEFAULT_ENTRY_NAME = '[DEFAULT]';\r\nfunction registerPerformance(instance) {\r\n var factoryMethod = function (app, installations) {\r\n if (app.name !== DEFAULT_ENTRY_NAME) {\r\n throw ERROR_FACTORY.create(\"FB not default\" /* FB_NOT_DEFAULT */);\r\n }\r\n if (typeof window === 'undefined') {\r\n throw ERROR_FACTORY.create(\"no window\" /* NO_WINDOW */);\r\n }\r\n setupApi(window);\r\n SettingsService.getInstance().firebaseAppInstance = app;\r\n SettingsService.getInstance().installationsService = installations;\r\n return new PerformanceController(app);\r\n };\r\n // Register performance with firebase-app.\r\n instance.INTERNAL.registerComponent(new Component('performance', function (container) {\r\n /* Dependencies */\r\n // getImmediate for FirebaseApp will always succeed\r\n var app = container.getProvider('app').getImmediate();\r\n // The following call will always succeed because perf has `import '@firebase/installations'`\r\n var installations = container\r\n .getProvider('installations')\r\n .getImmediate();\r\n return factoryMethod(app, installations);\r\n }, \"PUBLIC\" /* PUBLIC */));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterPerformance(firebase);\n\nexport { registerPerformance };\n//# sourceMappingURL=index.esm.js.map\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { __awaiter, __generator, __assign } from 'tslib';\nimport firebase from '@firebase/app';\nimport '@firebase/installations';\nimport { Logger } from '@firebase/logger';\nimport { ErrorFactory, calculateBackoffMillis, FirebaseError, validateIndexedDBOpenable, isIndexedDBAvailable, isBrowserExtension, areCookiesEnabled } from '@firebase/util';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Key to attach FID to in gtag params.\r\nvar GA_FID_KEY = 'firebase_id';\r\nvar ORIGIN_KEY = 'origin';\r\nvar FETCH_TIMEOUT_MILLIS = 60 * 1000;\r\nvar DYNAMIC_CONFIG_URL = 'https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig';\r\nvar GTAG_URL = 'https://www.googletagmanager.com/gtag/js';\r\nvar GtagCommand;\r\n(function (GtagCommand) {\r\n GtagCommand[\"EVENT\"] = \"event\";\r\n GtagCommand[\"SET\"] = \"set\";\r\n GtagCommand[\"CONFIG\"] = \"config\";\r\n})(GtagCommand || (GtagCommand = {}));\r\n/*\r\n * Officially recommended event names for gtag.js\r\n * Any other string is also allowed.\r\n */\r\nvar EventName;\r\n(function (EventName) {\r\n EventName[\"ADD_SHIPPING_INFO\"] = \"add_shipping_info\";\r\n EventName[\"ADD_PAYMENT_INFO\"] = \"add_payment_info\";\r\n EventName[\"ADD_TO_CART\"] = \"add_to_cart\";\r\n EventName[\"ADD_TO_WISHLIST\"] = \"add_to_wishlist\";\r\n EventName[\"BEGIN_CHECKOUT\"] = \"begin_checkout\";\r\n /** @deprecated */\r\n EventName[\"CHECKOUT_PROGRESS\"] = \"checkout_progress\";\r\n EventName[\"EXCEPTION\"] = \"exception\";\r\n EventName[\"GENERATE_LEAD\"] = \"generate_lead\";\r\n EventName[\"LOGIN\"] = \"login\";\r\n EventName[\"PAGE_VIEW\"] = \"page_view\";\r\n EventName[\"PURCHASE\"] = \"purchase\";\r\n EventName[\"REFUND\"] = \"refund\";\r\n EventName[\"REMOVE_FROM_CART\"] = \"remove_from_cart\";\r\n EventName[\"SCREEN_VIEW\"] = \"screen_view\";\r\n EventName[\"SEARCH\"] = \"search\";\r\n EventName[\"SELECT_CONTENT\"] = \"select_content\";\r\n EventName[\"SELECT_ITEM\"] = \"select_item\";\r\n EventName[\"SELECT_PROMOTION\"] = \"select_promotion\";\r\n /** @deprecated */\r\n EventName[\"SET_CHECKOUT_OPTION\"] = \"set_checkout_option\";\r\n EventName[\"SHARE\"] = \"share\";\r\n EventName[\"SIGN_UP\"] = \"sign_up\";\r\n EventName[\"TIMING_COMPLETE\"] = \"timing_complete\";\r\n EventName[\"VIEW_CART\"] = \"view_cart\";\r\n EventName[\"VIEW_ITEM\"] = \"view_item\";\r\n EventName[\"VIEW_ITEM_LIST\"] = \"view_item_list\";\r\n EventName[\"VIEW_PROMOTION\"] = \"view_promotion\";\r\n EventName[\"VIEW_SEARCH_RESULTS\"] = \"view_search_results\";\r\n})(EventName || (EventName = {}));\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Logs an analytics event through the Firebase SDK.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param eventName Google Analytics event name, choose from standard list or use a custom string.\r\n * @param eventParams Analytics event parameters.\r\n */\r\nfunction logEvent(gtagFunction, initializationPromise, eventName, eventParams, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var measurementId, params;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(options && options.global)) return [3 /*break*/, 1];\r\n gtagFunction(GtagCommand.EVENT, eventName, eventParams);\r\n return [2 /*return*/];\r\n case 1: return [4 /*yield*/, initializationPromise];\r\n case 2:\r\n measurementId = _a.sent();\r\n params = __assign(__assign({}, eventParams), { 'send_to': measurementId });\r\n gtagFunction(GtagCommand.EVENT, eventName, params);\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Set screen_name parameter for this Google Analytics ID.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param screenName Screen name string to set.\r\n */\r\nfunction setCurrentScreen(gtagFunction, initializationPromise, screenName, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var measurementId;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(options && options.global)) return [3 /*break*/, 1];\r\n gtagFunction(GtagCommand.SET, { 'screen_name': screenName });\r\n return [2 /*return*/, Promise.resolve()];\r\n case 1: return [4 /*yield*/, initializationPromise];\r\n case 2:\r\n measurementId = _a.sent();\r\n gtagFunction(GtagCommand.CONFIG, measurementId, {\r\n update: true,\r\n 'screen_name': screenName\r\n });\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Set user_id parameter for this Google Analytics ID.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param id User ID string to set\r\n */\r\nfunction setUserId(gtagFunction, initializationPromise, id, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var measurementId;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(options && options.global)) return [3 /*break*/, 1];\r\n gtagFunction(GtagCommand.SET, { 'user_id': id });\r\n return [2 /*return*/, Promise.resolve()];\r\n case 1: return [4 /*yield*/, initializationPromise];\r\n case 2:\r\n measurementId = _a.sent();\r\n gtagFunction(GtagCommand.CONFIG, measurementId, {\r\n update: true,\r\n 'user_id': id\r\n });\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Set all other user properties other than user_id and screen_name.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param properties Map of user properties to set\r\n */\r\nfunction setUserProperties(gtagFunction, initializationPromise, properties, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var flatProperties, _i, _a, key, measurementId;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(options && options.global)) return [3 /*break*/, 1];\r\n flatProperties = {};\r\n for (_i = 0, _a = Object.keys(properties); _i < _a.length; _i++) {\r\n key = _a[_i];\r\n // use dot notation for merge behavior in gtag.js\r\n flatProperties[\"user_properties.\" + key] = properties[key];\r\n }\r\n gtagFunction(GtagCommand.SET, flatProperties);\r\n return [2 /*return*/, Promise.resolve()];\r\n case 1: return [4 /*yield*/, initializationPromise];\r\n case 2:\r\n measurementId = _b.sent();\r\n gtagFunction(GtagCommand.CONFIG, measurementId, {\r\n update: true,\r\n 'user_properties': properties\r\n });\r\n _b.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Set whether collection is enabled for this ID.\r\n *\r\n * @param enabled If true, collection is enabled for this ID.\r\n */\r\nfunction setAnalyticsCollectionEnabled(initializationPromise, enabled) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var measurementId;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, initializationPromise];\r\n case 1:\r\n measurementId = _a.sent();\r\n window[\"ga-disable-\" + measurementId] = !enabled;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar logger = new Logger('@firebase/analytics');\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Inserts gtag script tag into the page to asynchronously download gtag.\r\n * @param dataLayerName Name of datalayer (most often the default, \"_dataLayer\").\r\n */\r\nfunction insertScriptTag(dataLayerName) {\r\n var script = document.createElement('script');\r\n // We are not providing an analyticsId in the URL because it would trigger a `page_view`\r\n // without fid. We will initialize ga-id using gtag (config) command together with fid.\r\n script.src = GTAG_URL + \"?l=\" + dataLayerName;\r\n script.async = true;\r\n document.head.appendChild(script);\r\n}\r\n/**\r\n * Get reference to, or create, global datalayer.\r\n * @param dataLayerName Name of datalayer (most often the default, \"_dataLayer\").\r\n */\r\nfunction getOrCreateDataLayer(dataLayerName) {\r\n // Check for existing dataLayer and create if needed.\r\n var dataLayer = [];\r\n if (Array.isArray(window[dataLayerName])) {\r\n dataLayer = window[dataLayerName];\r\n }\r\n else {\r\n window[dataLayerName] = dataLayer;\r\n }\r\n return dataLayer;\r\n}\r\n/**\r\n * Wrapped gtag logic when gtag is called with 'config' command.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n * @param measurementId GA Measurement ID to set config for.\r\n * @param gtagParams Gtag config params to set.\r\n */\r\nfunction gtagOnConfig(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, measurementId, gtagParams) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correspondingAppId, dynamicConfigResults, foundConfig, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n correspondingAppId = measurementIdToAppId[measurementId];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 7, , 8]);\r\n if (!correspondingAppId) return [3 /*break*/, 3];\r\n return [4 /*yield*/, initializationPromisesMap[correspondingAppId]];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 6];\r\n case 3: return [4 /*yield*/, Promise.all(dynamicConfigPromisesList)];\r\n case 4:\r\n dynamicConfigResults = _a.sent();\r\n foundConfig = dynamicConfigResults.find(function (config) { return config.measurementId === measurementId; });\r\n if (!foundConfig) return [3 /*break*/, 6];\r\n return [4 /*yield*/, initializationPromisesMap[foundConfig.appId]];\r\n case 5:\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: return [3 /*break*/, 8];\r\n case 7:\r\n e_1 = _a.sent();\r\n logger.error(e_1);\r\n return [3 /*break*/, 8];\r\n case 8:\r\n gtagCore(GtagCommand.CONFIG, measurementId, gtagParams);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Wrapped gtag logic when gtag is called with 'event' command.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementId GA Measurement ID to log event to.\r\n * @param gtagParams Params to log with this event.\r\n */\r\nfunction gtagOnEvent(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementId, gtagParams) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var initializationPromisesToWaitFor, gaSendToList, dynamicConfigResults, _loop_1, _i, gaSendToList_1, sendToId, state_1, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 4, , 5]);\r\n initializationPromisesToWaitFor = [];\r\n if (!(gtagParams && gtagParams['send_to'])) return [3 /*break*/, 2];\r\n gaSendToList = gtagParams['send_to'];\r\n // Make it an array if is isn't, so it can be dealt with the same way.\r\n if (!Array.isArray(gaSendToList)) {\r\n gaSendToList = [gaSendToList];\r\n }\r\n return [4 /*yield*/, Promise.all(dynamicConfigPromisesList)];\r\n case 1:\r\n dynamicConfigResults = _a.sent();\r\n _loop_1 = function (sendToId) {\r\n // Any fetched dynamic measurement ID that matches this 'send_to' ID\r\n var foundConfig = dynamicConfigResults.find(function (config) { return config.measurementId === sendToId; });\r\n var initializationPromise = foundConfig && initializationPromisesMap[foundConfig.appId];\r\n if (initializationPromise) {\r\n initializationPromisesToWaitFor.push(initializationPromise);\r\n }\r\n else {\r\n // Found an item in 'send_to' that is not associated\r\n // directly with an FID, possibly a group. Empty this array,\r\n // exit the loop early, and let it get populated below.\r\n initializationPromisesToWaitFor = [];\r\n return \"break\";\r\n }\r\n };\r\n for (_i = 0, gaSendToList_1 = gaSendToList; _i < gaSendToList_1.length; _i++) {\r\n sendToId = gaSendToList_1[_i];\r\n state_1 = _loop_1(sendToId);\r\n if (state_1 === \"break\")\r\n break;\r\n }\r\n _a.label = 2;\r\n case 2:\r\n // This will be unpopulated if there was no 'send_to' field , or\r\n // if not all entries in the 'send_to' field could be mapped to\r\n // a FID. In these cases, wait on all pending initialization promises.\r\n if (initializationPromisesToWaitFor.length === 0) {\r\n initializationPromisesToWaitFor = Object.values(initializationPromisesMap);\r\n }\r\n // Run core gtag function with args after all relevant initialization\r\n // promises have been resolved.\r\n return [4 /*yield*/, Promise.all(initializationPromisesToWaitFor)];\r\n case 3:\r\n // Run core gtag function with args after all relevant initialization\r\n // promises have been resolved.\r\n _a.sent();\r\n // Workaround for http://b/141370449 - third argument cannot be undefined.\r\n gtagCore(GtagCommand.EVENT, measurementId, gtagParams || {});\r\n return [3 /*break*/, 5];\r\n case 4:\r\n e_2 = _a.sent();\r\n logger.error(e_2);\r\n return [3 /*break*/, 5];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Wraps a standard gtag function with extra code to wait for completion of\r\n * relevant initialization promises before sending requests.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n */\r\nfunction wrapGtag(gtagCore, \r\n/**\r\n * Allows wrapped gtag calls to wait on whichever intialization promises are required,\r\n * depending on the contents of the gtag params' `send_to` field, if any.\r\n */\r\ninitializationPromisesMap, \r\n/**\r\n * Wrapped gtag calls sometimes require all dynamic config fetches to have returned\r\n * before determining what initialization promises (which include FIDs) to wait for.\r\n */\r\ndynamicConfigPromisesList, \r\n/**\r\n * Wrapped gtag config calls can narrow down which initialization promise (with FID)\r\n * to wait for if the measurementId is already fetched, by getting the corresponding appId,\r\n * which is the key for the initialization promises map.\r\n */\r\nmeasurementIdToAppId) {\r\n /**\r\n * Wrapper around gtag that ensures FID is sent with gtag calls.\r\n * @param command Gtag command type.\r\n * @param idOrNameOrParams Measurement ID if command is EVENT/CONFIG, params if command is SET.\r\n * @param gtagParams Params if event is EVENT/CONFIG.\r\n */\r\n function gtagWrapper(command, idOrNameOrParams, gtagParams) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 6, , 7]);\r\n if (!(command === GtagCommand.EVENT)) return [3 /*break*/, 2];\r\n // If EVENT, second arg must be measurementId.\r\n return [4 /*yield*/, gtagOnEvent(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, idOrNameOrParams, gtagParams)];\r\n case 1:\r\n // If EVENT, second arg must be measurementId.\r\n _a.sent();\r\n return [3 /*break*/, 5];\r\n case 2:\r\n if (!(command === GtagCommand.CONFIG)) return [3 /*break*/, 4];\r\n // If CONFIG, second arg must be measurementId.\r\n return [4 /*yield*/, gtagOnConfig(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, idOrNameOrParams, gtagParams)];\r\n case 3:\r\n // If CONFIG, second arg must be measurementId.\r\n _a.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n // If SET, second arg must be params.\r\n gtagCore(GtagCommand.SET, idOrNameOrParams);\r\n _a.label = 5;\r\n case 5: return [3 /*break*/, 7];\r\n case 6:\r\n e_3 = _a.sent();\r\n logger.error(e_3);\r\n return [3 /*break*/, 7];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n }\r\n return gtagWrapper;\r\n}\r\n/**\r\n * Creates global gtag function or wraps existing one if found.\r\n * This wrapped function attaches Firebase instance ID (FID) to gtag 'config' and\r\n * 'event' calls that belong to the GAID associated with this Firebase instance.\r\n *\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n * @param dataLayerName Name of global GA datalayer array.\r\n * @param gtagFunctionName Name of global gtag function (\"gtag\" if not user-specified).\r\n */\r\nfunction wrapOrCreateGtag(initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, dataLayerName, gtagFunctionName) {\r\n // Create a basic core gtag function\r\n var gtagCore = function () {\r\n var _args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n _args[_i] = arguments[_i];\r\n }\r\n // Must push IArguments object, not an array.\r\n window[dataLayerName].push(arguments);\r\n };\r\n // Replace it with existing one if found\r\n if (window[gtagFunctionName] &&\r\n typeof window[gtagFunctionName] === 'function') {\r\n // @ts-ignore\r\n gtagCore = window[gtagFunctionName];\r\n }\r\n window[gtagFunctionName] = wrapGtag(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId);\r\n return {\r\n gtagCore: gtagCore,\r\n wrappedGtag: window[gtagFunctionName]\r\n };\r\n}\r\n/**\r\n * Returns first script tag in DOM matching our gtag url pattern.\r\n */\r\nfunction findGtagScriptOnPage() {\r\n var scriptTags = window.document.getElementsByTagName('script');\r\n for (var _i = 0, _a = Object.values(scriptTags); _i < _a.length; _i++) {\r\n var tag = _a[_i];\r\n if (tag.src && tag.src.includes(GTAG_URL)) {\r\n return tag;\r\n }\r\n }\r\n return null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar _a;\r\nvar ERRORS = (_a = {},\r\n _a[\"already-exists\" /* ALREADY_EXISTS */] = 'A Firebase Analytics instance with the appId {$id} ' +\r\n ' already exists. ' +\r\n 'Only one Firebase Analytics instance can be created for each appId.',\r\n _a[\"already-initialized\" /* ALREADY_INITIALIZED */] = 'Firebase Analytics has already been initialized.' +\r\n 'settings() must be called before initializing any Analytics instance' +\r\n 'or it will have no effect.',\r\n _a[\"interop-component-reg-failed\" /* INTEROP_COMPONENT_REG_FAILED */] = 'Firebase Analytics Interop Component failed to instantiate: {$reason}',\r\n _a[\"invalid-analytics-context\" /* INVALID_ANALYTICS_CONTEXT */] = 'Firebase Analytics is not supported in this environment. ' +\r\n 'Wrap initialization of analytics in analytics.isSupported() ' +\r\n 'to prevent initialization in unsupported environments. Details: {$errorInfo}',\r\n _a[\"indexeddb-unavailable\" /* INDEXEDDB_UNAVAILABLE */] = 'IndexedDB unavailable or restricted in this environment. ' +\r\n 'Wrap initialization of analytics in analytics.isSupported() ' +\r\n 'to prevent initialization in unsupported environments. Details: {$errorInfo}',\r\n _a[\"fetch-throttle\" /* FETCH_THROTTLE */] = 'The config fetch request timed out while in an exponential backoff state.' +\r\n ' Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',\r\n _a[\"config-fetch-failed\" /* CONFIG_FETCH_FAILED */] = 'Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}',\r\n _a[\"no-api-key\" /* NO_API_KEY */] = 'The \"apiKey\" field is empty in the local Firebase config. Firebase Analytics requires this field to' +\r\n 'contain a valid API key.',\r\n _a[\"no-app-id\" /* NO_APP_ID */] = 'The \"appId\" field is empty in the local Firebase config. Firebase Analytics requires this field to' +\r\n 'contain a valid app ID.',\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory('analytics', 'Analytics', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Backoff factor for 503 errors, which we want to be conservative about\r\n * to avoid overloading servers. Each retry interval will be\r\n * BASE_INTERVAL_MILLIS * LONG_RETRY_FACTOR ^ retryCount, so the second one\r\n * will be ~30 seconds (with fuzzing).\r\n */\r\nvar LONG_RETRY_FACTOR = 30;\r\n/**\r\n * Base wait interval to multiplied by backoffFactor^backoffCount.\r\n */\r\nvar BASE_INTERVAL_MILLIS = 1000;\r\n/**\r\n * Stubbable retry data storage class.\r\n */\r\nvar RetryData = /** @class */ (function () {\r\n function RetryData(throttleMetadata, intervalMillis) {\r\n if (throttleMetadata === void 0) { throttleMetadata = {}; }\r\n if (intervalMillis === void 0) { intervalMillis = BASE_INTERVAL_MILLIS; }\r\n this.throttleMetadata = throttleMetadata;\r\n this.intervalMillis = intervalMillis;\r\n }\r\n RetryData.prototype.getThrottleMetadata = function (appId) {\r\n return this.throttleMetadata[appId];\r\n };\r\n RetryData.prototype.setThrottleMetadata = function (appId, metadata) {\r\n this.throttleMetadata[appId] = metadata;\r\n };\r\n RetryData.prototype.deleteThrottleMetadata = function (appId) {\r\n delete this.throttleMetadata[appId];\r\n };\r\n return RetryData;\r\n}());\r\nvar defaultRetryData = new RetryData();\r\n/**\r\n * Set GET request headers.\r\n * @param apiKey App API key.\r\n */\r\nfunction getHeaders(apiKey) {\r\n return new Headers({\r\n Accept: 'application/json',\r\n 'x-goog-api-key': apiKey\r\n });\r\n}\r\n/**\r\n * Fetches dynamic config from backend.\r\n * @param app Firebase app to fetch config for.\r\n */\r\nfunction fetchDynamicConfig(appFields) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appId, apiKey, request, appUrl, response, errorMessage, jsonResponse, _ignored_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n appId = appFields.appId, apiKey = appFields.apiKey;\r\n request = {\r\n method: 'GET',\r\n headers: getHeaders(apiKey)\r\n };\r\n appUrl = DYNAMIC_CONFIG_URL.replace('{app-id}', appId);\r\n return [4 /*yield*/, fetch(appUrl, request)];\r\n case 1:\r\n response = _b.sent();\r\n if (!(response.status !== 200 && response.status !== 304)) return [3 /*break*/, 6];\r\n errorMessage = '';\r\n _b.label = 2;\r\n case 2:\r\n _b.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, response.json()];\r\n case 3:\r\n jsonResponse = (_b.sent());\r\n if ((_a = jsonResponse.error) === null || _a === void 0 ? void 0 : _a.message) {\r\n errorMessage = jsonResponse.error.message;\r\n }\r\n return [3 /*break*/, 5];\r\n case 4:\r\n _ignored_1 = _b.sent();\r\n return [3 /*break*/, 5];\r\n case 5: throw ERROR_FACTORY.create(\"config-fetch-failed\" /* CONFIG_FETCH_FAILED */, {\r\n httpStatus: response.status,\r\n responseMessage: errorMessage\r\n });\r\n case 6: return [2 /*return*/, response.json()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Fetches dynamic config from backend, retrying if failed.\r\n * @param app Firebase app to fetch config for.\r\n */\r\nfunction fetchDynamicConfigWithRetry(app, \r\n// retryData and timeoutMillis are parameterized to allow passing a different value for testing.\r\nretryData, timeoutMillis) {\r\n if (retryData === void 0) { retryData = defaultRetryData; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, appId, apiKey, measurementId, throttleMetadata, signal;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n _a = app.options, appId = _a.appId, apiKey = _a.apiKey, measurementId = _a.measurementId;\r\n if (!appId) {\r\n throw ERROR_FACTORY.create(\"no-app-id\" /* NO_APP_ID */);\r\n }\r\n if (!apiKey) {\r\n if (measurementId) {\r\n return [2 /*return*/, {\r\n measurementId: measurementId,\r\n appId: appId\r\n }];\r\n }\r\n throw ERROR_FACTORY.create(\"no-api-key\" /* NO_API_KEY */);\r\n }\r\n throttleMetadata = retryData.getThrottleMetadata(appId) || {\r\n backoffCount: 0,\r\n throttleEndTimeMillis: Date.now()\r\n };\r\n signal = new AnalyticsAbortSignal();\r\n setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n // Note a very low delay, eg < 10ms, can elapse before listeners are initialized.\r\n signal.abort();\r\n return [2 /*return*/];\r\n });\r\n }); }, timeoutMillis !== undefined ? timeoutMillis : FETCH_TIMEOUT_MILLIS);\r\n return [2 /*return*/, attemptFetchDynamicConfigWithRetry({ appId: appId, apiKey: apiKey, measurementId: measurementId }, throttleMetadata, signal, retryData)];\r\n });\r\n });\r\n}\r\n/**\r\n * Runs one retry attempt.\r\n * @param appFields Necessary app config fields.\r\n * @param throttleMetadata Ongoing metadata to determine throttling times.\r\n * @param signal Abort signal.\r\n */\r\nfunction attemptFetchDynamicConfigWithRetry(appFields, _a, signal, retryData // for testing\r\n) {\r\n var throttleEndTimeMillis = _a.throttleEndTimeMillis, backoffCount = _a.backoffCount;\r\n if (retryData === void 0) { retryData = defaultRetryData; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appId, measurementId, e_1, response, e_2, backoffMillis, throttleMetadata;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n appId = appFields.appId, measurementId = appFields.measurementId;\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, setAbortableTimeout(signal, throttleEndTimeMillis)];\r\n case 2:\r\n _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _b.sent();\r\n if (measurementId) {\r\n logger.warn(\"Timed out fetching this Firebase app's measurement ID from the server.\" +\r\n (\" Falling back to the measurement ID \" + measurementId) +\r\n (\" provided in the \\\"measurementId\\\" field in the local Firebase config. [\" + e_1.message + \"]\"));\r\n return [2 /*return*/, { appId: appId, measurementId: measurementId }];\r\n }\r\n throw e_1;\r\n case 4:\r\n _b.trys.push([4, 6, , 7]);\r\n return [4 /*yield*/, fetchDynamicConfig(appFields)];\r\n case 5:\r\n response = _b.sent();\r\n // Note the SDK only clears throttle state if response is success or non-retriable.\r\n retryData.deleteThrottleMetadata(appId);\r\n return [2 /*return*/, response];\r\n case 6:\r\n e_2 = _b.sent();\r\n if (!isRetriableError(e_2)) {\r\n retryData.deleteThrottleMetadata(appId);\r\n if (measurementId) {\r\n logger.warn(\"Failed to fetch this Firebase app's measurement ID from the server.\" +\r\n (\" Falling back to the measurement ID \" + measurementId) +\r\n (\" provided in the \\\"measurementId\\\" field in the local Firebase config. [\" + e_2.message + \"]\"));\r\n return [2 /*return*/, { appId: appId, measurementId: measurementId }];\r\n }\r\n else {\r\n throw e_2;\r\n }\r\n }\r\n backoffMillis = Number(e_2.customData.httpStatus) === 503\r\n ? calculateBackoffMillis(backoffCount, retryData.intervalMillis, LONG_RETRY_FACTOR)\r\n : calculateBackoffMillis(backoffCount, retryData.intervalMillis);\r\n throttleMetadata = {\r\n throttleEndTimeMillis: Date.now() + backoffMillis,\r\n backoffCount: backoffCount + 1\r\n };\r\n // Persists state.\r\n retryData.setThrottleMetadata(appId, throttleMetadata);\r\n logger.debug(\"Calling attemptFetch again in \" + backoffMillis + \" millis\");\r\n return [2 /*return*/, attemptFetchDynamicConfigWithRetry(appFields, throttleMetadata, signal, retryData)];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Supports waiting on a backoff by:\r\n *\r\n *
    \r\n *
  • Promisifying setTimeout, so we can set a timeout in our Promise chain
  • \r\n *
  • Listening on a signal bus for abort events, just like the Fetch API
  • \r\n *
  • Failing in the same way the Fetch API fails, so timing out a live request and a throttled\r\n * request appear the same.
  • \r\n *
\r\n *\r\n *

Visible for testing.\r\n */\r\nfunction setAbortableTimeout(signal, throttleEndTimeMillis) {\r\n return new Promise(function (resolve, reject) {\r\n // Derives backoff from given end time, normalizing negative numbers to zero.\r\n var backoffMillis = Math.max(throttleEndTimeMillis - Date.now(), 0);\r\n var timeout = setTimeout(resolve, backoffMillis);\r\n // Adds listener, rather than sets onabort, because signal is a shared object.\r\n signal.addEventListener(function () {\r\n clearTimeout(timeout);\r\n // If the request completes before this timeout, the rejection has no effect.\r\n reject(ERROR_FACTORY.create(\"fetch-throttle\" /* FETCH_THROTTLE */, {\r\n throttleEndTimeMillis: throttleEndTimeMillis\r\n }));\r\n });\r\n });\r\n}\r\n/**\r\n * Returns true if the {@link Error} indicates a fetch request may succeed later.\r\n */\r\nfunction isRetriableError(e) {\r\n if (!(e instanceof FirebaseError) || !e.customData) {\r\n return false;\r\n }\r\n // Uses string index defined by ErrorData, which FirebaseError implements.\r\n var httpStatus = Number(e.customData['httpStatus']);\r\n return (httpStatus === 429 ||\r\n httpStatus === 500 ||\r\n httpStatus === 503 ||\r\n httpStatus === 504);\r\n}\r\n/**\r\n * Shims a minimal AbortSignal (copied from Remote Config).\r\n *\r\n *

AbortController's AbortSignal conveniently decouples fetch timeout logic from other aspects\r\n * of networking, such as retries. Firebase doesn't use AbortController enough to justify a\r\n * polyfill recommendation, like we do with the Fetch API, but this minimal shim can easily be\r\n * swapped out if/when we do.\r\n */\r\nvar AnalyticsAbortSignal = /** @class */ (function () {\r\n function AnalyticsAbortSignal() {\r\n this.listeners = [];\r\n }\r\n AnalyticsAbortSignal.prototype.addEventListener = function (listener) {\r\n this.listeners.push(listener);\r\n };\r\n AnalyticsAbortSignal.prototype.abort = function () {\r\n this.listeners.forEach(function (listener) { return listener(); });\r\n };\r\n return AnalyticsAbortSignal;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction validateIndexedDB() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!isIndexedDBAvailable()) return [3 /*break*/, 1];\r\n logger.warn(ERROR_FACTORY.create(\"indexeddb-unavailable\" /* INDEXEDDB_UNAVAILABLE */, {\r\n errorInfo: 'IndexedDB is not available in this environment.'\r\n }).message);\r\n return [2 /*return*/, false];\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, validateIndexedDBOpenable()];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n logger.warn(ERROR_FACTORY.create(\"indexeddb-unavailable\" /* INDEXEDDB_UNAVAILABLE */, {\r\n errorInfo: e_1\r\n }).message);\r\n return [2 /*return*/, false];\r\n case 4: return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Initialize the analytics instance in gtag.js by calling config command with fid.\r\n *\r\n * NOTE: We combine analytics initialization and setting fid together because we want fid to be\r\n * part of the `page_view` event that's sent during the initialization\r\n * @param app Firebase app\r\n * @param gtagCore The gtag function that's not wrapped.\r\n * @param dynamicConfigPromisesList Array of all dynamic config promises.\r\n * @param measurementIdToAppId Maps measurementID to appID.\r\n * @param installations FirebaseInstallations instance.\r\n *\r\n * @returns Measurement ID.\r\n */\r\nfunction initializeIds(app, dynamicConfigPromisesList, measurementIdToAppId, installations, gtagCore) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var dynamicConfigPromise, fidPromise, _a, dynamicConfig, fid, configProperties;\r\n var _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n dynamicConfigPromise = fetchDynamicConfigWithRetry(app);\r\n // Once fetched, map measurementIds to appId, for ease of lookup in wrapped gtag function.\r\n dynamicConfigPromise\r\n .then(function (config) {\r\n measurementIdToAppId[config.measurementId] = config.appId;\r\n if (app.options.measurementId &&\r\n config.measurementId !== app.options.measurementId) {\r\n logger.warn(\"The measurement ID in the local Firebase config (\" + app.options.measurementId + \")\" +\r\n (\" does not match the measurement ID fetched from the server (\" + config.measurementId + \").\") +\r\n \" To ensure analytics events are always sent to the correct Analytics property,\" +\r\n \" update the\" +\r\n \" measurement ID field in the local config or remove it from the local config.\");\r\n }\r\n })\r\n .catch(function (e) { return logger.error(e); });\r\n // Add to list to track state of all dynamic config promises.\r\n dynamicConfigPromisesList.push(dynamicConfigPromise);\r\n fidPromise = validateIndexedDB().then(function (envIsValid) {\r\n if (envIsValid) {\r\n return installations.getId();\r\n }\r\n else {\r\n return undefined;\r\n }\r\n });\r\n return [4 /*yield*/, Promise.all([\r\n dynamicConfigPromise,\r\n fidPromise\r\n ])];\r\n case 1:\r\n _a = _c.sent(), dynamicConfig = _a[0], fid = _a[1];\r\n // This command initializes gtag.js and only needs to be called once for the entire web app,\r\n // but since it is idempotent, we can call it multiple times.\r\n // We keep it together with other initialization logic for better code structure.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n gtagCore('js', new Date());\r\n configProperties = (_b = {},\r\n // guard against developers accidentally setting properties with prefix `firebase_`\r\n _b[ORIGIN_KEY] = 'firebase',\r\n _b.update = true,\r\n _b);\r\n if (fid != null) {\r\n configProperties[GA_FID_KEY] = fid;\r\n }\r\n // It should be the first config command called on this GA-ID\r\n // Initialize this GA-ID and set FID on it using the gtag config API.\r\n gtagCore(GtagCommand.CONFIG, dynamicConfig.measurementId, configProperties);\r\n return [2 /*return*/, dynamicConfig.measurementId];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Maps appId to full initialization promise. Wrapped gtag calls must wait on\r\n * all or some of these, depending on the call's `send_to` param and the status\r\n * of the dynamic config fetches (see below).\r\n */\r\nvar initializationPromisesMap = {};\r\n/**\r\n * List of dynamic config fetch promises. In certain cases, wrapped gtag calls\r\n * wait on all these to be complete in order to determine if it can selectively\r\n * wait for only certain initialization (FID) promises or if it must wait for all.\r\n */\r\nvar dynamicConfigPromisesList = [];\r\n/**\r\n * Maps fetched measurementIds to appId. Populated when the app's dynamic config\r\n * fetch completes. If already populated, gtag config calls can use this to\r\n * selectively wait for only this app's initialization promise (FID) instead of all\r\n * initialization promises.\r\n */\r\nvar measurementIdToAppId = {};\r\n/**\r\n * Name for window global data layer array used by GA: defaults to 'dataLayer'.\r\n */\r\nvar dataLayerName = 'dataLayer';\r\n/**\r\n * Name for window global gtag function used by GA: defaults to 'gtag'.\r\n */\r\nvar gtagName = 'gtag';\r\n/**\r\n * Reproduction of standard gtag function or reference to existing\r\n * gtag function on window object.\r\n */\r\nvar gtagCoreFunction;\r\n/**\r\n * Wrapper around gtag function that ensures FID is sent with all\r\n * relevant event and config calls.\r\n */\r\nvar wrappedGtagFunction;\r\n/**\r\n * Flag to ensure page initialization steps (creation or wrapping of\r\n * dataLayer and gtag script) are only run once per page load.\r\n */\r\nvar globalInitDone = false;\r\n/**\r\n * For testing\r\n */\r\nfunction resetGlobalVars(newGlobalInitDone, newInitializationPromisesMap, newDynamicPromises) {\r\n if (newGlobalInitDone === void 0) { newGlobalInitDone = false; }\r\n if (newInitializationPromisesMap === void 0) { newInitializationPromisesMap = {}; }\r\n if (newDynamicPromises === void 0) { newDynamicPromises = []; }\r\n globalInitDone = newGlobalInitDone;\r\n initializationPromisesMap = newInitializationPromisesMap;\r\n dynamicConfigPromisesList = newDynamicPromises;\r\n dataLayerName = 'dataLayer';\r\n gtagName = 'gtag';\r\n}\r\n/**\r\n * For testing\r\n */\r\nfunction getGlobalVars() {\r\n return {\r\n initializationPromisesMap: initializationPromisesMap,\r\n dynamicConfigPromisesList: dynamicConfigPromisesList\r\n };\r\n}\r\n/**\r\n * This must be run before calling firebase.analytics() or it won't\r\n * have any effect.\r\n * @param options Custom gtag and dataLayer names.\r\n */\r\nfunction settings(options) {\r\n if (globalInitDone) {\r\n throw ERROR_FACTORY.create(\"already-initialized\" /* ALREADY_INITIALIZED */);\r\n }\r\n if (options.dataLayerName) {\r\n dataLayerName = options.dataLayerName;\r\n }\r\n if (options.gtagName) {\r\n gtagName = options.gtagName;\r\n }\r\n}\r\n/**\r\n * Returns true if no environment mismatch is found.\r\n * If environment mismatches are found, throws an INVALID_ANALYTICS_CONTEXT\r\n * error that also lists details for each mismatch found.\r\n */\r\nfunction warnOnBrowserContextMismatch() {\r\n var mismatchedEnvMessages = [];\r\n if (isBrowserExtension()) {\r\n mismatchedEnvMessages.push('This is a browser extension environment.');\r\n }\r\n if (!areCookiesEnabled()) {\r\n mismatchedEnvMessages.push('Cookies are not available.');\r\n }\r\n if (mismatchedEnvMessages.length > 0) {\r\n var details = mismatchedEnvMessages\r\n .map(function (message, index) { return \"(\" + (index + 1) + \") \" + message; })\r\n .join(' ');\r\n var err = ERROR_FACTORY.create(\"invalid-analytics-context\" /* INVALID_ANALYTICS_CONTEXT */, {\r\n errorInfo: details\r\n });\r\n logger.warn(err.message);\r\n }\r\n}\r\nfunction factory(app, installations) {\r\n warnOnBrowserContextMismatch();\r\n var appId = app.options.appId;\r\n if (!appId) {\r\n throw ERROR_FACTORY.create(\"no-app-id\" /* NO_APP_ID */);\r\n }\r\n if (!app.options.apiKey) {\r\n if (app.options.measurementId) {\r\n logger.warn(\"The \\\"apiKey\\\" field is empty in the local Firebase config. This is needed to fetch the latest\" +\r\n (\" measurement ID for this Firebase app. Falling back to the measurement ID \" + app.options.measurementId) +\r\n \" provided in the \\\"measurementId\\\" field in the local Firebase config.\");\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"no-api-key\" /* NO_API_KEY */);\r\n }\r\n }\r\n if (initializationPromisesMap[appId] != null) {\r\n throw ERROR_FACTORY.create(\"already-exists\" /* ALREADY_EXISTS */, {\r\n id: appId\r\n });\r\n }\r\n if (!globalInitDone) {\r\n // Steps here should only be done once per page: creation or wrapping\r\n // of dataLayer and global gtag function.\r\n // Detect if user has already put the gtag ';\r\n }\r\n var iframeContents = '' + script + '';\r\n try {\r\n this.myIFrame.doc.open();\r\n this.myIFrame.doc.write(iframeContents);\r\n this.myIFrame.doc.close();\r\n }\r\n catch (e) {\r\n log('frame writing exception');\r\n if (e.stack) {\r\n log(e.stack);\r\n }\r\n log(e);\r\n }\r\n }\r\n else {\r\n this.commandCB = commandCB;\r\n this.onMessageCB = onMessageCB;\r\n }\r\n }\r\n /**\r\n * Each browser has its own funny way to handle iframes. Here we mush them all together into one object that I can\r\n * actually use.\r\n * @private\r\n * @return {Element}\r\n */\r\n FirebaseIFrameScriptHolder.createIFrame_ = function () {\r\n var iframe = document.createElement('iframe');\r\n iframe.style.display = 'none';\r\n // This is necessary in order to initialize the document inside the iframe\r\n if (document.body) {\r\n document.body.appendChild(iframe);\r\n try {\r\n // If document.domain has been modified in IE, this will throw an error, and we need to set the\r\n // domain of the iframe's document manually. We can do this via a javascript: url as the src attribute\r\n // Also note that we must do this *after* the iframe has been appended to the page. Otherwise it doesn't work.\r\n var a = iframe.contentWindow.document;\r\n if (!a) {\r\n // Apologies for the log-spam, I need to do something to keep closure from optimizing out the assignment above.\r\n log('No IE domain setting required');\r\n }\r\n }\r\n catch (e) {\r\n var domain = document.domain;\r\n iframe.src =\r\n \"javascript:void((function(){document.open();document.domain='\" +\r\n domain +\r\n \"';document.close();})())\";\r\n }\r\n }\r\n else {\r\n // LongPollConnection attempts to delay initialization until the document is ready, so hopefully this\r\n // never gets hit.\r\n throw 'Document body has not initialized. Wait to initialize Firebase until after the document is ready.';\r\n }\r\n // Get the document of the iframe in a browser-specific way.\r\n if (iframe.contentDocument) {\r\n iframe.doc = iframe.contentDocument; // Firefox, Opera, Safari\r\n }\r\n else if (iframe.contentWindow) {\r\n iframe.doc = iframe.contentWindow.document; // Internet Explorer\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }\r\n else if (iframe.document) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n iframe.doc = iframe.document; //others?\r\n }\r\n return iframe;\r\n };\r\n /**\r\n * Cancel all outstanding queries and remove the frame.\r\n */\r\n FirebaseIFrameScriptHolder.prototype.close = function () {\r\n var _this = this;\r\n //Mark this iframe as dead, so no new requests are sent.\r\n this.alive = false;\r\n if (this.myIFrame) {\r\n //We have to actually remove all of the html inside this iframe before removing it from the\r\n //window, or IE will continue loading and executing the script tags we've already added, which\r\n //can lead to some errors being thrown. Setting innerHTML seems to be the easiest way to do this.\r\n this.myIFrame.doc.body.innerHTML = '';\r\n setTimeout(function () {\r\n if (_this.myIFrame !== null) {\r\n document.body.removeChild(_this.myIFrame);\r\n _this.myIFrame = null;\r\n }\r\n }, Math.floor(0));\r\n }\r\n // Protect from being called recursively.\r\n var onDisconnect = this.onDisconnect;\r\n if (onDisconnect) {\r\n this.onDisconnect = null;\r\n onDisconnect();\r\n }\r\n };\r\n /**\r\n * Actually start the long-polling session by adding the first script tag(s) to the iframe.\r\n * @param {!string} id - The ID of this connection\r\n * @param {!string} pw - The password for this connection\r\n */\r\n FirebaseIFrameScriptHolder.prototype.startLongPoll = function (id, pw) {\r\n this.myID = id;\r\n this.myPW = pw;\r\n this.alive = true;\r\n //send the initial request. If there are requests queued, make sure that we transmit as many as we are currently able to.\r\n while (this.newRequest_()) { }\r\n };\r\n /**\r\n * This is called any time someone might want a script tag to be added. It adds a script tag when there aren't\r\n * too many outstanding requests and we are still alive.\r\n *\r\n * If there are outstanding packet segments to send, it sends one. If there aren't, it sends a long-poll anyways if\r\n * needed.\r\n */\r\n FirebaseIFrameScriptHolder.prototype.newRequest_ = function () {\r\n // We keep one outstanding request open all the time to receive data, but if we need to send data\r\n // (pendingSegs.length > 0) then we create a new request to send the data. The server will automatically\r\n // close the old request.\r\n if (this.alive &&\r\n this.sendNewPolls &&\r\n this.outstandingRequests.size < (this.pendingSegs.length > 0 ? 2 : 1)) {\r\n //construct our url\r\n this.currentSerial++;\r\n var urlParams = {};\r\n urlParams[FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\r\n urlParams[FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\r\n urlParams[FIREBASE_LONGPOLL_SERIAL_PARAM] = this.currentSerial;\r\n var theURL = this.urlFn(urlParams);\r\n //Now add as much data as we can.\r\n var curDataString = '';\r\n var i = 0;\r\n while (this.pendingSegs.length > 0) {\r\n //first, lets see if the next segment will fit.\r\n var nextSeg = this.pendingSegs[0];\r\n if (nextSeg.d.length +\r\n SEG_HEADER_SIZE +\r\n curDataString.length <=\r\n MAX_URL_DATA_SIZE) {\r\n //great, the segment will fit. Lets append it.\r\n var theSeg = this.pendingSegs.shift();\r\n curDataString =\r\n curDataString +\r\n '&' +\r\n FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM +\r\n i +\r\n '=' +\r\n theSeg.seg +\r\n '&' +\r\n FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET +\r\n i +\r\n '=' +\r\n theSeg.ts +\r\n '&' +\r\n FIREBASE_LONGPOLL_DATA_PARAM +\r\n i +\r\n '=' +\r\n theSeg.d;\r\n i++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n theURL = theURL + curDataString;\r\n this.addLongPollTag_(theURL, this.currentSerial);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n /**\r\n * Queue a packet for transmission to the server.\r\n * @param segnum - A sequential id for this packet segment used for reassembly\r\n * @param totalsegs - The total number of segments in this packet\r\n * @param data - The data for this segment.\r\n */\r\n FirebaseIFrameScriptHolder.prototype.enqueueSegment = function (segnum, totalsegs, data) {\r\n //add this to the queue of segments to send.\r\n this.pendingSegs.push({ seg: segnum, ts: totalsegs, d: data });\r\n //send the data immediately if there isn't already data being transmitted, unless\r\n //startLongPoll hasn't been called yet.\r\n if (this.alive) {\r\n this.newRequest_();\r\n }\r\n };\r\n /**\r\n * Add a script tag for a regular long-poll request.\r\n * @param {!string} url - The URL of the script tag.\r\n * @param {!number} serial - The serial number of the request.\r\n * @private\r\n */\r\n FirebaseIFrameScriptHolder.prototype.addLongPollTag_ = function (url, serial) {\r\n var _this = this;\r\n //remember that we sent this request.\r\n this.outstandingRequests.add(serial);\r\n var doNewRequest = function () {\r\n _this.outstandingRequests.delete(serial);\r\n _this.newRequest_();\r\n };\r\n // If this request doesn't return on its own accord (by the server sending us some data), we'll\r\n // create a new one after the KEEPALIVE interval to make sure we always keep a fresh request open.\r\n var keepaliveTimeout = setTimeout(doNewRequest, Math.floor(KEEPALIVE_REQUEST_INTERVAL));\r\n var readyStateCB = function () {\r\n // Request completed. Cancel the keepalive.\r\n clearTimeout(keepaliveTimeout);\r\n // Trigger a new request so we can continue receiving data.\r\n doNewRequest();\r\n };\r\n this.addTag(url, readyStateCB);\r\n };\r\n /**\r\n * Add an arbitrary script tag to the iframe.\r\n * @param {!string} url - The URL for the script tag source.\r\n * @param {!function()} loadCB - A callback to be triggered once the script has loaded.\r\n */\r\n FirebaseIFrameScriptHolder.prototype.addTag = function (url, loadCB) {\r\n var _this = this;\r\n if (isNodeSdk()) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.doNodeLongPoll(url, loadCB);\r\n }\r\n else {\r\n setTimeout(function () {\r\n try {\r\n // if we're already closed, don't add this poll\r\n if (!_this.sendNewPolls) {\r\n return;\r\n }\r\n var newScript_1 = _this.myIFrame.doc.createElement('script');\r\n newScript_1.type = 'text/javascript';\r\n newScript_1.async = true;\r\n newScript_1.src = url;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n newScript_1.onload = newScript_1.onreadystatechange = function () {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var rstate = newScript_1.readyState;\r\n if (!rstate || rstate === 'loaded' || rstate === 'complete') {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n newScript_1.onload = newScript_1.onreadystatechange = null;\r\n if (newScript_1.parentNode) {\r\n newScript_1.parentNode.removeChild(newScript_1);\r\n }\r\n loadCB();\r\n }\r\n };\r\n newScript_1.onerror = function () {\r\n log('Long-poll script failed to load: ' + url);\r\n _this.sendNewPolls = false;\r\n _this.close();\r\n };\r\n _this.myIFrame.doc.body.appendChild(newScript_1);\r\n }\r\n catch (e) {\r\n // TODO: we should make this error visible somehow\r\n }\r\n }, Math.floor(1));\r\n }\r\n };\r\n return FirebaseIFrameScriptHolder;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** The semver (www.semver.org) version of the SDK. */\r\nvar SDK_VERSION = '';\r\n// SDK_VERSION should be set before any database instance is created\r\nfunction setSDKVersion(version) {\r\n SDK_VERSION = version;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar WEBSOCKET_MAX_FRAME_SIZE = 16384;\r\nvar WEBSOCKET_KEEPALIVE_INTERVAL = 45000;\r\nvar WebSocketImpl = null;\r\nif (typeof MozWebSocket !== 'undefined') {\r\n WebSocketImpl = MozWebSocket;\r\n}\r\nelse if (typeof WebSocket !== 'undefined') {\r\n WebSocketImpl = WebSocket;\r\n}\r\n/**\r\n * Create a new websocket connection with the given callbacks.\r\n * @constructor\r\n * @implements {Transport}\r\n */\r\nvar WebSocketConnection = /** @class */ (function () {\r\n /**\r\n * @param connId identifier for this transport\r\n * @param repoInfo The info for the websocket endpoint.\r\n * @param applicationId The Firebase App ID for this project.\r\n * @param transportSessionId Optional transportSessionId if this is connecting to an existing transport\r\n * session\r\n * @param lastSessionId Optional lastSessionId if there was a previous connection\r\n */\r\n function WebSocketConnection(connId, repoInfo, applicationId, transportSessionId, lastSessionId) {\r\n this.connId = connId;\r\n this.applicationId = applicationId;\r\n this.keepaliveTimer = null;\r\n this.frames = null;\r\n this.totalFrames = 0;\r\n this.bytesSent = 0;\r\n this.bytesReceived = 0;\r\n this.log_ = logWrapper(this.connId);\r\n this.stats_ = StatsManager.getCollection(repoInfo);\r\n this.connURL = WebSocketConnection.connectionURL_(repoInfo, transportSessionId, lastSessionId);\r\n this.nodeAdmin = repoInfo.nodeAdmin;\r\n }\r\n /**\r\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\r\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\r\n * session\r\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\r\n * @return {string} connection url\r\n * @private\r\n */\r\n WebSocketConnection.connectionURL_ = function (repoInfo, transportSessionId, lastSessionId) {\r\n var urlParams = {};\r\n urlParams[VERSION_PARAM] = PROTOCOL_VERSION;\r\n if (!isNodeSdk() &&\r\n typeof location !== 'undefined' &&\r\n location.href &&\r\n location.href.indexOf(FORGE_DOMAIN) !== -1) {\r\n urlParams[REFERER_PARAM] = FORGE_REF;\r\n }\r\n if (transportSessionId) {\r\n urlParams[TRANSPORT_SESSION_PARAM] = transportSessionId;\r\n }\r\n if (lastSessionId) {\r\n urlParams[LAST_SESSION_PARAM] = lastSessionId;\r\n }\r\n return repoInfo.connectionURL(WEBSOCKET, urlParams);\r\n };\r\n /**\r\n *\r\n * @param onMessage Callback when messages arrive\r\n * @param onDisconnect Callback with connection lost.\r\n */\r\n WebSocketConnection.prototype.open = function (onMessage, onDisconnect) {\r\n var _this = this;\r\n this.onDisconnect = onDisconnect;\r\n this.onMessage = onMessage;\r\n this.log_('Websocket connecting to ' + this.connURL);\r\n this.everConnected_ = false;\r\n // Assume failure until proven otherwise.\r\n PersistentStorage.set('previous_websocket_failure', true);\r\n try {\r\n if (isNodeSdk()) {\r\n var device = this.nodeAdmin ? 'AdminNode' : 'Node';\r\n // UA Format: Firebase////\r\n var options = {\r\n headers: {\r\n 'User-Agent': \"Firebase/\" + PROTOCOL_VERSION + \"/\" + SDK_VERSION + \"/\" + process.platform + \"/\" + device,\r\n 'X-Firebase-GMPID': this.applicationId || ''\r\n }\r\n };\r\n // Plumb appropriate http_proxy environment variable into faye-websocket if it exists.\r\n var env = process['env'];\r\n var proxy = this.connURL.indexOf('wss://') === 0\r\n ? env['HTTPS_PROXY'] || env['https_proxy']\r\n : env['HTTP_PROXY'] || env['http_proxy'];\r\n if (proxy) {\r\n options['proxy'] = { origin: proxy };\r\n }\r\n this.mySock = new WebSocketImpl(this.connURL, [], options);\r\n }\r\n else {\r\n var options = {\r\n headers: {\r\n 'X-Firebase-GMPID': this.applicationId || ''\r\n }\r\n };\r\n this.mySock = new WebSocketImpl(this.connURL, [], options);\r\n }\r\n }\r\n catch (e) {\r\n this.log_('Error instantiating WebSocket.');\r\n var error = e.message || e.data;\r\n if (error) {\r\n this.log_(error);\r\n }\r\n this.onClosed_();\r\n return;\r\n }\r\n this.mySock.onopen = function () {\r\n _this.log_('Websocket connected.');\r\n _this.everConnected_ = true;\r\n };\r\n this.mySock.onclose = function () {\r\n _this.log_('Websocket connection was disconnected.');\r\n _this.mySock = null;\r\n _this.onClosed_();\r\n };\r\n this.mySock.onmessage = function (m) {\r\n _this.handleIncomingFrame(m);\r\n };\r\n this.mySock.onerror = function (e) {\r\n _this.log_('WebSocket error. Closing connection.');\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var error = e.message || e.data;\r\n if (error) {\r\n _this.log_(error);\r\n }\r\n _this.onClosed_();\r\n };\r\n };\r\n /**\r\n * No-op for websockets, we don't need to do anything once the connection is confirmed as open\r\n */\r\n WebSocketConnection.prototype.start = function () { };\r\n WebSocketConnection.forceDisallow = function () {\r\n WebSocketConnection.forceDisallow_ = true;\r\n };\r\n WebSocketConnection.isAvailable = function () {\r\n var isOldAndroid = false;\r\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\r\n var oldAndroidRegex = /Android ([0-9]{0,}\\.[0-9]{0,})/;\r\n var oldAndroidMatch = navigator.userAgent.match(oldAndroidRegex);\r\n if (oldAndroidMatch && oldAndroidMatch.length > 1) {\r\n if (parseFloat(oldAndroidMatch[1]) < 4.4) {\r\n isOldAndroid = true;\r\n }\r\n }\r\n }\r\n return (!isOldAndroid &&\r\n WebSocketImpl !== null &&\r\n !WebSocketConnection.forceDisallow_);\r\n };\r\n /**\r\n * Returns true if we previously failed to connect with this transport.\r\n * @return {boolean}\r\n */\r\n WebSocketConnection.previouslyFailed = function () {\r\n // If our persistent storage is actually only in-memory storage,\r\n // we default to assuming that it previously failed to be safe.\r\n return (PersistentStorage.isInMemoryStorage ||\r\n PersistentStorage.get('previous_websocket_failure') === true);\r\n };\r\n WebSocketConnection.prototype.markConnectionHealthy = function () {\r\n PersistentStorage.remove('previous_websocket_failure');\r\n };\r\n WebSocketConnection.prototype.appendFrame_ = function (data) {\r\n this.frames.push(data);\r\n if (this.frames.length === this.totalFrames) {\r\n var fullMess = this.frames.join('');\r\n this.frames = null;\r\n var jsonMess = jsonEval(fullMess);\r\n //handle the message\r\n this.onMessage(jsonMess);\r\n }\r\n };\r\n /**\r\n * @param {number} frameCount The number of frames we are expecting from the server\r\n * @private\r\n */\r\n WebSocketConnection.prototype.handleNewFrameCount_ = function (frameCount) {\r\n this.totalFrames = frameCount;\r\n this.frames = [];\r\n };\r\n /**\r\n * Attempts to parse a frame count out of some text. If it can't, assumes a value of 1\r\n * @param {!String} data\r\n * @return {?String} Any remaining data to be process, or null if there is none\r\n * @private\r\n */\r\n WebSocketConnection.prototype.extractFrameCount_ = function (data) {\r\n assert(this.frames === null, 'We already have a frame buffer');\r\n // TODO: The server is only supposed to send up to 9999 frames (i.e. length <= 4), but that isn't being enforced\r\n // currently. So allowing larger frame counts (length <= 6). See https://app.asana.com/0/search/8688598998380/8237608042508\r\n if (data.length <= 6) {\r\n var frameCount = Number(data);\r\n if (!isNaN(frameCount)) {\r\n this.handleNewFrameCount_(frameCount);\r\n return null;\r\n }\r\n }\r\n this.handleNewFrameCount_(1);\r\n return data;\r\n };\r\n /**\r\n * Process a websocket frame that has arrived from the server.\r\n * @param mess The frame data\r\n */\r\n WebSocketConnection.prototype.handleIncomingFrame = function (mess) {\r\n if (this.mySock === null) {\r\n return; // Chrome apparently delivers incoming packets even after we .close() the connection sometimes.\r\n }\r\n var data = mess['data'];\r\n this.bytesReceived += data.length;\r\n this.stats_.incrementCounter('bytes_received', data.length);\r\n this.resetKeepAlive();\r\n if (this.frames !== null) {\r\n // we're buffering\r\n this.appendFrame_(data);\r\n }\r\n else {\r\n // try to parse out a frame count, otherwise, assume 1 and process it\r\n var remainingData = this.extractFrameCount_(data);\r\n if (remainingData !== null) {\r\n this.appendFrame_(remainingData);\r\n }\r\n }\r\n };\r\n /**\r\n * Send a message to the server\r\n * @param {Object} data The JSON object to transmit\r\n */\r\n WebSocketConnection.prototype.send = function (data) {\r\n this.resetKeepAlive();\r\n var dataStr = stringify(data);\r\n this.bytesSent += dataStr.length;\r\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\r\n //We can only fit a certain amount in each websocket frame, so we need to split this request\r\n //up into multiple pieces if it doesn't fit in one request.\r\n var dataSegs = splitStringBySize(dataStr, WEBSOCKET_MAX_FRAME_SIZE);\r\n //Send the length header\r\n if (dataSegs.length > 1) {\r\n this.sendString_(String(dataSegs.length));\r\n }\r\n //Send the actual data in segments.\r\n for (var i = 0; i < dataSegs.length; i++) {\r\n this.sendString_(dataSegs[i]);\r\n }\r\n };\r\n WebSocketConnection.prototype.shutdown_ = function () {\r\n this.isClosed_ = true;\r\n if (this.keepaliveTimer) {\r\n clearInterval(this.keepaliveTimer);\r\n this.keepaliveTimer = null;\r\n }\r\n if (this.mySock) {\r\n this.mySock.close();\r\n this.mySock = null;\r\n }\r\n };\r\n WebSocketConnection.prototype.onClosed_ = function () {\r\n if (!this.isClosed_) {\r\n this.log_('WebSocket is closing itself');\r\n this.shutdown_();\r\n // since this is an internal close, trigger the close listener\r\n if (this.onDisconnect) {\r\n this.onDisconnect(this.everConnected_);\r\n this.onDisconnect = null;\r\n }\r\n }\r\n };\r\n /**\r\n * External-facing close handler.\r\n * Close the websocket and kill the connection.\r\n */\r\n WebSocketConnection.prototype.close = function () {\r\n if (!this.isClosed_) {\r\n this.log_('WebSocket is being closed');\r\n this.shutdown_();\r\n }\r\n };\r\n /**\r\n * Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after\r\n * the last activity.\r\n */\r\n WebSocketConnection.prototype.resetKeepAlive = function () {\r\n var _this = this;\r\n clearInterval(this.keepaliveTimer);\r\n this.keepaliveTimer = setInterval(function () {\r\n //If there has been no websocket activity for a while, send a no-op\r\n if (_this.mySock) {\r\n _this.sendString_('0');\r\n }\r\n _this.resetKeepAlive();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }, Math.floor(WEBSOCKET_KEEPALIVE_INTERVAL));\r\n };\r\n /**\r\n * Send a string over the websocket.\r\n *\r\n * @param {string} str String to send.\r\n * @private\r\n */\r\n WebSocketConnection.prototype.sendString_ = function (str) {\r\n // Firefox seems to sometimes throw exceptions (NS_ERROR_UNEXPECTED) from websocket .send()\r\n // calls for some unknown reason. We treat these as an error and disconnect.\r\n // See https://app.asana.com/0/58926111402292/68021340250410\r\n try {\r\n this.mySock.send(str);\r\n }\r\n catch (e) {\r\n this.log_('Exception thrown from WebSocket.send():', e.message || e.data, 'Closing connection.');\r\n setTimeout(this.onClosed_.bind(this), 0);\r\n }\r\n };\r\n /**\r\n * Number of response before we consider the connection \"healthy.\"\r\n * @type {number}\r\n */\r\n WebSocketConnection.responsesRequiredToBeHealthy = 2;\r\n /**\r\n * Time to wait for the connection te become healthy before giving up.\r\n * @type {number}\r\n */\r\n WebSocketConnection.healthyTimeout = 30000;\r\n return WebSocketConnection;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Currently simplistic, this class manages what transport a Connection should use at various stages of its\r\n * lifecycle.\r\n *\r\n * It starts with longpolling in a browser, and httppolling on node. It then upgrades to websockets if\r\n * they are available.\r\n * @constructor\r\n */\r\nvar TransportManager = /** @class */ (function () {\r\n /**\r\n * @param {!RepoInfo} repoInfo Metadata around the namespace we're connecting to\r\n */\r\n function TransportManager(repoInfo) {\r\n this.initTransports_(repoInfo);\r\n }\r\n Object.defineProperty(TransportManager, \"ALL_TRANSPORTS\", {\r\n /**\r\n * @const\r\n * @type {!Array.}\r\n */\r\n get: function () {\r\n return [BrowserPollConnection, WebSocketConnection];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * @param {!RepoInfo} repoInfo\r\n * @private\r\n */\r\n TransportManager.prototype.initTransports_ = function (repoInfo) {\r\n var e_1, _a;\r\n var isWebSocketsAvailable = WebSocketConnection && WebSocketConnection['isAvailable']();\r\n var isSkipPollConnection = isWebSocketsAvailable && !WebSocketConnection.previouslyFailed();\r\n if (repoInfo.webSocketOnly) {\r\n if (!isWebSocketsAvailable) {\r\n warn(\"wss:// URL used, but browser isn't known to support websockets. Trying anyway.\");\r\n }\r\n isSkipPollConnection = true;\r\n }\r\n if (isSkipPollConnection) {\r\n this.transports_ = [WebSocketConnection];\r\n }\r\n else {\r\n var transports = (this.transports_ = []);\r\n try {\r\n for (var _b = __values(TransportManager.ALL_TRANSPORTS), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var transport = _c.value;\r\n if (transport && transport['isAvailable']()) {\r\n transports.push(transport);\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n }\r\n };\r\n /**\r\n * @return {function(new:Transport, !string, !RepoInfo, string=, string=)} The constructor for the\r\n * initial transport to use\r\n */\r\n TransportManager.prototype.initialTransport = function () {\r\n if (this.transports_.length > 0) {\r\n return this.transports_[0];\r\n }\r\n else {\r\n throw new Error('No transports available');\r\n }\r\n };\r\n /**\r\n * @return {?function(new:Transport, function(),function(), string=)} The constructor for the next\r\n * transport, or null\r\n */\r\n TransportManager.prototype.upgradeTransport = function () {\r\n if (this.transports_.length > 1) {\r\n return this.transports_[1];\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n return TransportManager;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Abort upgrade attempt if it takes longer than 60s.\r\nvar UPGRADE_TIMEOUT = 60000;\r\n// For some transports (WebSockets), we need to \"validate\" the transport by exchanging a few requests and responses.\r\n// If we haven't sent enough requests within 5s, we'll start sending noop ping requests.\r\nvar DELAY_BEFORE_SENDING_EXTRA_REQUESTS = 5000;\r\n// If the initial data sent triggers a lot of bandwidth (i.e. it's a large put or a listen for a large amount of data)\r\n// then we may not be able to exchange our ping/pong requests within the healthy timeout. So if we reach the timeout\r\n// but we've sent/received enough bytes, we don't cancel the connection.\r\nvar BYTES_SENT_HEALTHY_OVERRIDE = 10 * 1024;\r\nvar BYTES_RECEIVED_HEALTHY_OVERRIDE = 100 * 1024;\r\nvar MESSAGE_TYPE = 't';\r\nvar MESSAGE_DATA = 'd';\r\nvar CONTROL_SHUTDOWN = 's';\r\nvar CONTROL_RESET = 'r';\r\nvar CONTROL_ERROR = 'e';\r\nvar CONTROL_PONG = 'o';\r\nvar SWITCH_ACK = 'a';\r\nvar END_TRANSMISSION = 'n';\r\nvar PING = 'p';\r\nvar SERVER_HELLO = 'h';\r\n/**\r\n * Creates a new real-time connection to the server using whichever method works\r\n * best in the current browser.\r\n *\r\n * @constructor\r\n */\r\nvar Connection = /** @class */ (function () {\r\n /**\r\n * @param id - an id for this connection\r\n * @param repoInfo_ - the info for the endpoint to connect to\r\n * @param applicationId_ - the Firebase App ID for this project\r\n * @param onMessage_ - the callback to be triggered when a server-push message arrives\r\n * @param onReady_ - the callback to be triggered when this connection is ready to send messages.\r\n * @param onDisconnect_ - the callback to be triggered when a connection was lost\r\n * @param onKill_ - the callback to be triggered when this connection has permanently shut down.\r\n * @param lastSessionId - last session id in persistent connection. is used to clean up old session in real-time server\r\n */\r\n function Connection(id, repoInfo_, applicationId_, onMessage_, onReady_, onDisconnect_, onKill_, lastSessionId) {\r\n this.id = id;\r\n this.repoInfo_ = repoInfo_;\r\n this.applicationId_ = applicationId_;\r\n this.onMessage_ = onMessage_;\r\n this.onReady_ = onReady_;\r\n this.onDisconnect_ = onDisconnect_;\r\n this.onKill_ = onKill_;\r\n this.lastSessionId = lastSessionId;\r\n this.connectionCount = 0;\r\n this.pendingDataMessages = [];\r\n this.state_ = 0 /* CONNECTING */;\r\n this.log_ = logWrapper('c:' + this.id + ':');\r\n this.transportManager_ = new TransportManager(repoInfo_);\r\n this.log_('Connection created');\r\n this.start_();\r\n }\r\n /**\r\n * Starts a connection attempt\r\n * @private\r\n */\r\n Connection.prototype.start_ = function () {\r\n var _this = this;\r\n var conn = this.transportManager_.initialTransport();\r\n this.conn_ = new conn(this.nextTransportId_(), this.repoInfo_, this.applicationId_, undefined, this.lastSessionId);\r\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\r\n // can consider the transport healthy.\r\n this.primaryResponsesRequired_ = conn['responsesRequiredToBeHealthy'] || 0;\r\n var onMessageReceived = this.connReceiver_(this.conn_);\r\n var onConnectionLost = this.disconnReceiver_(this.conn_);\r\n this.tx_ = this.conn_;\r\n this.rx_ = this.conn_;\r\n this.secondaryConn_ = null;\r\n this.isHealthy_ = false;\r\n /*\r\n * Firefox doesn't like when code from one iframe tries to create another iframe by way of the parent frame.\r\n * This can occur in the case of a redirect, i.e. we guessed wrong on what server to connect to and received a reset.\r\n * Somehow, setTimeout seems to make this ok. That doesn't make sense from a security perspective, since you should\r\n * still have the context of your originating frame.\r\n */\r\n setTimeout(function () {\r\n // this.conn_ gets set to null in some of the tests. Check to make sure it still exists before using it\r\n _this.conn_ && _this.conn_.open(onMessageReceived, onConnectionLost);\r\n }, Math.floor(0));\r\n var healthyTimeoutMS = conn['healthyTimeout'] || 0;\r\n if (healthyTimeoutMS > 0) {\r\n this.healthyTimeout_ = setTimeoutNonBlocking(function () {\r\n _this.healthyTimeout_ = null;\r\n if (!_this.isHealthy_) {\r\n if (_this.conn_ &&\r\n _this.conn_.bytesReceived > BYTES_RECEIVED_HEALTHY_OVERRIDE) {\r\n _this.log_('Connection exceeded healthy timeout but has received ' +\r\n _this.conn_.bytesReceived +\r\n ' bytes. Marking connection healthy.');\r\n _this.isHealthy_ = true;\r\n _this.conn_.markConnectionHealthy();\r\n }\r\n else if (_this.conn_ &&\r\n _this.conn_.bytesSent > BYTES_SENT_HEALTHY_OVERRIDE) {\r\n _this.log_('Connection exceeded healthy timeout but has sent ' +\r\n _this.conn_.bytesSent +\r\n ' bytes. Leaving connection alive.');\r\n // NOTE: We don't want to mark it healthy, since we have no guarantee that the bytes have made it to\r\n // the server.\r\n }\r\n else {\r\n _this.log_('Closing unhealthy connection after timeout.');\r\n _this.close();\r\n }\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }, Math.floor(healthyTimeoutMS));\r\n }\r\n };\r\n /**\r\n * @return {!string}\r\n * @private\r\n */\r\n Connection.prototype.nextTransportId_ = function () {\r\n return 'c:' + this.id + ':' + this.connectionCount++;\r\n };\r\n Connection.prototype.disconnReceiver_ = function (conn) {\r\n var _this = this;\r\n return function (everConnected) {\r\n if (conn === _this.conn_) {\r\n _this.onConnectionLost_(everConnected);\r\n }\r\n else if (conn === _this.secondaryConn_) {\r\n _this.log_('Secondary connection lost.');\r\n _this.onSecondaryConnectionLost_();\r\n }\r\n else {\r\n _this.log_('closing an old connection');\r\n }\r\n };\r\n };\r\n Connection.prototype.connReceiver_ = function (conn) {\r\n var _this = this;\r\n return function (message) {\r\n if (_this.state_ !== 2 /* DISCONNECTED */) {\r\n if (conn === _this.rx_) {\r\n _this.onPrimaryMessageReceived_(message);\r\n }\r\n else if (conn === _this.secondaryConn_) {\r\n _this.onSecondaryMessageReceived_(message);\r\n }\r\n else {\r\n _this.log_('message on old connection');\r\n }\r\n }\r\n };\r\n };\r\n /**\r\n *\r\n * @param {Object} dataMsg An arbitrary data message to be sent to the server\r\n */\r\n Connection.prototype.sendRequest = function (dataMsg) {\r\n // wrap in a data message envelope and send it on\r\n var msg = { t: 'd', d: dataMsg };\r\n this.sendData_(msg);\r\n };\r\n Connection.prototype.tryCleanupConnection = function () {\r\n if (this.tx_ === this.secondaryConn_ && this.rx_ === this.secondaryConn_) {\r\n this.log_('cleaning up and promoting a connection: ' + this.secondaryConn_.connId);\r\n this.conn_ = this.secondaryConn_;\r\n this.secondaryConn_ = null;\r\n // the server will shutdown the old connection\r\n }\r\n };\r\n Connection.prototype.onSecondaryControl_ = function (controlData) {\r\n if (MESSAGE_TYPE in controlData) {\r\n var cmd = controlData[MESSAGE_TYPE];\r\n if (cmd === SWITCH_ACK) {\r\n this.upgradeIfSecondaryHealthy_();\r\n }\r\n else if (cmd === CONTROL_RESET) {\r\n // Most likely the session wasn't valid. Abandon the switch attempt\r\n this.log_('Got a reset on secondary, closing it');\r\n this.secondaryConn_.close();\r\n // If we were already using this connection for something, than we need to fully close\r\n if (this.tx_ === this.secondaryConn_ ||\r\n this.rx_ === this.secondaryConn_) {\r\n this.close();\r\n }\r\n }\r\n else if (cmd === CONTROL_PONG) {\r\n this.log_('got pong on secondary.');\r\n this.secondaryResponsesRequired_--;\r\n this.upgradeIfSecondaryHealthy_();\r\n }\r\n }\r\n };\r\n Connection.prototype.onSecondaryMessageReceived_ = function (parsedData) {\r\n var layer = requireKey('t', parsedData);\r\n var data = requireKey('d', parsedData);\r\n if (layer === 'c') {\r\n this.onSecondaryControl_(data);\r\n }\r\n else if (layer === 'd') {\r\n // got a data message, but we're still second connection. Need to buffer it up\r\n this.pendingDataMessages.push(data);\r\n }\r\n else {\r\n throw new Error('Unknown protocol layer: ' + layer);\r\n }\r\n };\r\n Connection.prototype.upgradeIfSecondaryHealthy_ = function () {\r\n if (this.secondaryResponsesRequired_ <= 0) {\r\n this.log_('Secondary connection is healthy.');\r\n this.isHealthy_ = true;\r\n this.secondaryConn_.markConnectionHealthy();\r\n this.proceedWithUpgrade_();\r\n }\r\n else {\r\n // Send a ping to make sure the connection is healthy.\r\n this.log_('sending ping on secondary.');\r\n this.secondaryConn_.send({ t: 'c', d: { t: PING, d: {} } });\r\n }\r\n };\r\n Connection.prototype.proceedWithUpgrade_ = function () {\r\n // tell this connection to consider itself open\r\n this.secondaryConn_.start();\r\n // send ack\r\n this.log_('sending client ack on secondary');\r\n this.secondaryConn_.send({ t: 'c', d: { t: SWITCH_ACK, d: {} } });\r\n // send end packet on primary transport, switch to sending on this one\r\n // can receive on this one, buffer responses until end received on primary transport\r\n this.log_('Ending transmission on primary');\r\n this.conn_.send({ t: 'c', d: { t: END_TRANSMISSION, d: {} } });\r\n this.tx_ = this.secondaryConn_;\r\n this.tryCleanupConnection();\r\n };\r\n Connection.prototype.onPrimaryMessageReceived_ = function (parsedData) {\r\n // Must refer to parsedData properties in quotes, so closure doesn't touch them.\r\n var layer = requireKey('t', parsedData);\r\n var data = requireKey('d', parsedData);\r\n if (layer === 'c') {\r\n this.onControl_(data);\r\n }\r\n else if (layer === 'd') {\r\n this.onDataMessage_(data);\r\n }\r\n };\r\n Connection.prototype.onDataMessage_ = function (message) {\r\n this.onPrimaryResponse_();\r\n // We don't do anything with data messages, just kick them up a level\r\n this.onMessage_(message);\r\n };\r\n Connection.prototype.onPrimaryResponse_ = function () {\r\n if (!this.isHealthy_) {\r\n this.primaryResponsesRequired_--;\r\n if (this.primaryResponsesRequired_ <= 0) {\r\n this.log_('Primary connection is healthy.');\r\n this.isHealthy_ = true;\r\n this.conn_.markConnectionHealthy();\r\n }\r\n }\r\n };\r\n Connection.prototype.onControl_ = function (controlData) {\r\n var cmd = requireKey(MESSAGE_TYPE, controlData);\r\n if (MESSAGE_DATA in controlData) {\r\n var payload = controlData[MESSAGE_DATA];\r\n if (cmd === SERVER_HELLO) {\r\n this.onHandshake_(payload);\r\n }\r\n else if (cmd === END_TRANSMISSION) {\r\n this.log_('recvd end transmission on primary');\r\n this.rx_ = this.secondaryConn_;\r\n for (var i = 0; i < this.pendingDataMessages.length; ++i) {\r\n this.onDataMessage_(this.pendingDataMessages[i]);\r\n }\r\n this.pendingDataMessages = [];\r\n this.tryCleanupConnection();\r\n }\r\n else if (cmd === CONTROL_SHUTDOWN) {\r\n // This was previously the 'onKill' callback passed to the lower-level connection\r\n // payload in this case is the reason for the shutdown. Generally a human-readable error\r\n this.onConnectionShutdown_(payload);\r\n }\r\n else if (cmd === CONTROL_RESET) {\r\n // payload in this case is the host we should contact\r\n this.onReset_(payload);\r\n }\r\n else if (cmd === CONTROL_ERROR) {\r\n error('Server Error: ' + payload);\r\n }\r\n else if (cmd === CONTROL_PONG) {\r\n this.log_('got pong on primary.');\r\n this.onPrimaryResponse_();\r\n this.sendPingOnPrimaryIfNecessary_();\r\n }\r\n else {\r\n error('Unknown control packet command: ' + cmd);\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n * @param {Object} handshake The handshake data returned from the server\r\n * @private\r\n */\r\n Connection.prototype.onHandshake_ = function (handshake) {\r\n var timestamp = handshake.ts;\r\n var version = handshake.v;\r\n var host = handshake.h;\r\n this.sessionId = handshake.s;\r\n this.repoInfo_.updateHost(host);\r\n // if we've already closed the connection, then don't bother trying to progress further\r\n if (this.state_ === 0 /* CONNECTING */) {\r\n this.conn_.start();\r\n this.onConnectionEstablished_(this.conn_, timestamp);\r\n if (PROTOCOL_VERSION !== version) {\r\n warn('Protocol version mismatch detected');\r\n }\r\n // TODO: do we want to upgrade? when? maybe a delay?\r\n this.tryStartUpgrade_();\r\n }\r\n };\r\n Connection.prototype.tryStartUpgrade_ = function () {\r\n var conn = this.transportManager_.upgradeTransport();\r\n if (conn) {\r\n this.startUpgrade_(conn);\r\n }\r\n };\r\n Connection.prototype.startUpgrade_ = function (conn) {\r\n var _this = this;\r\n this.secondaryConn_ = new conn(this.nextTransportId_(), this.repoInfo_, this.applicationId_, this.sessionId);\r\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\r\n // can consider the transport healthy.\r\n this.secondaryResponsesRequired_ =\r\n conn['responsesRequiredToBeHealthy'] || 0;\r\n var onMessage = this.connReceiver_(this.secondaryConn_);\r\n var onDisconnect = this.disconnReceiver_(this.secondaryConn_);\r\n this.secondaryConn_.open(onMessage, onDisconnect);\r\n // If we haven't successfully upgraded after UPGRADE_TIMEOUT, give up and kill the secondary.\r\n setTimeoutNonBlocking(function () {\r\n if (_this.secondaryConn_) {\r\n _this.log_('Timed out trying to upgrade.');\r\n _this.secondaryConn_.close();\r\n }\r\n }, Math.floor(UPGRADE_TIMEOUT));\r\n };\r\n Connection.prototype.onReset_ = function (host) {\r\n this.log_('Reset packet received. New host: ' + host);\r\n this.repoInfo_.updateHost(host);\r\n // TODO: if we're already \"connected\", we need to trigger a disconnect at the next layer up.\r\n // We don't currently support resets after the connection has already been established\r\n if (this.state_ === 1 /* CONNECTED */) {\r\n this.close();\r\n }\r\n else {\r\n // Close whatever connections we have open and start again.\r\n this.closeConnections_();\r\n this.start_();\r\n }\r\n };\r\n Connection.prototype.onConnectionEstablished_ = function (conn, timestamp) {\r\n var _this = this;\r\n this.log_('Realtime connection established.');\r\n this.conn_ = conn;\r\n this.state_ = 1 /* CONNECTED */;\r\n if (this.onReady_) {\r\n this.onReady_(timestamp, this.sessionId);\r\n this.onReady_ = null;\r\n }\r\n // If after 5 seconds we haven't sent enough requests to the server to get the connection healthy,\r\n // send some pings.\r\n if (this.primaryResponsesRequired_ === 0) {\r\n this.log_('Primary connection is healthy.');\r\n this.isHealthy_ = true;\r\n }\r\n else {\r\n setTimeoutNonBlocking(function () {\r\n _this.sendPingOnPrimaryIfNecessary_();\r\n }, Math.floor(DELAY_BEFORE_SENDING_EXTRA_REQUESTS));\r\n }\r\n };\r\n Connection.prototype.sendPingOnPrimaryIfNecessary_ = function () {\r\n // If the connection isn't considered healthy yet, we'll send a noop ping packet request.\r\n if (!this.isHealthy_ && this.state_ === 1 /* CONNECTED */) {\r\n this.log_('sending ping on primary.');\r\n this.sendData_({ t: 'c', d: { t: PING, d: {} } });\r\n }\r\n };\r\n Connection.prototype.onSecondaryConnectionLost_ = function () {\r\n var conn = this.secondaryConn_;\r\n this.secondaryConn_ = null;\r\n if (this.tx_ === conn || this.rx_ === conn) {\r\n // we are relying on this connection already in some capacity. Therefore, a failure is real\r\n this.close();\r\n }\r\n };\r\n /**\r\n *\r\n * @param {boolean} everConnected Whether or not the connection ever reached a server. Used to determine if\r\n * we should flush the host cache\r\n * @private\r\n */\r\n Connection.prototype.onConnectionLost_ = function (everConnected) {\r\n this.conn_ = null;\r\n // NOTE: IF you're seeing a Firefox error for this line, I think it might be because it's getting\r\n // called on window close and RealtimeState.CONNECTING is no longer defined. Just a guess.\r\n if (!everConnected && this.state_ === 0 /* CONNECTING */) {\r\n this.log_('Realtime connection failed.');\r\n // Since we failed to connect at all, clear any cached entry for this namespace in case the machine went away\r\n if (this.repoInfo_.isCacheableHost()) {\r\n PersistentStorage.remove('host:' + this.repoInfo_.host);\r\n // reset the internal host to what we would show the user, i.e. .firebaseio.com\r\n this.repoInfo_.internalHost = this.repoInfo_.host;\r\n }\r\n }\r\n else if (this.state_ === 1 /* CONNECTED */) {\r\n this.log_('Realtime connection lost.');\r\n }\r\n this.close();\r\n };\r\n /**\r\n *\r\n * @param {string} reason\r\n * @private\r\n */\r\n Connection.prototype.onConnectionShutdown_ = function (reason) {\r\n this.log_('Connection shutdown command received. Shutting down...');\r\n if (this.onKill_) {\r\n this.onKill_(reason);\r\n this.onKill_ = null;\r\n }\r\n // We intentionally don't want to fire onDisconnect (kill is a different case),\r\n // so clear the callback.\r\n this.onDisconnect_ = null;\r\n this.close();\r\n };\r\n Connection.prototype.sendData_ = function (data) {\r\n if (this.state_ !== 1 /* CONNECTED */) {\r\n throw 'Connection is not connected';\r\n }\r\n else {\r\n this.tx_.send(data);\r\n }\r\n };\r\n /**\r\n * Cleans up this connection, calling the appropriate callbacks\r\n */\r\n Connection.prototype.close = function () {\r\n if (this.state_ !== 2 /* DISCONNECTED */) {\r\n this.log_('Closing realtime connection.');\r\n this.state_ = 2 /* DISCONNECTED */;\r\n this.closeConnections_();\r\n if (this.onDisconnect_) {\r\n this.onDisconnect_();\r\n this.onDisconnect_ = null;\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n * @private\r\n */\r\n Connection.prototype.closeConnections_ = function () {\r\n this.log_('Shutting down all connections');\r\n if (this.conn_) {\r\n this.conn_.close();\r\n this.conn_ = null;\r\n }\r\n if (this.secondaryConn_) {\r\n this.secondaryConn_.close();\r\n this.secondaryConn_ = null;\r\n }\r\n if (this.healthyTimeout_) {\r\n clearTimeout(this.healthyTimeout_);\r\n this.healthyTimeout_ = null;\r\n }\r\n };\r\n return Connection;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Interface defining the set of actions that can be performed against the Firebase server\r\n * (basically corresponds to our wire protocol).\r\n *\r\n * @interface\r\n */\r\nvar ServerActions = /** @class */ (function () {\r\n function ServerActions() {\r\n }\r\n /**\r\n * @param {string} pathString\r\n * @param {*} data\r\n * @param {function(string, string)=} onComplete\r\n * @param {string=} hash\r\n */\r\n ServerActions.prototype.put = function (pathString, data, onComplete, hash) { };\r\n /**\r\n * @param {string} pathString\r\n * @param {*} data\r\n * @param {function(string, ?string)} onComplete\r\n * @param {string=} hash\r\n */\r\n ServerActions.prototype.merge = function (pathString, data, onComplete, hash) { };\r\n /**\r\n * Refreshes the auth token for the current connection.\r\n * @param {string} token The authentication token\r\n */\r\n ServerActions.prototype.refreshAuthToken = function (token) { };\r\n /**\r\n * @param {string} pathString\r\n * @param {*} data\r\n * @param {function(string, string)=} onComplete\r\n */\r\n ServerActions.prototype.onDisconnectPut = function (pathString, data, onComplete) { };\r\n /**\r\n * @param {string} pathString\r\n * @param {*} data\r\n * @param {function(string, string)=} onComplete\r\n */\r\n ServerActions.prototype.onDisconnectMerge = function (pathString, data, onComplete) { };\r\n /**\r\n * @param {string} pathString\r\n * @param {function(string, string)=} onComplete\r\n */\r\n ServerActions.prototype.onDisconnectCancel = function (pathString, onComplete) { };\r\n /**\r\n * @param {Object.} stats\r\n */\r\n ServerActions.prototype.reportStats = function (stats) { };\r\n return ServerActions;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar RECONNECT_MIN_DELAY = 1000;\r\nvar RECONNECT_MAX_DELAY_DEFAULT = 60 * 5 * 1000; // 5 minutes in milliseconds (Case: 1858)\r\nvar RECONNECT_MAX_DELAY_FOR_ADMINS = 30 * 1000; // 30 seconds for admin clients (likely to be a backend server)\r\nvar RECONNECT_DELAY_MULTIPLIER = 1.3;\r\nvar RECONNECT_DELAY_RESET_TIMEOUT = 30000; // Reset delay back to MIN_DELAY after being connected for 30sec.\r\nvar SERVER_KILL_INTERRUPT_REASON = 'server_kill';\r\n// If auth fails repeatedly, we'll assume something is wrong and log a warning / back off.\r\nvar INVALID_AUTH_TOKEN_THRESHOLD = 3;\r\n/**\r\n * Firebase connection. Abstracts wire protocol and handles reconnecting.\r\n *\r\n * NOTE: All JSON objects sent to the realtime connection must have property names enclosed\r\n * in quotes to make sure the closure compiler does not minify them.\r\n */\r\nvar PersistentConnection = /** @class */ (function (_super) {\r\n __extends(PersistentConnection, _super);\r\n /**\r\n * @implements {ServerActions}\r\n * @param repoInfo_ Data about the namespace we are connecting to\r\n * @param applicationId_ The Firebase App ID for this project\r\n * @param onDataUpdate_ A callback for new data from the server\r\n */\r\n function PersistentConnection(repoInfo_, applicationId_, onDataUpdate_, onConnectStatus_, onServerInfoUpdate_, authTokenProvider_, authOverride_) {\r\n var _this = _super.call(this) || this;\r\n _this.repoInfo_ = repoInfo_;\r\n _this.applicationId_ = applicationId_;\r\n _this.onDataUpdate_ = onDataUpdate_;\r\n _this.onConnectStatus_ = onConnectStatus_;\r\n _this.onServerInfoUpdate_ = onServerInfoUpdate_;\r\n _this.authTokenProvider_ = authTokenProvider_;\r\n _this.authOverride_ = authOverride_;\r\n // Used for diagnostic logging.\r\n _this.id = PersistentConnection.nextPersistentConnectionId_++;\r\n _this.log_ = logWrapper('p:' + _this.id + ':');\r\n _this.interruptReasons_ = {};\r\n /** Map> */\r\n _this.listens = new Map();\r\n _this.outstandingPuts_ = [];\r\n _this.outstandingPutCount_ = 0;\r\n _this.onDisconnectRequestQueue_ = [];\r\n _this.connected_ = false;\r\n _this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n _this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_DEFAULT;\r\n _this.securityDebugCallback_ = null;\r\n _this.lastSessionId = null;\r\n _this.establishConnectionTimer_ = null;\r\n _this.visible_ = false;\r\n // Before we get connected, we keep a queue of pending messages to send.\r\n _this.requestCBHash_ = {};\r\n _this.requestNumber_ = 0;\r\n _this.realtime_ = null;\r\n _this.authToken_ = null;\r\n _this.forceTokenRefresh_ = false;\r\n _this.invalidAuthTokenCount_ = 0;\r\n _this.firstConnection_ = true;\r\n _this.lastConnectionAttemptTime_ = null;\r\n _this.lastConnectionEstablishedTime_ = null;\r\n if (authOverride_ && !isNodeSdk()) {\r\n throw new Error('Auth override specified in options, but not supported on non Node.js platforms');\r\n }\r\n _this.scheduleConnect_(0);\r\n VisibilityMonitor.getInstance().on('visible', _this.onVisible_, _this);\r\n if (repoInfo_.host.indexOf('fblocal') === -1) {\r\n OnlineMonitor.getInstance().on('online', _this.onOnline_, _this);\r\n }\r\n return _this;\r\n }\r\n PersistentConnection.prototype.sendRequest = function (action, body, onResponse) {\r\n var curReqNum = ++this.requestNumber_;\r\n var msg = { r: curReqNum, a: action, b: body };\r\n this.log_(stringify(msg));\r\n assert(this.connected_, \"sendRequest call when we're not connected not allowed.\");\r\n this.realtime_.sendRequest(msg);\r\n if (onResponse) {\r\n this.requestCBHash_[curReqNum] = onResponse;\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.listen = function (query, currentHashFn, tag, onComplete) {\r\n var queryId = query.queryIdentifier();\r\n var pathString = query.path.toString();\r\n this.log_('Listen called for ' + pathString + ' ' + queryId);\r\n if (!this.listens.has(pathString)) {\r\n this.listens.set(pathString, new Map());\r\n }\r\n assert(query.getQueryParams().isDefault() ||\r\n !query.getQueryParams().loadsAllData(), 'listen() called for non-default but complete query');\r\n assert(!this.listens.get(pathString).has(queryId), 'listen() called twice for same path/queryId.');\r\n var listenSpec = {\r\n onComplete: onComplete,\r\n hashFn: currentHashFn,\r\n query: query,\r\n tag: tag\r\n };\r\n this.listens.get(pathString).set(queryId, listenSpec);\r\n if (this.connected_) {\r\n this.sendListen_(listenSpec);\r\n }\r\n };\r\n PersistentConnection.prototype.sendListen_ = function (listenSpec) {\r\n var _this = this;\r\n var query = listenSpec.query;\r\n var pathString = query.path.toString();\r\n var queryId = query.queryIdentifier();\r\n this.log_('Listen on ' + pathString + ' for ' + queryId);\r\n var req = { /*path*/ p: pathString };\r\n var action = 'q';\r\n // Only bother to send query if it's non-default.\r\n if (listenSpec.tag) {\r\n req['q'] = query.queryObject();\r\n req['t'] = listenSpec.tag;\r\n }\r\n req[ /*hash*/'h'] = listenSpec.hashFn();\r\n this.sendRequest(action, req, function (message) {\r\n var payload = message[ /*data*/'d'];\r\n var status = message[ /*status*/'s'];\r\n // print warnings in any case...\r\n PersistentConnection.warnOnListenWarnings_(payload, query);\r\n var currentListenSpec = _this.listens.get(pathString) &&\r\n _this.listens.get(pathString).get(queryId);\r\n // only trigger actions if the listen hasn't been removed and readded\r\n if (currentListenSpec === listenSpec) {\r\n _this.log_('listen response', message);\r\n if (status !== 'ok') {\r\n _this.removeListen_(pathString, queryId);\r\n }\r\n if (listenSpec.onComplete) {\r\n listenSpec.onComplete(status, payload);\r\n }\r\n }\r\n });\r\n };\r\n PersistentConnection.warnOnListenWarnings_ = function (payload, query) {\r\n if (payload && typeof payload === 'object' && contains(payload, 'w')) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var warnings = safeGet(payload, 'w');\r\n if (Array.isArray(warnings) && ~warnings.indexOf('no_index')) {\r\n var indexSpec = '\".indexOn\": \"' + query.getQueryParams().getIndex().toString() + '\"';\r\n var indexPath = query.path.toString();\r\n warn(\"Using an unspecified index. Your data will be downloaded and \" +\r\n (\"filtered on the client. Consider adding \" + indexSpec + \" at \") +\r\n (indexPath + \" to your security rules for better performance.\"));\r\n }\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.refreshAuthToken = function (token) {\r\n this.authToken_ = token;\r\n this.log_('Auth token refreshed');\r\n if (this.authToken_) {\r\n this.tryAuth();\r\n }\r\n else {\r\n //If we're connected we want to let the server know to unauthenticate us. If we're not connected, simply delete\r\n //the credential so we dont become authenticated next time we connect.\r\n if (this.connected_) {\r\n this.sendRequest('unauth', {}, function () { });\r\n }\r\n }\r\n this.reduceReconnectDelayIfAdminCredential_(token);\r\n };\r\n PersistentConnection.prototype.reduceReconnectDelayIfAdminCredential_ = function (credential) {\r\n // NOTE: This isn't intended to be bulletproof (a malicious developer can always just modify the client).\r\n // Additionally, we don't bother resetting the max delay back to the default if auth fails / expires.\r\n var isFirebaseSecret = credential && credential.length === 40;\r\n if (isFirebaseSecret || isAdmin(credential)) {\r\n this.log_('Admin auth credential detected. Reducing max reconnect time.');\r\n this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\r\n }\r\n };\r\n /**\r\n * Attempts to authenticate with the given credentials. If the authentication attempt fails, it's triggered like\r\n * a auth revoked (the connection is closed).\r\n */\r\n PersistentConnection.prototype.tryAuth = function () {\r\n var _this = this;\r\n if (this.connected_ && this.authToken_) {\r\n var token_1 = this.authToken_;\r\n var authMethod = isValidFormat(token_1) ? 'auth' : 'gauth';\r\n var requestData = { cred: token_1 };\r\n if (this.authOverride_ === null) {\r\n requestData['noauth'] = true;\r\n }\r\n else if (typeof this.authOverride_ === 'object') {\r\n requestData['authvar'] = this.authOverride_;\r\n }\r\n this.sendRequest(authMethod, requestData, function (res) {\r\n var status = res[ /*status*/'s'];\r\n var data = res[ /*data*/'d'] || 'error';\r\n if (_this.authToken_ === token_1) {\r\n if (status === 'ok') {\r\n _this.invalidAuthTokenCount_ = 0;\r\n }\r\n else {\r\n // Triggers reconnect and force refresh for auth token\r\n _this.onAuthRevoked_(status, data);\r\n }\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.unlisten = function (query, tag) {\r\n var pathString = query.path.toString();\r\n var queryId = query.queryIdentifier();\r\n this.log_('Unlisten called for ' + pathString + ' ' + queryId);\r\n assert(query.getQueryParams().isDefault() ||\r\n !query.getQueryParams().loadsAllData(), 'unlisten() called for non-default but complete query');\r\n var listen = this.removeListen_(pathString, queryId);\r\n if (listen && this.connected_) {\r\n this.sendUnlisten_(pathString, queryId, query.queryObject(), tag);\r\n }\r\n };\r\n PersistentConnection.prototype.sendUnlisten_ = function (pathString, queryId, queryObj, tag) {\r\n this.log_('Unlisten on ' + pathString + ' for ' + queryId);\r\n var req = { /*path*/ p: pathString };\r\n var action = 'n';\r\n // Only bother sending queryId if it's non-default.\r\n if (tag) {\r\n req['q'] = queryObj;\r\n req['t'] = tag;\r\n }\r\n this.sendRequest(action, req);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.onDisconnectPut = function (pathString, data, onComplete) {\r\n if (this.connected_) {\r\n this.sendOnDisconnect_('o', pathString, data, onComplete);\r\n }\r\n else {\r\n this.onDisconnectRequestQueue_.push({\r\n pathString: pathString,\r\n action: 'o',\r\n data: data,\r\n onComplete: onComplete\r\n });\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.onDisconnectMerge = function (pathString, data, onComplete) {\r\n if (this.connected_) {\r\n this.sendOnDisconnect_('om', pathString, data, onComplete);\r\n }\r\n else {\r\n this.onDisconnectRequestQueue_.push({\r\n pathString: pathString,\r\n action: 'om',\r\n data: data,\r\n onComplete: onComplete\r\n });\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.onDisconnectCancel = function (pathString, onComplete) {\r\n if (this.connected_) {\r\n this.sendOnDisconnect_('oc', pathString, null, onComplete);\r\n }\r\n else {\r\n this.onDisconnectRequestQueue_.push({\r\n pathString: pathString,\r\n action: 'oc',\r\n data: null,\r\n onComplete: onComplete\r\n });\r\n }\r\n };\r\n PersistentConnection.prototype.sendOnDisconnect_ = function (action, pathString, data, onComplete) {\r\n var request = { /*path*/ p: pathString, /*data*/ d: data };\r\n this.log_('onDisconnect ' + action, request);\r\n this.sendRequest(action, request, function (response) {\r\n if (onComplete) {\r\n setTimeout(function () {\r\n onComplete(response[ /*status*/'s'], response[ /* data */'d']);\r\n }, Math.floor(0));\r\n }\r\n });\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.put = function (pathString, data, onComplete, hash) {\r\n this.putInternal('p', pathString, data, onComplete, hash);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.merge = function (pathString, data, onComplete, hash) {\r\n this.putInternal('m', pathString, data, onComplete, hash);\r\n };\r\n PersistentConnection.prototype.putInternal = function (action, pathString, data, onComplete, hash) {\r\n var request = {\r\n /*path*/ p: pathString,\r\n /*data*/ d: data\r\n };\r\n if (hash !== undefined) {\r\n request[ /*hash*/'h'] = hash;\r\n }\r\n // TODO: Only keep track of the most recent put for a given path?\r\n this.outstandingPuts_.push({\r\n action: action,\r\n request: request,\r\n onComplete: onComplete\r\n });\r\n this.outstandingPutCount_++;\r\n var index = this.outstandingPuts_.length - 1;\r\n if (this.connected_) {\r\n this.sendPut_(index);\r\n }\r\n else {\r\n this.log_('Buffering put: ' + pathString);\r\n }\r\n };\r\n PersistentConnection.prototype.sendPut_ = function (index) {\r\n var _this = this;\r\n var action = this.outstandingPuts_[index].action;\r\n var request = this.outstandingPuts_[index].request;\r\n var onComplete = this.outstandingPuts_[index].onComplete;\r\n this.outstandingPuts_[index].queued = this.connected_;\r\n this.sendRequest(action, request, function (message) {\r\n _this.log_(action + ' response', message);\r\n delete _this.outstandingPuts_[index];\r\n _this.outstandingPutCount_--;\r\n // Clean up array occasionally.\r\n if (_this.outstandingPutCount_ === 0) {\r\n _this.outstandingPuts_ = [];\r\n }\r\n if (onComplete) {\r\n onComplete(message[ /*status*/'s'], message[ /* data */'d']);\r\n }\r\n });\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.reportStats = function (stats) {\r\n var _this = this;\r\n // If we're not connected, we just drop the stats.\r\n if (this.connected_) {\r\n var request = { /*counters*/ c: stats };\r\n this.log_('reportStats', request);\r\n this.sendRequest(/*stats*/ 's', request, function (result) {\r\n var status = result[ /*status*/'s'];\r\n if (status !== 'ok') {\r\n var errorReason = result[ /* data */'d'];\r\n _this.log_('reportStats', 'Error sending stats: ' + errorReason);\r\n }\r\n });\r\n }\r\n };\r\n PersistentConnection.prototype.onDataMessage_ = function (message) {\r\n if ('r' in message) {\r\n // this is a response\r\n this.log_('from server: ' + stringify(message));\r\n var reqNum = message['r'];\r\n var onResponse = this.requestCBHash_[reqNum];\r\n if (onResponse) {\r\n delete this.requestCBHash_[reqNum];\r\n onResponse(message[ /*body*/'b']);\r\n }\r\n }\r\n else if ('error' in message) {\r\n throw 'A server-side error has occurred: ' + message['error'];\r\n }\r\n else if ('a' in message) {\r\n // a and b are action and body, respectively\r\n this.onDataPush_(message['a'], message['b']);\r\n }\r\n };\r\n PersistentConnection.prototype.onDataPush_ = function (action, body) {\r\n this.log_('handleServerMessage', action, body);\r\n if (action === 'd') {\r\n this.onDataUpdate_(body[ /*path*/'p'], body[ /*data*/'d'], \r\n /*isMerge*/ false, body['t']);\r\n }\r\n else if (action === 'm') {\r\n this.onDataUpdate_(body[ /*path*/'p'], body[ /*data*/'d'], \r\n /*isMerge=*/ true, body['t']);\r\n }\r\n else if (action === 'c') {\r\n this.onListenRevoked_(body[ /*path*/'p'], body[ /*query*/'q']);\r\n }\r\n else if (action === 'ac') {\r\n this.onAuthRevoked_(body[ /*status code*/'s'], body[ /* explanation */'d']);\r\n }\r\n else if (action === 'sd') {\r\n this.onSecurityDebugPacket_(body);\r\n }\r\n else {\r\n error('Unrecognized action received from server: ' +\r\n stringify(action) +\r\n '\\nAre you using the latest client?');\r\n }\r\n };\r\n PersistentConnection.prototype.onReady_ = function (timestamp, sessionId) {\r\n this.log_('connection ready');\r\n this.connected_ = true;\r\n this.lastConnectionEstablishedTime_ = new Date().getTime();\r\n this.handleTimestamp_(timestamp);\r\n this.lastSessionId = sessionId;\r\n if (this.firstConnection_) {\r\n this.sendConnectStats_();\r\n }\r\n this.restoreState_();\r\n this.firstConnection_ = false;\r\n this.onConnectStatus_(true);\r\n };\r\n PersistentConnection.prototype.scheduleConnect_ = function (timeout) {\r\n var _this = this;\r\n assert(!this.realtime_, \"Scheduling a connect when we're already connected/ing?\");\r\n if (this.establishConnectionTimer_) {\r\n clearTimeout(this.establishConnectionTimer_);\r\n }\r\n // NOTE: Even when timeout is 0, it's important to do a setTimeout to work around an infuriating \"Security Error\" in\r\n // Firefox when trying to write to our long-polling iframe in some scenarios (e.g. Forge or our unit tests).\r\n this.establishConnectionTimer_ = setTimeout(function () {\r\n _this.establishConnectionTimer_ = null;\r\n _this.establishConnection_();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }, Math.floor(timeout));\r\n };\r\n PersistentConnection.prototype.onVisible_ = function (visible) {\r\n // NOTE: Tabbing away and back to a window will defeat our reconnect backoff, but I think that's fine.\r\n if (visible &&\r\n !this.visible_ &&\r\n this.reconnectDelay_ === this.maxReconnectDelay_) {\r\n this.log_('Window became visible. Reducing delay.');\r\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n if (!this.realtime_) {\r\n this.scheduleConnect_(0);\r\n }\r\n }\r\n this.visible_ = visible;\r\n };\r\n PersistentConnection.prototype.onOnline_ = function (online) {\r\n if (online) {\r\n this.log_('Browser went online.');\r\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n if (!this.realtime_) {\r\n this.scheduleConnect_(0);\r\n }\r\n }\r\n else {\r\n this.log_('Browser went offline. Killing connection.');\r\n if (this.realtime_) {\r\n this.realtime_.close();\r\n }\r\n }\r\n };\r\n PersistentConnection.prototype.onRealtimeDisconnect_ = function () {\r\n this.log_('data client disconnected');\r\n this.connected_ = false;\r\n this.realtime_ = null;\r\n // Since we don't know if our sent transactions succeeded or not, we need to cancel them.\r\n this.cancelSentTransactions_();\r\n // Clear out the pending requests.\r\n this.requestCBHash_ = {};\r\n if (this.shouldReconnect_()) {\r\n if (!this.visible_) {\r\n this.log_(\"Window isn't visible. Delaying reconnect.\");\r\n this.reconnectDelay_ = this.maxReconnectDelay_;\r\n this.lastConnectionAttemptTime_ = new Date().getTime();\r\n }\r\n else if (this.lastConnectionEstablishedTime_) {\r\n // If we've been connected long enough, reset reconnect delay to minimum.\r\n var timeSinceLastConnectSucceeded = new Date().getTime() - this.lastConnectionEstablishedTime_;\r\n if (timeSinceLastConnectSucceeded > RECONNECT_DELAY_RESET_TIMEOUT) {\r\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n }\r\n this.lastConnectionEstablishedTime_ = null;\r\n }\r\n var timeSinceLastConnectAttempt = new Date().getTime() - this.lastConnectionAttemptTime_;\r\n var reconnectDelay = Math.max(0, this.reconnectDelay_ - timeSinceLastConnectAttempt);\r\n reconnectDelay = Math.random() * reconnectDelay;\r\n this.log_('Trying to reconnect in ' + reconnectDelay + 'ms');\r\n this.scheduleConnect_(reconnectDelay);\r\n // Adjust reconnect delay for next time.\r\n this.reconnectDelay_ = Math.min(this.maxReconnectDelay_, this.reconnectDelay_ * RECONNECT_DELAY_MULTIPLIER);\r\n }\r\n this.onConnectStatus_(false);\r\n };\r\n PersistentConnection.prototype.establishConnection_ = function () {\r\n var _this = this;\r\n if (this.shouldReconnect_()) {\r\n this.log_('Making a connection attempt');\r\n this.lastConnectionAttemptTime_ = new Date().getTime();\r\n this.lastConnectionEstablishedTime_ = null;\r\n var onDataMessage_1 = this.onDataMessage_.bind(this);\r\n var onReady_1 = this.onReady_.bind(this);\r\n var onDisconnect_1 = this.onRealtimeDisconnect_.bind(this);\r\n var connId_1 = this.id + ':' + PersistentConnection.nextConnectionId_++;\r\n var self_1 = this;\r\n var lastSessionId_1 = this.lastSessionId;\r\n var canceled_1 = false;\r\n var connection_1 = null;\r\n var closeFn_1 = function () {\r\n if (connection_1) {\r\n connection_1.close();\r\n }\r\n else {\r\n canceled_1 = true;\r\n onDisconnect_1();\r\n }\r\n };\r\n var sendRequestFn = function (msg) {\r\n assert(connection_1, \"sendRequest call when we're not connected not allowed.\");\r\n connection_1.sendRequest(msg);\r\n };\r\n this.realtime_ = {\r\n close: closeFn_1,\r\n sendRequest: sendRequestFn\r\n };\r\n var forceRefresh = this.forceTokenRefresh_;\r\n this.forceTokenRefresh_ = false;\r\n // First fetch auth token, and establish connection after fetching the token was successful\r\n this.authTokenProvider_\r\n .getToken(forceRefresh)\r\n .then(function (result) {\r\n if (!canceled_1) {\r\n log('getToken() completed. Creating connection.');\r\n self_1.authToken_ = result && result.accessToken;\r\n connection_1 = new Connection(connId_1, self_1.repoInfo_, self_1.applicationId_, onDataMessage_1, onReady_1, onDisconnect_1, \r\n /* onKill= */ function (reason) {\r\n warn(reason + ' (' + self_1.repoInfo_.toString() + ')');\r\n self_1.interrupt(SERVER_KILL_INTERRUPT_REASON);\r\n }, lastSessionId_1);\r\n }\r\n else {\r\n log('getToken() completed but was canceled');\r\n }\r\n })\r\n .then(null, function (error) {\r\n self_1.log_('Failed to get token: ' + error);\r\n if (!canceled_1) {\r\n if (_this.repoInfo_.nodeAdmin) {\r\n // This may be a critical error for the Admin Node.js SDK, so log a warning.\r\n // But getToken() may also just have temporarily failed, so we still want to\r\n // continue retrying.\r\n warn(error);\r\n }\r\n closeFn_1();\r\n }\r\n });\r\n }\r\n };\r\n PersistentConnection.prototype.interrupt = function (reason) {\r\n log('Interrupting connection for reason: ' + reason);\r\n this.interruptReasons_[reason] = true;\r\n if (this.realtime_) {\r\n this.realtime_.close();\r\n }\r\n else {\r\n if (this.establishConnectionTimer_) {\r\n clearTimeout(this.establishConnectionTimer_);\r\n this.establishConnectionTimer_ = null;\r\n }\r\n if (this.connected_) {\r\n this.onRealtimeDisconnect_();\r\n }\r\n }\r\n };\r\n PersistentConnection.prototype.resume = function (reason) {\r\n log('Resuming connection for reason: ' + reason);\r\n delete this.interruptReasons_[reason];\r\n if (isEmpty(this.interruptReasons_)) {\r\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n if (!this.realtime_) {\r\n this.scheduleConnect_(0);\r\n }\r\n }\r\n };\r\n PersistentConnection.prototype.handleTimestamp_ = function (timestamp) {\r\n var delta = timestamp - new Date().getTime();\r\n this.onServerInfoUpdate_({ serverTimeOffset: delta });\r\n };\r\n PersistentConnection.prototype.cancelSentTransactions_ = function () {\r\n for (var i = 0; i < this.outstandingPuts_.length; i++) {\r\n var put = this.outstandingPuts_[i];\r\n if (put && /*hash*/ 'h' in put.request && put.queued) {\r\n if (put.onComplete) {\r\n put.onComplete('disconnect');\r\n }\r\n delete this.outstandingPuts_[i];\r\n this.outstandingPutCount_--;\r\n }\r\n }\r\n // Clean up array occasionally.\r\n if (this.outstandingPutCount_ === 0) {\r\n this.outstandingPuts_ = [];\r\n }\r\n };\r\n PersistentConnection.prototype.onListenRevoked_ = function (pathString, query) {\r\n // Remove the listen and manufacture a \"permission_denied\" error for the failed listen.\r\n var queryId;\r\n if (!query) {\r\n queryId = 'default';\r\n }\r\n else {\r\n queryId = query.map(function (q) { return ObjectToUniqueKey(q); }).join('$');\r\n }\r\n var listen = this.removeListen_(pathString, queryId);\r\n if (listen && listen.onComplete) {\r\n listen.onComplete('permission_denied');\r\n }\r\n };\r\n PersistentConnection.prototype.removeListen_ = function (pathString, queryId) {\r\n var normalizedPathString = new Path(pathString).toString(); // normalize path.\r\n var listen;\r\n if (this.listens.has(normalizedPathString)) {\r\n var map = this.listens.get(normalizedPathString);\r\n listen = map.get(queryId);\r\n map.delete(queryId);\r\n if (map.size === 0) {\r\n this.listens.delete(normalizedPathString);\r\n }\r\n }\r\n else {\r\n // all listens for this path has already been removed\r\n listen = undefined;\r\n }\r\n return listen;\r\n };\r\n PersistentConnection.prototype.onAuthRevoked_ = function (statusCode, explanation) {\r\n log('Auth token revoked: ' + statusCode + '/' + explanation);\r\n this.authToken_ = null;\r\n this.forceTokenRefresh_ = true;\r\n this.realtime_.close();\r\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\r\n // We'll wait a couple times before logging the warning / increasing the\r\n // retry period since oauth tokens will report as \"invalid\" if they're\r\n // just expired. Plus there may be transient issues that resolve themselves.\r\n this.invalidAuthTokenCount_++;\r\n if (this.invalidAuthTokenCount_ >= INVALID_AUTH_TOKEN_THRESHOLD) {\r\n // Set a long reconnect delay because recovery is unlikely\r\n this.reconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\r\n // Notify the auth token provider that the token is invalid, which will log\r\n // a warning\r\n this.authTokenProvider_.notifyForInvalidToken();\r\n }\r\n }\r\n };\r\n PersistentConnection.prototype.onSecurityDebugPacket_ = function (body) {\r\n if (this.securityDebugCallback_) {\r\n this.securityDebugCallback_(body);\r\n }\r\n else {\r\n if ('msg' in body) {\r\n console.log('FIREBASE: ' + body['msg'].replace('\\n', '\\nFIREBASE: '));\r\n }\r\n }\r\n };\r\n PersistentConnection.prototype.restoreState_ = function () {\r\n var e_1, _a, e_2, _b;\r\n //Re-authenticate ourselves if we have a credential stored.\r\n this.tryAuth();\r\n try {\r\n // Puts depend on having received the corresponding data update from the server before they complete, so we must\r\n // make sure to send listens before puts.\r\n for (var _c = __values(this.listens.values()), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var queries = _d.value;\r\n try {\r\n for (var _e = (e_2 = void 0, __values(queries.values())), _f = _e.next(); !_f.done; _f = _e.next()) {\r\n var listenSpec = _f.value;\r\n this.sendListen_(listenSpec);\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n for (var i = 0; i < this.outstandingPuts_.length; i++) {\r\n if (this.outstandingPuts_[i]) {\r\n this.sendPut_(i);\r\n }\r\n }\r\n while (this.onDisconnectRequestQueue_.length) {\r\n var request = this.onDisconnectRequestQueue_.shift();\r\n this.sendOnDisconnect_(request.action, request.pathString, request.data, request.onComplete);\r\n }\r\n };\r\n /**\r\n * Sends client stats for first connection\r\n */\r\n PersistentConnection.prototype.sendConnectStats_ = function () {\r\n var stats = {};\r\n var clientName = 'js';\r\n if (isNodeSdk()) {\r\n if (this.repoInfo_.nodeAdmin) {\r\n clientName = 'admin_node';\r\n }\r\n else {\r\n clientName = 'node';\r\n }\r\n }\r\n stats['sdk.' + clientName + '.' + SDK_VERSION.replace(/\\./g, '-')] = 1;\r\n if (isMobileCordova()) {\r\n stats['framework.cordova'] = 1;\r\n }\r\n else if (isReactNative()) {\r\n stats['framework.reactnative'] = 1;\r\n }\r\n this.reportStats(stats);\r\n };\r\n PersistentConnection.prototype.shouldReconnect_ = function () {\r\n var online = OnlineMonitor.getInstance().currentlyOnline();\r\n return isEmpty(this.interruptReasons_) && online;\r\n };\r\n PersistentConnection.nextPersistentConnectionId_ = 0;\r\n /**\r\n * Counter for number of connections created. Mainly used for tagging in the logs\r\n */\r\n PersistentConnection.nextConnectionId_ = 0;\r\n return PersistentConnection;\r\n}(ServerActions));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An implementation of ServerActions that communicates with the server via REST requests.\r\n * This is mostly useful for compatibility with crawlers, where we don't want to spin up a full\r\n * persistent connection (using WebSockets or long-polling)\r\n */\r\nvar ReadonlyRestClient = /** @class */ (function (_super) {\r\n __extends(ReadonlyRestClient, _super);\r\n /**\r\n * @param {!RepoInfo} repoInfo_ Data about the namespace we are connecting to\r\n * @param {function(string, *, boolean, ?number)} onDataUpdate_ A callback for new data from the server\r\n * @param {AuthTokenProvider} authTokenProvider_\r\n * @implements {ServerActions}\r\n */\r\n function ReadonlyRestClient(repoInfo_, onDataUpdate_, authTokenProvider_) {\r\n var _this = _super.call(this) || this;\r\n _this.repoInfo_ = repoInfo_;\r\n _this.onDataUpdate_ = onDataUpdate_;\r\n _this.authTokenProvider_ = authTokenProvider_;\r\n /** @private {function(...[*])} */\r\n _this.log_ = logWrapper('p:rest:');\r\n /**\r\n * We don't actually need to track listens, except to prevent us calling an onComplete for a listen\r\n * that's been removed. :-/\r\n *\r\n * @private {!Object.}\r\n */\r\n _this.listens_ = {};\r\n return _this;\r\n }\r\n ReadonlyRestClient.prototype.reportStats = function (stats) {\r\n throw new Error('Method not implemented.');\r\n };\r\n /**\r\n * @param {!Query} query\r\n * @param {?number=} tag\r\n * @return {string}\r\n * @private\r\n */\r\n ReadonlyRestClient.getListenId_ = function (query, tag) {\r\n if (tag !== undefined) {\r\n return 'tag$' + tag;\r\n }\r\n else {\r\n assert(query.getQueryParams().isDefault(), \"should have a tag if it's not a default query.\");\r\n return query.path.toString();\r\n }\r\n };\r\n /** @inheritDoc */\r\n ReadonlyRestClient.prototype.listen = function (query, currentHashFn, tag, onComplete) {\r\n var _this = this;\r\n var pathString = query.path.toString();\r\n this.log_('Listen called for ' + pathString + ' ' + query.queryIdentifier());\r\n // Mark this listener so we can tell if it's removed.\r\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\r\n var thisListen = {};\r\n this.listens_[listenId] = thisListen;\r\n var queryStringParameters = query\r\n .getQueryParams()\r\n .toRestQueryStringParameters();\r\n this.restRequest_(pathString + '.json', queryStringParameters, function (error, result) {\r\n var data = result;\r\n if (error === 404) {\r\n data = null;\r\n error = null;\r\n }\r\n if (error === null) {\r\n _this.onDataUpdate_(pathString, data, /*isMerge=*/ false, tag);\r\n }\r\n if (safeGet(_this.listens_, listenId) === thisListen) {\r\n var status_1;\r\n if (!error) {\r\n status_1 = 'ok';\r\n }\r\n else if (error === 401) {\r\n status_1 = 'permission_denied';\r\n }\r\n else {\r\n status_1 = 'rest_error:' + error;\r\n }\r\n onComplete(status_1, null);\r\n }\r\n });\r\n };\r\n /** @inheritDoc */\r\n ReadonlyRestClient.prototype.unlisten = function (query, tag) {\r\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\r\n delete this.listens_[listenId];\r\n };\r\n /** @inheritDoc */\r\n ReadonlyRestClient.prototype.refreshAuthToken = function (token) {\r\n // no-op since we just always call getToken.\r\n };\r\n /**\r\n * Performs a REST request to the given path, with the provided query string parameters,\r\n * and any auth credentials we have.\r\n *\r\n * @param {!string} pathString\r\n * @param {!Object.} queryStringParameters\r\n * @param {?function(?number, *=)} callback\r\n * @private\r\n */\r\n ReadonlyRestClient.prototype.restRequest_ = function (pathString, queryStringParameters, callback) {\r\n var _this = this;\r\n if (queryStringParameters === void 0) { queryStringParameters = {}; }\r\n queryStringParameters['format'] = 'export';\r\n this.authTokenProvider_\r\n .getToken(/*forceRefresh=*/ false)\r\n .then(function (authTokenData) {\r\n var authToken = authTokenData && authTokenData.accessToken;\r\n if (authToken) {\r\n queryStringParameters['auth'] = authToken;\r\n }\r\n var url = (_this.repoInfo_.secure ? 'https://' : 'http://') +\r\n _this.repoInfo_.host +\r\n pathString +\r\n '?' +\r\n 'ns=' +\r\n _this.repoInfo_.namespace +\r\n querystring(queryStringParameters);\r\n _this.log_('Sending REST request for ' + url);\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = function () {\r\n if (callback && xhr.readyState === 4) {\r\n _this.log_('REST Response for ' + url + ' received. status:', xhr.status, 'response:', xhr.responseText);\r\n var res = null;\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n try {\r\n res = jsonEval(xhr.responseText);\r\n }\r\n catch (e) {\r\n warn('Failed to parse JSON response for ' +\r\n url +\r\n ': ' +\r\n xhr.responseText);\r\n }\r\n callback(null, res);\r\n }\r\n else {\r\n // 401 and 404 are expected.\r\n if (xhr.status !== 401 && xhr.status !== 404) {\r\n warn('Got unsuccessful REST response for ' +\r\n url +\r\n ' Status: ' +\r\n xhr.status);\r\n }\r\n callback(xhr.status);\r\n }\r\n callback = null;\r\n }\r\n };\r\n xhr.open('GET', url, /*asynchronous=*/ true);\r\n xhr.send();\r\n });\r\n };\r\n return ReadonlyRestClient;\r\n}(ServerActions));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar INTERRUPT_REASON = 'repo_interrupt';\r\n/**\r\n * A connection to a single data repository.\r\n */\r\nvar Repo = /** @class */ (function () {\r\n function Repo(repoInfo_, forceRestClient_, app, authTokenProvider_) {\r\n this.repoInfo_ = repoInfo_;\r\n this.forceRestClient_ = forceRestClient_;\r\n this.app = app;\r\n this.authTokenProvider_ = authTokenProvider_;\r\n this.dataUpdateCount = 0;\r\n this.statsListener_ = null;\r\n this.eventQueue_ = new EventQueue();\r\n this.nextWriteId_ = 1;\r\n this.interceptServerDataCallback_ = null;\r\n /** A list of data pieces and paths to be set when this client disconnects. */\r\n this.onDisconnect_ = new SparseSnapshotTree();\r\n // TODO: This should be @private but it's used by test_access.js and internal.js\r\n this.persistentConnection_ = null;\r\n // This key is intentionally not updated if RepoInfo is later changed or replaced\r\n this.key = this.repoInfo_.toURLString();\r\n }\r\n Repo.prototype.start = function () {\r\n var _this = this;\r\n this.stats_ = StatsManager.getCollection(this.repoInfo_);\r\n if (this.forceRestClient_ || beingCrawled()) {\r\n this.server_ = new ReadonlyRestClient(this.repoInfo_, this.onDataUpdate_.bind(this), this.authTokenProvider_);\r\n // Minor hack: Fire onConnect immediately, since there's no actual connection.\r\n setTimeout(this.onConnectStatus_.bind(this, true), 0);\r\n }\r\n else {\r\n var authOverride = this.app.options['databaseAuthVariableOverride'];\r\n // Validate authOverride\r\n if (typeof authOverride !== 'undefined' && authOverride !== null) {\r\n if (typeof authOverride !== 'object') {\r\n throw new Error('Only objects are supported for option databaseAuthVariableOverride');\r\n }\r\n try {\r\n stringify(authOverride);\r\n }\r\n catch (e) {\r\n throw new Error('Invalid authOverride provided: ' + e);\r\n }\r\n }\r\n this.persistentConnection_ = new PersistentConnection(this.repoInfo_, this.app.options.appId, this.onDataUpdate_.bind(this), this.onConnectStatus_.bind(this), this.onServerInfoUpdate_.bind(this), this.authTokenProvider_, authOverride);\r\n this.server_ = this.persistentConnection_;\r\n }\r\n this.authTokenProvider_.addTokenChangeListener(function (token) {\r\n _this.server_.refreshAuthToken(token);\r\n });\r\n // In the case of multiple Repos for the same repoInfo (i.e. there are multiple Firebase.Contexts being used),\r\n // we only want to create one StatsReporter. As such, we'll report stats over the first Repo created.\r\n this.statsReporter_ = StatsManager.getOrCreateReporter(this.repoInfo_, function () { return new StatsReporter(_this.stats_, _this.server_); });\r\n this.transactionsInit_();\r\n // Used for .info.\r\n this.infoData_ = new SnapshotHolder();\r\n this.infoSyncTree_ = new SyncTree({\r\n startListening: function (query, tag, currentHashFn, onComplete) {\r\n var infoEvents = [];\r\n var node = _this.infoData_.getNode(query.path);\r\n // This is possibly a hack, but we have different semantics for .info endpoints. We don't raise null events\r\n // on initial data...\r\n if (!node.isEmpty()) {\r\n infoEvents = _this.infoSyncTree_.applyServerOverwrite(query.path, node);\r\n setTimeout(function () {\r\n onComplete('ok');\r\n }, 0);\r\n }\r\n return infoEvents;\r\n },\r\n stopListening: function () { }\r\n });\r\n this.updateInfo_('connected', false);\r\n this.serverSyncTree_ = new SyncTree({\r\n startListening: function (query, tag, currentHashFn, onComplete) {\r\n _this.server_.listen(query, currentHashFn, tag, function (status, data) {\r\n var events = onComplete(status, data);\r\n _this.eventQueue_.raiseEventsForChangedPath(query.path, events);\r\n });\r\n // No synchronous events for network-backed sync trees\r\n return [];\r\n },\r\n stopListening: function (query, tag) {\r\n _this.server_.unlisten(query, tag);\r\n }\r\n });\r\n };\r\n /**\r\n * @return The URL corresponding to the root of this Firebase.\r\n */\r\n Repo.prototype.toString = function () {\r\n return ((this.repoInfo_.secure ? 'https://' : 'http://') + this.repoInfo_.host);\r\n };\r\n /**\r\n * @return The namespace represented by the repo.\r\n */\r\n Repo.prototype.name = function () {\r\n return this.repoInfo_.namespace;\r\n };\r\n /**\r\n * @return The time in milliseconds, taking the server offset into account if we have one.\r\n */\r\n Repo.prototype.serverTime = function () {\r\n var offsetNode = this.infoData_.getNode(new Path('.info/serverTimeOffset'));\r\n var offset = offsetNode.val() || 0;\r\n return new Date().getTime() + offset;\r\n };\r\n /**\r\n * Generate ServerValues using some variables from the repo object.\r\n */\r\n Repo.prototype.generateServerValues = function () {\r\n return generateWithValues({\r\n timestamp: this.serverTime()\r\n });\r\n };\r\n /**\r\n * Called by realtime when we get new messages from the server.\r\n */\r\n Repo.prototype.onDataUpdate_ = function (pathString, data, isMerge, tag) {\r\n // For testing.\r\n this.dataUpdateCount++;\r\n var path = new Path(pathString);\r\n data = this.interceptServerDataCallback_\r\n ? this.interceptServerDataCallback_(pathString, data)\r\n : data;\r\n var events = [];\r\n if (tag) {\r\n if (isMerge) {\r\n var taggedChildren = map(data, function (raw) { return nodeFromJSON$1(raw); });\r\n events = this.serverSyncTree_.applyTaggedQueryMerge(path, taggedChildren, tag);\r\n }\r\n else {\r\n var taggedSnap = nodeFromJSON$1(data);\r\n events = this.serverSyncTree_.applyTaggedQueryOverwrite(path, taggedSnap, tag);\r\n }\r\n }\r\n else if (isMerge) {\r\n var changedChildren = map(data, function (raw) { return nodeFromJSON$1(raw); });\r\n events = this.serverSyncTree_.applyServerMerge(path, changedChildren);\r\n }\r\n else {\r\n var snap = nodeFromJSON$1(data);\r\n events = this.serverSyncTree_.applyServerOverwrite(path, snap);\r\n }\r\n var affectedPath = path;\r\n if (events.length > 0) {\r\n // Since we have a listener outstanding for each transaction, receiving any events\r\n // is a proxy for some change having occurred.\r\n affectedPath = this.rerunTransactions_(path);\r\n }\r\n this.eventQueue_.raiseEventsForChangedPath(affectedPath, events);\r\n };\r\n // TODO: This should be @private but it's used by test_access.js and internal.js\r\n Repo.prototype.interceptServerData_ = function (callback) {\r\n this.interceptServerDataCallback_ = callback;\r\n };\r\n Repo.prototype.onConnectStatus_ = function (connectStatus) {\r\n this.updateInfo_('connected', connectStatus);\r\n if (connectStatus === false) {\r\n this.runOnDisconnectEvents_();\r\n }\r\n };\r\n Repo.prototype.onServerInfoUpdate_ = function (updates) {\r\n var _this = this;\r\n each(updates, function (key, value) {\r\n _this.updateInfo_(key, value);\r\n });\r\n };\r\n Repo.prototype.updateInfo_ = function (pathString, value) {\r\n var path = new Path('/.info/' + pathString);\r\n var newNode = nodeFromJSON$1(value);\r\n this.infoData_.updateSnapshot(path, newNode);\r\n var events = this.infoSyncTree_.applyServerOverwrite(path, newNode);\r\n this.eventQueue_.raiseEventsForChangedPath(path, events);\r\n };\r\n Repo.prototype.getNextWriteId_ = function () {\r\n return this.nextWriteId_++;\r\n };\r\n Repo.prototype.setWithPriority = function (path, newVal, newPriority, onComplete) {\r\n var _this = this;\r\n this.log_('set', {\r\n path: path.toString(),\r\n value: newVal,\r\n priority: newPriority\r\n });\r\n // TODO: Optimize this behavior to either (a) store flag to skip resolving where possible and / or\r\n // (b) store unresolved paths on JSON parse\r\n var serverValues = this.generateServerValues();\r\n var newNodeUnresolved = nodeFromJSON$1(newVal, newPriority);\r\n var existing = this.serverSyncTree_.calcCompleteEventCache(path);\r\n var newNode = resolveDeferredValueSnapshot(newNodeUnresolved, existing, serverValues);\r\n var writeId = this.getNextWriteId_();\r\n var events = this.serverSyncTree_.applyUserOverwrite(path, newNode, writeId, true);\r\n this.eventQueue_.queueEvents(events);\r\n this.server_.put(path.toString(), newNodeUnresolved.val(/*export=*/ true), function (status, errorReason) {\r\n var success = status === 'ok';\r\n if (!success) {\r\n warn('set at ' + path + ' failed: ' + status);\r\n }\r\n var clearEvents = _this.serverSyncTree_.ackUserWrite(writeId, !success);\r\n _this.eventQueue_.raiseEventsForChangedPath(path, clearEvents);\r\n _this.callOnCompleteCallback(onComplete, status, errorReason);\r\n });\r\n var affectedPath = this.abortTransactions_(path);\r\n this.rerunTransactions_(affectedPath);\r\n // We queued the events above, so just flush the queue here\r\n this.eventQueue_.raiseEventsForChangedPath(affectedPath, []);\r\n };\r\n Repo.prototype.update = function (path, childrenToMerge, onComplete) {\r\n var _this = this;\r\n this.log_('update', { path: path.toString(), value: childrenToMerge });\r\n // Start with our existing data and merge each child into it.\r\n var empty = true;\r\n var serverValues = this.generateServerValues();\r\n var changedChildren = {};\r\n each(childrenToMerge, function (changedKey, changedValue) {\r\n empty = false;\r\n changedChildren[changedKey] = resolveDeferredValueTree(path.child(changedKey), nodeFromJSON$1(changedValue), _this.serverSyncTree_, serverValues);\r\n });\r\n if (!empty) {\r\n var writeId_1 = this.getNextWriteId_();\r\n var events = this.serverSyncTree_.applyUserMerge(path, changedChildren, writeId_1);\r\n this.eventQueue_.queueEvents(events);\r\n this.server_.merge(path.toString(), childrenToMerge, function (status, errorReason) {\r\n var success = status === 'ok';\r\n if (!success) {\r\n warn('update at ' + path + ' failed: ' + status);\r\n }\r\n var clearEvents = _this.serverSyncTree_.ackUserWrite(writeId_1, !success);\r\n var affectedPath = clearEvents.length > 0 ? _this.rerunTransactions_(path) : path;\r\n _this.eventQueue_.raiseEventsForChangedPath(affectedPath, clearEvents);\r\n _this.callOnCompleteCallback(onComplete, status, errorReason);\r\n });\r\n each(childrenToMerge, function (changedPath) {\r\n var affectedPath = _this.abortTransactions_(path.child(changedPath));\r\n _this.rerunTransactions_(affectedPath);\r\n });\r\n // We queued the events above, so just flush the queue here\r\n this.eventQueue_.raiseEventsForChangedPath(path, []);\r\n }\r\n else {\r\n log(\"update() called with empty data. Don't do anything.\");\r\n this.callOnCompleteCallback(onComplete, 'ok');\r\n }\r\n };\r\n /**\r\n * Applies all of the changes stored up in the onDisconnect_ tree.\r\n */\r\n Repo.prototype.runOnDisconnectEvents_ = function () {\r\n var _this = this;\r\n this.log_('onDisconnectEvents');\r\n var serverValues = this.generateServerValues();\r\n var resolvedOnDisconnectTree = new SparseSnapshotTree();\r\n this.onDisconnect_.forEachTree(Path.Empty, function (path, node) {\r\n var resolved = resolveDeferredValueTree(path, node, _this.serverSyncTree_, serverValues);\r\n resolvedOnDisconnectTree.remember(path, resolved);\r\n });\r\n var events = [];\r\n resolvedOnDisconnectTree.forEachTree(Path.Empty, function (path, snap) {\r\n events = events.concat(_this.serverSyncTree_.applyServerOverwrite(path, snap));\r\n var affectedPath = _this.abortTransactions_(path);\r\n _this.rerunTransactions_(affectedPath);\r\n });\r\n this.onDisconnect_ = new SparseSnapshotTree();\r\n this.eventQueue_.raiseEventsForChangedPath(Path.Empty, events);\r\n };\r\n Repo.prototype.onDisconnectCancel = function (path, onComplete) {\r\n var _this = this;\r\n this.server_.onDisconnectCancel(path.toString(), function (status, errorReason) {\r\n if (status === 'ok') {\r\n _this.onDisconnect_.forget(path);\r\n }\r\n _this.callOnCompleteCallback(onComplete, status, errorReason);\r\n });\r\n };\r\n Repo.prototype.onDisconnectSet = function (path, value, onComplete) {\r\n var _this = this;\r\n var newNode = nodeFromJSON$1(value);\r\n this.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), function (status, errorReason) {\r\n if (status === 'ok') {\r\n _this.onDisconnect_.remember(path, newNode);\r\n }\r\n _this.callOnCompleteCallback(onComplete, status, errorReason);\r\n });\r\n };\r\n Repo.prototype.onDisconnectSetWithPriority = function (path, value, priority, onComplete) {\r\n var _this = this;\r\n var newNode = nodeFromJSON$1(value, priority);\r\n this.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), function (status, errorReason) {\r\n if (status === 'ok') {\r\n _this.onDisconnect_.remember(path, newNode);\r\n }\r\n _this.callOnCompleteCallback(onComplete, status, errorReason);\r\n });\r\n };\r\n Repo.prototype.onDisconnectUpdate = function (path, childrenToMerge, onComplete) {\r\n var _this = this;\r\n if (isEmpty(childrenToMerge)) {\r\n log(\"onDisconnect().update() called with empty data. Don't do anything.\");\r\n this.callOnCompleteCallback(onComplete, 'ok');\r\n return;\r\n }\r\n this.server_.onDisconnectMerge(path.toString(), childrenToMerge, function (status, errorReason) {\r\n if (status === 'ok') {\r\n each(childrenToMerge, function (childName, childNode) {\r\n var newChildNode = nodeFromJSON$1(childNode);\r\n _this.onDisconnect_.remember(path.child(childName), newChildNode);\r\n });\r\n }\r\n _this.callOnCompleteCallback(onComplete, status, errorReason);\r\n });\r\n };\r\n Repo.prototype.addEventCallbackForQuery = function (query, eventRegistration) {\r\n var events;\r\n if (query.path.getFront() === '.info') {\r\n events = this.infoSyncTree_.addEventRegistration(query, eventRegistration);\r\n }\r\n else {\r\n events = this.serverSyncTree_.addEventRegistration(query, eventRegistration);\r\n }\r\n this.eventQueue_.raiseEventsAtPath(query.path, events);\r\n };\r\n Repo.prototype.removeEventCallbackForQuery = function (query, eventRegistration) {\r\n // These are guaranteed not to raise events, since we're not passing in a cancelError. However, we can future-proof\r\n // a little bit by handling the return values anyways.\r\n var events;\r\n if (query.path.getFront() === '.info') {\r\n events = this.infoSyncTree_.removeEventRegistration(query, eventRegistration);\r\n }\r\n else {\r\n events = this.serverSyncTree_.removeEventRegistration(query, eventRegistration);\r\n }\r\n this.eventQueue_.raiseEventsAtPath(query.path, events);\r\n };\r\n Repo.prototype.interrupt = function () {\r\n if (this.persistentConnection_) {\r\n this.persistentConnection_.interrupt(INTERRUPT_REASON);\r\n }\r\n };\r\n Repo.prototype.resume = function () {\r\n if (this.persistentConnection_) {\r\n this.persistentConnection_.resume(INTERRUPT_REASON);\r\n }\r\n };\r\n Repo.prototype.stats = function (showDelta) {\r\n if (showDelta === void 0) { showDelta = false; }\r\n if (typeof console === 'undefined') {\r\n return;\r\n }\r\n var stats;\r\n if (showDelta) {\r\n if (!this.statsListener_) {\r\n this.statsListener_ = new StatsListener(this.stats_);\r\n }\r\n stats = this.statsListener_.get();\r\n }\r\n else {\r\n stats = this.stats_.get();\r\n }\r\n var longestName = Object.keys(stats).reduce(function (previousValue, currentValue) {\r\n return Math.max(currentValue.length, previousValue);\r\n }, 0);\r\n each(stats, function (stat, value) {\r\n var paddedStat = stat;\r\n // pad stat names to be the same length (plus 2 extra spaces).\r\n for (var i = stat.length; i < longestName + 2; i++) {\r\n paddedStat += ' ';\r\n }\r\n console.log(paddedStat + value);\r\n });\r\n };\r\n Repo.prototype.statsIncrementCounter = function (metric) {\r\n this.stats_.incrementCounter(metric);\r\n this.statsReporter_.includeStat(metric);\r\n };\r\n Repo.prototype.log_ = function () {\r\n var varArgs = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n varArgs[_i] = arguments[_i];\r\n }\r\n var prefix = '';\r\n if (this.persistentConnection_) {\r\n prefix = this.persistentConnection_.id + ':';\r\n }\r\n log.apply(void 0, __spread([prefix], varArgs));\r\n };\r\n Repo.prototype.callOnCompleteCallback = function (callback, status, errorReason) {\r\n if (callback) {\r\n exceptionGuard(function () {\r\n if (status === 'ok') {\r\n callback(null);\r\n }\r\n else {\r\n var code = (status || 'error').toUpperCase();\r\n var message = code;\r\n if (errorReason) {\r\n message += ': ' + errorReason;\r\n }\r\n var error = new Error(message);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error.code = code;\r\n callback(error);\r\n }\r\n });\r\n }\r\n };\r\n Object.defineProperty(Repo.prototype, \"database\", {\r\n get: function () {\r\n return this.__database || (this.__database = new Database(this));\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return Repo;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Filters nodes by range and uses an IndexFilter to track any changes after filtering the node\r\n *\r\n * @constructor\r\n * @implements {NodeFilter}\r\n */\r\nvar RangedFilter = /** @class */ (function () {\r\n /**\r\n * @param {!QueryParams} params\r\n */\r\n function RangedFilter(params) {\r\n this.indexedFilter_ = new IndexedFilter(params.getIndex());\r\n this.index_ = params.getIndex();\r\n this.startPost_ = RangedFilter.getStartPost_(params);\r\n this.endPost_ = RangedFilter.getEndPost_(params);\r\n }\r\n /**\r\n * @return {!NamedNode}\r\n */\r\n RangedFilter.prototype.getStartPost = function () {\r\n return this.startPost_;\r\n };\r\n /**\r\n * @return {!NamedNode}\r\n */\r\n RangedFilter.prototype.getEndPost = function () {\r\n return this.endPost_;\r\n };\r\n /**\r\n * @param {!NamedNode} node\r\n * @return {boolean}\r\n */\r\n RangedFilter.prototype.matches = function (node) {\r\n return (this.index_.compare(this.getStartPost(), node) <= 0 &&\r\n this.index_.compare(node, this.getEndPost()) <= 0);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n RangedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\r\n if (!this.matches(new NamedNode(key, newChild))) {\r\n newChild = ChildrenNode.EMPTY_NODE;\r\n }\r\n return this.indexedFilter_.updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n RangedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\r\n if (newSnap.isLeafNode()) {\r\n // Make sure we have a children node with the correct index, not a leaf node;\r\n newSnap = ChildrenNode.EMPTY_NODE;\r\n }\r\n var filtered = newSnap.withIndex(this.index_);\r\n // Don't support priorities on queries\r\n filtered = filtered.updatePriority(ChildrenNode.EMPTY_NODE);\r\n var self = this;\r\n newSnap.forEachChild(PRIORITY_INDEX, function (key, childNode) {\r\n if (!self.matches(new NamedNode(key, childNode))) {\r\n filtered = filtered.updateImmediateChild(key, ChildrenNode.EMPTY_NODE);\r\n }\r\n });\r\n return this.indexedFilter_.updateFullNode(oldSnap, filtered, optChangeAccumulator);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n RangedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\r\n // Don't support priorities on queries\r\n return oldSnap;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n RangedFilter.prototype.filtersNodes = function () {\r\n return true;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n RangedFilter.prototype.getIndexedFilter = function () {\r\n return this.indexedFilter_;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n RangedFilter.prototype.getIndex = function () {\r\n return this.index_;\r\n };\r\n /**\r\n * @param {!QueryParams} params\r\n * @return {!NamedNode}\r\n * @private\r\n */\r\n RangedFilter.getStartPost_ = function (params) {\r\n if (params.hasStart()) {\r\n var startName = params.getIndexStartName();\r\n return params.getIndex().makePost(params.getIndexStartValue(), startName);\r\n }\r\n else {\r\n return params.getIndex().minPost();\r\n }\r\n };\r\n /**\r\n * @param {!QueryParams} params\r\n * @return {!NamedNode}\r\n * @private\r\n */\r\n RangedFilter.getEndPost_ = function (params) {\r\n if (params.hasEnd()) {\r\n var endName = params.getIndexEndName();\r\n return params.getIndex().makePost(params.getIndexEndValue(), endName);\r\n }\r\n else {\r\n return params.getIndex().maxPost();\r\n }\r\n };\r\n return RangedFilter;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Applies a limit and a range to a node and uses RangedFilter to do the heavy lifting where possible\r\n *\r\n * @constructor\r\n * @implements {NodeFilter}\r\n */\r\nvar LimitedFilter = /** @class */ (function () {\r\n /**\r\n * @param {!QueryParams} params\r\n */\r\n function LimitedFilter(params) {\r\n this.rangedFilter_ = new RangedFilter(params);\r\n this.index_ = params.getIndex();\r\n this.limit_ = params.getLimit();\r\n this.reverse_ = !params.isViewFromLeft();\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n LimitedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\r\n if (!this.rangedFilter_.matches(new NamedNode(key, newChild))) {\r\n newChild = ChildrenNode.EMPTY_NODE;\r\n }\r\n if (snap.getImmediateChild(key).equals(newChild)) {\r\n // No change\r\n return snap;\r\n }\r\n else if (snap.numChildren() < this.limit_) {\r\n return this.rangedFilter_\r\n .getIndexedFilter()\r\n .updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\r\n }\r\n else {\r\n return this.fullLimitUpdateChild_(snap, key, newChild, source, optChangeAccumulator);\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n LimitedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\r\n var filtered;\r\n if (newSnap.isLeafNode() || newSnap.isEmpty()) {\r\n // Make sure we have a children node with the correct index, not a leaf node;\r\n filtered = ChildrenNode.EMPTY_NODE.withIndex(this.index_);\r\n }\r\n else {\r\n if (this.limit_ * 2 < newSnap.numChildren() &&\r\n newSnap.isIndexed(this.index_)) {\r\n // Easier to build up a snapshot, since what we're given has more than twice the elements we want\r\n filtered = ChildrenNode.EMPTY_NODE.withIndex(this.index_);\r\n // anchor to the startPost, endPost, or last element as appropriate\r\n var iterator = void 0;\r\n if (this.reverse_) {\r\n iterator = newSnap.getReverseIteratorFrom(this.rangedFilter_.getEndPost(), this.index_);\r\n }\r\n else {\r\n iterator = newSnap.getIteratorFrom(this.rangedFilter_.getStartPost(), this.index_);\r\n }\r\n var count = 0;\r\n while (iterator.hasNext() && count < this.limit_) {\r\n var next = iterator.getNext();\r\n var inRange = void 0;\r\n if (this.reverse_) {\r\n inRange =\r\n this.index_.compare(this.rangedFilter_.getStartPost(), next) <= 0;\r\n }\r\n else {\r\n inRange =\r\n this.index_.compare(next, this.rangedFilter_.getEndPost()) <= 0;\r\n }\r\n if (inRange) {\r\n filtered = filtered.updateImmediateChild(next.name, next.node);\r\n count++;\r\n }\r\n else {\r\n // if we have reached the end post, we cannot keep adding elemments\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n // The snap contains less than twice the limit. Faster to delete from the snap than build up a new one\r\n filtered = newSnap.withIndex(this.index_);\r\n // Don't support priorities on queries\r\n filtered = filtered.updatePriority(ChildrenNode.EMPTY_NODE);\r\n var startPost = void 0;\r\n var endPost = void 0;\r\n var cmp = void 0;\r\n var iterator = void 0;\r\n if (this.reverse_) {\r\n iterator = filtered.getReverseIterator(this.index_);\r\n startPost = this.rangedFilter_.getEndPost();\r\n endPost = this.rangedFilter_.getStartPost();\r\n var indexCompare_1 = this.index_.getCompare();\r\n cmp = function (a, b) { return indexCompare_1(b, a); };\r\n }\r\n else {\r\n iterator = filtered.getIterator(this.index_);\r\n startPost = this.rangedFilter_.getStartPost();\r\n endPost = this.rangedFilter_.getEndPost();\r\n cmp = this.index_.getCompare();\r\n }\r\n var count = 0;\r\n var foundStartPost = false;\r\n while (iterator.hasNext()) {\r\n var next = iterator.getNext();\r\n if (!foundStartPost && cmp(startPost, next) <= 0) {\r\n // start adding\r\n foundStartPost = true;\r\n }\r\n var inRange = foundStartPost && count < this.limit_ && cmp(next, endPost) <= 0;\r\n if (inRange) {\r\n count++;\r\n }\r\n else {\r\n filtered = filtered.updateImmediateChild(next.name, ChildrenNode.EMPTY_NODE);\r\n }\r\n }\r\n }\r\n }\r\n return this.rangedFilter_\r\n .getIndexedFilter()\r\n .updateFullNode(oldSnap, filtered, optChangeAccumulator);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n LimitedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\r\n // Don't support priorities on queries\r\n return oldSnap;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n LimitedFilter.prototype.filtersNodes = function () {\r\n return true;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n LimitedFilter.prototype.getIndexedFilter = function () {\r\n return this.rangedFilter_.getIndexedFilter();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n LimitedFilter.prototype.getIndex = function () {\r\n return this.index_;\r\n };\r\n /**\r\n * @param {!Node} snap\r\n * @param {string} childKey\r\n * @param {!Node} childSnap\r\n * @param {!CompleteChildSource} source\r\n * @param {?ChildChangeAccumulator} changeAccumulator\r\n * @return {!Node}\r\n * @private\r\n */\r\n LimitedFilter.prototype.fullLimitUpdateChild_ = function (snap, childKey, childSnap, source, changeAccumulator) {\r\n // TODO: rename all cache stuff etc to general snap terminology\r\n var cmp;\r\n if (this.reverse_) {\r\n var indexCmp_1 = this.index_.getCompare();\r\n cmp = function (a, b) { return indexCmp_1(b, a); };\r\n }\r\n else {\r\n cmp = this.index_.getCompare();\r\n }\r\n var oldEventCache = snap;\r\n assert(oldEventCache.numChildren() === this.limit_, '');\r\n var newChildNamedNode = new NamedNode(childKey, childSnap);\r\n var windowBoundary = this.reverse_\r\n ? oldEventCache.getFirstChild(this.index_)\r\n : oldEventCache.getLastChild(this.index_);\r\n var inRange = this.rangedFilter_.matches(newChildNamedNode);\r\n if (oldEventCache.hasChild(childKey)) {\r\n var oldChildSnap = oldEventCache.getImmediateChild(childKey);\r\n var nextChild = source.getChildAfterChild(this.index_, windowBoundary, this.reverse_);\r\n while (nextChild != null &&\r\n (nextChild.name === childKey || oldEventCache.hasChild(nextChild.name))) {\r\n // There is a weird edge case where a node is updated as part of a merge in the write tree, but hasn't\r\n // been applied to the limited filter yet. Ignore this next child which will be updated later in\r\n // the limited filter...\r\n nextChild = source.getChildAfterChild(this.index_, nextChild, this.reverse_);\r\n }\r\n var compareNext = nextChild == null ? 1 : cmp(nextChild, newChildNamedNode);\r\n var remainsInWindow = inRange && !childSnap.isEmpty() && compareNext >= 0;\r\n if (remainsInWindow) {\r\n if (changeAccumulator != null) {\r\n changeAccumulator.trackChildChange(Change.childChangedChange(childKey, childSnap, oldChildSnap));\r\n }\r\n return oldEventCache.updateImmediateChild(childKey, childSnap);\r\n }\r\n else {\r\n if (changeAccumulator != null) {\r\n changeAccumulator.trackChildChange(Change.childRemovedChange(childKey, oldChildSnap));\r\n }\r\n var newEventCache = oldEventCache.updateImmediateChild(childKey, ChildrenNode.EMPTY_NODE);\r\n var nextChildInRange = nextChild != null && this.rangedFilter_.matches(nextChild);\r\n if (nextChildInRange) {\r\n if (changeAccumulator != null) {\r\n changeAccumulator.trackChildChange(Change.childAddedChange(nextChild.name, nextChild.node));\r\n }\r\n return newEventCache.updateImmediateChild(nextChild.name, nextChild.node);\r\n }\r\n else {\r\n return newEventCache;\r\n }\r\n }\r\n }\r\n else if (childSnap.isEmpty()) {\r\n // we're deleting a node, but it was not in the window, so ignore it\r\n return snap;\r\n }\r\n else if (inRange) {\r\n if (cmp(windowBoundary, newChildNamedNode) >= 0) {\r\n if (changeAccumulator != null) {\r\n changeAccumulator.trackChildChange(Change.childRemovedChange(windowBoundary.name, windowBoundary.node));\r\n changeAccumulator.trackChildChange(Change.childAddedChange(childKey, childSnap));\r\n }\r\n return oldEventCache\r\n .updateImmediateChild(childKey, childSnap)\r\n .updateImmediateChild(windowBoundary.name, ChildrenNode.EMPTY_NODE);\r\n }\r\n else {\r\n return snap;\r\n }\r\n }\r\n else {\r\n return snap;\r\n }\r\n };\r\n return LimitedFilter;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * This class is an immutable-from-the-public-api struct containing a set of query parameters defining a\r\n * range to be returned for a particular location. It is assumed that validation of parameters is done at the\r\n * user-facing API level, so it is not done here.\r\n * @constructor\r\n */\r\nvar QueryParams = /** @class */ (function () {\r\n function QueryParams() {\r\n this.limitSet_ = false;\r\n this.startSet_ = false;\r\n this.startNameSet_ = false;\r\n this.endSet_ = false;\r\n this.endNameSet_ = false;\r\n this.limit_ = 0;\r\n this.viewFrom_ = '';\r\n this.indexStartValue_ = null;\r\n this.indexStartName_ = '';\r\n this.indexEndValue_ = null;\r\n this.indexEndName_ = '';\r\n this.index_ = PRIORITY_INDEX;\r\n }\r\n /**\r\n * @return {boolean}\r\n */\r\n QueryParams.prototype.hasStart = function () {\r\n return this.startSet_;\r\n };\r\n /**\r\n * @return {boolean} True if it would return from left.\r\n */\r\n QueryParams.prototype.isViewFromLeft = function () {\r\n if (this.viewFrom_ === '') {\r\n // limit(), rather than limitToFirst or limitToLast was called.\r\n // This means that only one of startSet_ and endSet_ is true. Use them\r\n // to calculate which side of the view to anchor to. If neither is set,\r\n // anchor to the end.\r\n return this.startSet_;\r\n }\r\n else {\r\n return (this.viewFrom_ === QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT);\r\n }\r\n };\r\n /**\r\n * Only valid to call if hasStart() returns true\r\n * @return {*}\r\n */\r\n QueryParams.prototype.getIndexStartValue = function () {\r\n assert(this.startSet_, 'Only valid if start has been set');\r\n return this.indexStartValue_;\r\n };\r\n /**\r\n * Only valid to call if hasStart() returns true.\r\n * Returns the starting key name for the range defined by these query parameters\r\n * @return {!string}\r\n */\r\n QueryParams.prototype.getIndexStartName = function () {\r\n assert(this.startSet_, 'Only valid if start has been set');\r\n if (this.startNameSet_) {\r\n return this.indexStartName_;\r\n }\r\n else {\r\n return MIN_NAME;\r\n }\r\n };\r\n /**\r\n * @return {boolean}\r\n */\r\n QueryParams.prototype.hasEnd = function () {\r\n return this.endSet_;\r\n };\r\n /**\r\n * Only valid to call if hasEnd() returns true.\r\n * @return {*}\r\n */\r\n QueryParams.prototype.getIndexEndValue = function () {\r\n assert(this.endSet_, 'Only valid if end has been set');\r\n return this.indexEndValue_;\r\n };\r\n /**\r\n * Only valid to call if hasEnd() returns true.\r\n * Returns the end key name for the range defined by these query parameters\r\n * @return {!string}\r\n */\r\n QueryParams.prototype.getIndexEndName = function () {\r\n assert(this.endSet_, 'Only valid if end has been set');\r\n if (this.endNameSet_) {\r\n return this.indexEndName_;\r\n }\r\n else {\r\n return MAX_NAME;\r\n }\r\n };\r\n /**\r\n * @return {boolean}\r\n */\r\n QueryParams.prototype.hasLimit = function () {\r\n return this.limitSet_;\r\n };\r\n /**\r\n * @return {boolean} True if a limit has been set and it has been explicitly anchored\r\n */\r\n QueryParams.prototype.hasAnchoredLimit = function () {\r\n return this.limitSet_ && this.viewFrom_ !== '';\r\n };\r\n /**\r\n * Only valid to call if hasLimit() returns true\r\n * @return {!number}\r\n */\r\n QueryParams.prototype.getLimit = function () {\r\n assert(this.limitSet_, 'Only valid if limit has been set');\r\n return this.limit_;\r\n };\r\n /**\r\n * @return {!Index}\r\n */\r\n QueryParams.prototype.getIndex = function () {\r\n return this.index_;\r\n };\r\n /**\r\n * @return {!QueryParams}\r\n * @private\r\n */\r\n QueryParams.prototype.copy_ = function () {\r\n var copy = new QueryParams();\r\n copy.limitSet_ = this.limitSet_;\r\n copy.limit_ = this.limit_;\r\n copy.startSet_ = this.startSet_;\r\n copy.indexStartValue_ = this.indexStartValue_;\r\n copy.startNameSet_ = this.startNameSet_;\r\n copy.indexStartName_ = this.indexStartName_;\r\n copy.endSet_ = this.endSet_;\r\n copy.indexEndValue_ = this.indexEndValue_;\r\n copy.endNameSet_ = this.endNameSet_;\r\n copy.indexEndName_ = this.indexEndName_;\r\n copy.index_ = this.index_;\r\n copy.viewFrom_ = this.viewFrom_;\r\n return copy;\r\n };\r\n /**\r\n * @param {!number} newLimit\r\n * @return {!QueryParams}\r\n */\r\n QueryParams.prototype.limit = function (newLimit) {\r\n var newParams = this.copy_();\r\n newParams.limitSet_ = true;\r\n newParams.limit_ = newLimit;\r\n newParams.viewFrom_ = '';\r\n return newParams;\r\n };\r\n /**\r\n * @param {!number} newLimit\r\n * @return {!QueryParams}\r\n */\r\n QueryParams.prototype.limitToFirst = function (newLimit) {\r\n var newParams = this.copy_();\r\n newParams.limitSet_ = true;\r\n newParams.limit_ = newLimit;\r\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT;\r\n return newParams;\r\n };\r\n /**\r\n * @param {!number} newLimit\r\n * @return {!QueryParams}\r\n */\r\n QueryParams.prototype.limitToLast = function (newLimit) {\r\n var newParams = this.copy_();\r\n newParams.limitSet_ = true;\r\n newParams.limit_ = newLimit;\r\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_RIGHT;\r\n return newParams;\r\n };\r\n /**\r\n * @param {*} indexValue\r\n * @param {?string=} key\r\n * @return {!QueryParams}\r\n */\r\n QueryParams.prototype.startAt = function (indexValue, key) {\r\n var newParams = this.copy_();\r\n newParams.startSet_ = true;\r\n if (indexValue === undefined) {\r\n indexValue = null;\r\n }\r\n newParams.indexStartValue_ = indexValue;\r\n if (key != null) {\r\n newParams.startNameSet_ = true;\r\n newParams.indexStartName_ = key;\r\n }\r\n else {\r\n newParams.startNameSet_ = false;\r\n newParams.indexStartName_ = '';\r\n }\r\n return newParams;\r\n };\r\n /**\r\n * @param {*} indexValue\r\n * @param {?string=} key\r\n * @return {!QueryParams}\r\n */\r\n QueryParams.prototype.endAt = function (indexValue, key) {\r\n var newParams = this.copy_();\r\n newParams.endSet_ = true;\r\n if (indexValue === undefined) {\r\n indexValue = null;\r\n }\r\n newParams.indexEndValue_ = indexValue;\r\n if (key !== undefined) {\r\n newParams.endNameSet_ = true;\r\n newParams.indexEndName_ = key;\r\n }\r\n else {\r\n newParams.endNameSet_ = false;\r\n newParams.indexEndName_ = '';\r\n }\r\n return newParams;\r\n };\r\n /**\r\n * @param {!Index} index\r\n * @return {!QueryParams}\r\n */\r\n QueryParams.prototype.orderBy = function (index) {\r\n var newParams = this.copy_();\r\n newParams.index_ = index;\r\n return newParams;\r\n };\r\n /**\r\n * @return {!Object}\r\n */\r\n QueryParams.prototype.getQueryObject = function () {\r\n var WIRE_PROTOCOL_CONSTANTS = QueryParams.WIRE_PROTOCOL_CONSTANTS_;\r\n var obj = {};\r\n if (this.startSet_) {\r\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_VALUE] = this.indexStartValue_;\r\n if (this.startNameSet_) {\r\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_NAME] = this.indexStartName_;\r\n }\r\n }\r\n if (this.endSet_) {\r\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_VALUE] = this.indexEndValue_;\r\n if (this.endNameSet_) {\r\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_NAME] = this.indexEndName_;\r\n }\r\n }\r\n if (this.limitSet_) {\r\n obj[WIRE_PROTOCOL_CONSTANTS.LIMIT] = this.limit_;\r\n var viewFrom = this.viewFrom_;\r\n if (viewFrom === '') {\r\n if (this.isViewFromLeft()) {\r\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT;\r\n }\r\n else {\r\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT;\r\n }\r\n }\r\n obj[WIRE_PROTOCOL_CONSTANTS.VIEW_FROM] = viewFrom;\r\n }\r\n // For now, priority index is the default, so we only specify if it's some other index\r\n if (this.index_ !== PRIORITY_INDEX) {\r\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX] = this.index_.toString();\r\n }\r\n return obj;\r\n };\r\n /**\r\n * @return {boolean}\r\n */\r\n QueryParams.prototype.loadsAllData = function () {\r\n return !(this.startSet_ || this.endSet_ || this.limitSet_);\r\n };\r\n /**\r\n * @return {boolean}\r\n */\r\n QueryParams.prototype.isDefault = function () {\r\n return this.loadsAllData() && this.index_ === PRIORITY_INDEX;\r\n };\r\n /**\r\n * @return {!NodeFilter}\r\n */\r\n QueryParams.prototype.getNodeFilter = function () {\r\n if (this.loadsAllData()) {\r\n return new IndexedFilter(this.getIndex());\r\n }\r\n else if (this.hasLimit()) {\r\n return new LimitedFilter(this);\r\n }\r\n else {\r\n return new RangedFilter(this);\r\n }\r\n };\r\n /**\r\n * Returns a set of REST query string parameters representing this query.\r\n *\r\n * @return {!Object.} query string parameters\r\n */\r\n QueryParams.prototype.toRestQueryStringParameters = function () {\r\n var REST_CONSTANTS = QueryParams.REST_QUERY_CONSTANTS_;\r\n var qs = {};\r\n if (this.isDefault()) {\r\n return qs;\r\n }\r\n var orderBy;\r\n if (this.index_ === PRIORITY_INDEX) {\r\n orderBy = REST_CONSTANTS.PRIORITY_INDEX;\r\n }\r\n else if (this.index_ === VALUE_INDEX) {\r\n orderBy = REST_CONSTANTS.VALUE_INDEX;\r\n }\r\n else if (this.index_ === KEY_INDEX) {\r\n orderBy = REST_CONSTANTS.KEY_INDEX;\r\n }\r\n else {\r\n assert(this.index_ instanceof PathIndex, 'Unrecognized index type!');\r\n orderBy = this.index_.toString();\r\n }\r\n qs[REST_CONSTANTS.ORDER_BY] = stringify(orderBy);\r\n if (this.startSet_) {\r\n qs[REST_CONSTANTS.START_AT] = stringify(this.indexStartValue_);\r\n if (this.startNameSet_) {\r\n qs[REST_CONSTANTS.START_AT] += ',' + stringify(this.indexStartName_);\r\n }\r\n }\r\n if (this.endSet_) {\r\n qs[REST_CONSTANTS.END_AT] = stringify(this.indexEndValue_);\r\n if (this.endNameSet_) {\r\n qs[REST_CONSTANTS.END_AT] += ',' + stringify(this.indexEndName_);\r\n }\r\n }\r\n if (this.limitSet_) {\r\n if (this.isViewFromLeft()) {\r\n qs[REST_CONSTANTS.LIMIT_TO_FIRST] = this.limit_;\r\n }\r\n else {\r\n qs[REST_CONSTANTS.LIMIT_TO_LAST] = this.limit_;\r\n }\r\n }\r\n return qs;\r\n };\r\n /**\r\n * Wire Protocol Constants\r\n * @const\r\n * @enum {string}\r\n * @private\r\n */\r\n QueryParams.WIRE_PROTOCOL_CONSTANTS_ = {\r\n INDEX_START_VALUE: 'sp',\r\n INDEX_START_NAME: 'sn',\r\n INDEX_END_VALUE: 'ep',\r\n INDEX_END_NAME: 'en',\r\n LIMIT: 'l',\r\n VIEW_FROM: 'vf',\r\n VIEW_FROM_LEFT: 'l',\r\n VIEW_FROM_RIGHT: 'r',\r\n INDEX: 'i'\r\n };\r\n /**\r\n * REST Query Constants\r\n * @const\r\n * @enum {string}\r\n * @private\r\n */\r\n QueryParams.REST_QUERY_CONSTANTS_ = {\r\n ORDER_BY: 'orderBy',\r\n PRIORITY_INDEX: '$priority',\r\n VALUE_INDEX: '$value',\r\n KEY_INDEX: '$key',\r\n START_AT: 'startAt',\r\n END_AT: 'endAt',\r\n LIMIT_TO_FIRST: 'limitToFirst',\r\n LIMIT_TO_LAST: 'limitToLast'\r\n };\r\n /**\r\n * Default, empty query parameters\r\n * @type {!QueryParams}\r\n * @const\r\n */\r\n QueryParams.DEFAULT = new QueryParams();\r\n return QueryParams;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar Reference = /** @class */ (function (_super) {\r\n __extends(Reference, _super);\r\n /**\r\n * Call options:\r\n * new Reference(Repo, Path) or\r\n * new Reference(url: string, string|RepoManager)\r\n *\r\n * Externally - this is the firebase.database.Reference type.\r\n *\r\n * @param {!Repo} repo\r\n * @param {(!Path)} path\r\n * @extends {Query}\r\n */\r\n function Reference(repo, path) {\r\n var _this = this;\r\n if (!(repo instanceof Repo)) {\r\n throw new Error('new Reference() no longer supported - use app.database().');\r\n }\r\n // call Query's constructor, passing in the repo and path.\r\n _this = _super.call(this, repo, path, QueryParams.DEFAULT, false) || this;\r\n return _this;\r\n }\r\n /** @return {?string} */\r\n Reference.prototype.getKey = function () {\r\n validateArgCount('Reference.key', 0, 0, arguments.length);\r\n if (this.path.isEmpty()) {\r\n return null;\r\n }\r\n else {\r\n return this.path.getBack();\r\n }\r\n };\r\n /**\r\n * @param {!(string|Path)} pathString\r\n * @return {!Reference}\r\n */\r\n Reference.prototype.child = function (pathString) {\r\n validateArgCount('Reference.child', 1, 1, arguments.length);\r\n if (typeof pathString === 'number') {\r\n pathString = String(pathString);\r\n }\r\n else if (!(pathString instanceof Path)) {\r\n if (this.path.getFront() === null) {\r\n validateRootPathString('Reference.child', 1, pathString, false);\r\n }\r\n else {\r\n validatePathString('Reference.child', 1, pathString, false);\r\n }\r\n }\r\n return new Reference(this.repo, this.path.child(pathString));\r\n };\r\n /** @return {?Reference} */\r\n Reference.prototype.getParent = function () {\r\n validateArgCount('Reference.parent', 0, 0, arguments.length);\r\n var parentPath = this.path.parent();\r\n return parentPath === null ? null : new Reference(this.repo, parentPath);\r\n };\r\n /** @return {!Reference} */\r\n Reference.prototype.getRoot = function () {\r\n validateArgCount('Reference.root', 0, 0, arguments.length);\r\n var ref = this;\r\n while (ref.getParent() !== null) {\r\n ref = ref.getParent();\r\n }\r\n return ref;\r\n };\r\n /** @return {!Database} */\r\n Reference.prototype.databaseProp = function () {\r\n return this.repo.database;\r\n };\r\n /**\r\n * @param {*} newVal\r\n * @param {function(?Error)=} onComplete\r\n * @return {!Promise}\r\n */\r\n Reference.prototype.set = function (newVal, onComplete) {\r\n validateArgCount('Reference.set', 1, 2, arguments.length);\r\n validateWritablePath('Reference.set', this.path);\r\n validateFirebaseDataArg('Reference.set', 1, newVal, this.path, false);\r\n validateCallback('Reference.set', 2, onComplete, true);\r\n var deferred = new Deferred();\r\n this.repo.setWithPriority(this.path, newVal, \r\n /*priority=*/ null, deferred.wrapCallback(onComplete));\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {!Object} objectToMerge\r\n * @param {function(?Error)=} onComplete\r\n * @return {!Promise}\r\n */\r\n Reference.prototype.update = function (objectToMerge, onComplete) {\r\n validateArgCount('Reference.update', 1, 2, arguments.length);\r\n validateWritablePath('Reference.update', this.path);\r\n if (Array.isArray(objectToMerge)) {\r\n var newObjectToMerge = {};\r\n for (var i = 0; i < objectToMerge.length; ++i) {\r\n newObjectToMerge['' + i] = objectToMerge[i];\r\n }\r\n objectToMerge = newObjectToMerge;\r\n warn('Passing an Array to Firebase.update() is deprecated. ' +\r\n 'Use set() if you want to overwrite the existing data, or ' +\r\n 'an Object with integer keys if you really do want to ' +\r\n 'only update some of the children.');\r\n }\r\n validateFirebaseMergeDataArg('Reference.update', 1, objectToMerge, this.path, false);\r\n validateCallback('Reference.update', 2, onComplete, true);\r\n var deferred = new Deferred();\r\n this.repo.update(this.path, objectToMerge, deferred.wrapCallback(onComplete));\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {*} newVal\r\n * @param {string|number|null} newPriority\r\n * @param {function(?Error)=} onComplete\r\n * @return {!Promise}\r\n */\r\n Reference.prototype.setWithPriority = function (newVal, newPriority, onComplete) {\r\n validateArgCount('Reference.setWithPriority', 2, 3, arguments.length);\r\n validateWritablePath('Reference.setWithPriority', this.path);\r\n validateFirebaseDataArg('Reference.setWithPriority', 1, newVal, this.path, false);\r\n validatePriority('Reference.setWithPriority', 2, newPriority, false);\r\n validateCallback('Reference.setWithPriority', 3, onComplete, true);\r\n if (this.getKey() === '.length' || this.getKey() === '.keys') {\r\n throw ('Reference.setWithPriority failed: ' +\r\n this.getKey() +\r\n ' is a read-only object.');\r\n }\r\n var deferred = new Deferred();\r\n this.repo.setWithPriority(this.path, newVal, newPriority, deferred.wrapCallback(onComplete));\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {function(?Error)=} onComplete\r\n * @return {!Promise}\r\n */\r\n Reference.prototype.remove = function (onComplete) {\r\n validateArgCount('Reference.remove', 0, 1, arguments.length);\r\n validateWritablePath('Reference.remove', this.path);\r\n validateCallback('Reference.remove', 1, onComplete, true);\r\n return this.set(null, onComplete);\r\n };\r\n /**\r\n * @param {function(*):*} transactionUpdate\r\n * @param {(function(?Error, boolean, ?DataSnapshot))=} onComplete\r\n * @param {boolean=} applyLocally\r\n * @return {!Promise}\r\n */\r\n Reference.prototype.transaction = function (transactionUpdate, onComplete, applyLocally) {\r\n validateArgCount('Reference.transaction', 1, 3, arguments.length);\r\n validateWritablePath('Reference.transaction', this.path);\r\n validateCallback('Reference.transaction', 1, transactionUpdate, false);\r\n validateCallback('Reference.transaction', 2, onComplete, true);\r\n // NOTE: applyLocally is an internal-only option for now. We need to decide if we want to keep it and how\r\n // to expose it.\r\n validateBoolean('Reference.transaction', 3, applyLocally, true);\r\n if (this.getKey() === '.length' || this.getKey() === '.keys') {\r\n throw ('Reference.transaction failed: ' +\r\n this.getKey() +\r\n ' is a read-only object.');\r\n }\r\n if (applyLocally === undefined) {\r\n applyLocally = true;\r\n }\r\n var deferred = new Deferred();\r\n if (typeof onComplete === 'function') {\r\n deferred.promise.catch(function () { });\r\n }\r\n var promiseComplete = function (error, committed, snapshot) {\r\n if (error) {\r\n deferred.reject(error);\r\n }\r\n else {\r\n deferred.resolve(new TransactionResult(committed, snapshot));\r\n }\r\n if (typeof onComplete === 'function') {\r\n onComplete(error, committed, snapshot);\r\n }\r\n };\r\n this.repo.startTransaction(this.path, transactionUpdate, promiseComplete, applyLocally);\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {string|number|null} priority\r\n * @param {function(?Error)=} onComplete\r\n * @return {!Promise}\r\n */\r\n Reference.prototype.setPriority = function (priority, onComplete) {\r\n validateArgCount('Reference.setPriority', 1, 2, arguments.length);\r\n validateWritablePath('Reference.setPriority', this.path);\r\n validatePriority('Reference.setPriority', 1, priority, false);\r\n validateCallback('Reference.setPriority', 2, onComplete, true);\r\n var deferred = new Deferred();\r\n this.repo.setWithPriority(this.path.child('.priority'), priority, null, deferred.wrapCallback(onComplete));\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {*=} value\r\n * @param {function(?Error)=} onComplete\r\n * @return {!Reference}\r\n */\r\n Reference.prototype.push = function (value, onComplete) {\r\n validateArgCount('Reference.push', 0, 2, arguments.length);\r\n validateWritablePath('Reference.push', this.path);\r\n validateFirebaseDataArg('Reference.push', 1, value, this.path, true);\r\n validateCallback('Reference.push', 2, onComplete, true);\r\n var now = this.repo.serverTime();\r\n var name = nextPushId(now);\r\n // push() returns a ThennableReference whose promise is fulfilled with a regular Reference.\r\n // We use child() to create handles to two different references. The first is turned into a\r\n // ThennableReference below by adding then() and catch() methods and is used as the\r\n // return value of push(). The second remains a regular Reference and is used as the fulfilled\r\n // value of the first ThennableReference.\r\n var thennablePushRef = this.child(name);\r\n var pushRef = this.child(name);\r\n var promise;\r\n if (value != null) {\r\n promise = thennablePushRef.set(value, onComplete).then(function () { return pushRef; });\r\n }\r\n else {\r\n promise = Promise.resolve(pushRef);\r\n }\r\n thennablePushRef.then = promise.then.bind(promise);\r\n thennablePushRef.catch = promise.then.bind(promise, undefined);\r\n if (typeof onComplete === 'function') {\r\n promise.catch(function () { });\r\n }\r\n return thennablePushRef;\r\n };\r\n /**\r\n * @return {!OnDisconnect}\r\n */\r\n Reference.prototype.onDisconnect = function () {\r\n validateWritablePath('Reference.onDisconnect', this.path);\r\n return new OnDisconnect(this.repo, this.path);\r\n };\r\n Object.defineProperty(Reference.prototype, \"database\", {\r\n get: function () {\r\n return this.databaseProp();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"key\", {\r\n get: function () {\r\n return this.getKey();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"parent\", {\r\n get: function () {\r\n return this.getParent();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"root\", {\r\n get: function () {\r\n return this.getRoot();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return Reference;\r\n}(Query));\r\n/**\r\n * Define reference constructor in various modules\r\n *\r\n * We are doing this here to avoid several circular\r\n * dependency issues\r\n */\r\nQuery.__referenceConstructor = Reference;\r\nSyncPoint.__referenceConstructor = Reference;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Node in a Tree.\r\n */\r\nvar TreeNode = /** @class */ (function () {\r\n function TreeNode() {\r\n // TODO: Consider making accessors that create children and value lazily or\r\n // separate Internal / Leaf 'types'.\r\n this.children = {};\r\n this.childCount = 0;\r\n this.value = null;\r\n }\r\n return TreeNode;\r\n}());\r\n/**\r\n * A light-weight tree, traversable by path. Nodes can have both values and children.\r\n * Nodes are not enumerated (by forEachChild) unless they have a value or non-empty\r\n * children.\r\n */\r\nvar Tree = /** @class */ (function () {\r\n /**\r\n * @template T\r\n * @param {string=} name_ Optional name of the node.\r\n * @param {Tree=} parent_ Optional parent node.\r\n * @param {TreeNode=} node_ Optional node to wrap.\r\n */\r\n function Tree(name_, parent_, node_) {\r\n if (name_ === void 0) { name_ = ''; }\r\n if (parent_ === void 0) { parent_ = null; }\r\n if (node_ === void 0) { node_ = new TreeNode(); }\r\n this.name_ = name_;\r\n this.parent_ = parent_;\r\n this.node_ = node_;\r\n }\r\n /**\r\n * Returns a sub-Tree for the given path.\r\n *\r\n * @param {!(string|Path)} pathObj Path to look up.\r\n * @return {!Tree.} Tree for path.\r\n */\r\n Tree.prototype.subTree = function (pathObj) {\r\n // TODO: Require pathObj to be Path?\r\n var path = pathObj instanceof Path ? pathObj : new Path(pathObj);\r\n var child = this, next = path.getFront();\r\n while (next !== null) {\r\n var childNode = safeGet(child.node_.children, next) || new TreeNode();\r\n child = new Tree(next, child, childNode);\r\n path = path.popFront();\r\n next = path.getFront();\r\n }\r\n return child;\r\n };\r\n /**\r\n * Returns the data associated with this tree node.\r\n *\r\n * @return {?T} The data or null if no data exists.\r\n */\r\n Tree.prototype.getValue = function () {\r\n return this.node_.value;\r\n };\r\n /**\r\n * Sets data to this tree node.\r\n *\r\n * @param {!T} value Value to set.\r\n */\r\n Tree.prototype.setValue = function (value) {\r\n assert(typeof value !== 'undefined', 'Cannot set value to undefined');\r\n this.node_.value = value;\r\n this.updateParents_();\r\n };\r\n /**\r\n * Clears the contents of the tree node (its value and all children).\r\n */\r\n Tree.prototype.clear = function () {\r\n this.node_.value = null;\r\n this.node_.children = {};\r\n this.node_.childCount = 0;\r\n this.updateParents_();\r\n };\r\n /**\r\n * @return {boolean} Whether the tree has any children.\r\n */\r\n Tree.prototype.hasChildren = function () {\r\n return this.node_.childCount > 0;\r\n };\r\n /**\r\n * @return {boolean} Whether the tree is empty (no value or children).\r\n */\r\n Tree.prototype.isEmpty = function () {\r\n return this.getValue() === null && !this.hasChildren();\r\n };\r\n /**\r\n * Calls action for each child of this tree node.\r\n *\r\n * @param {function(!Tree.)} action Action to be called for each child.\r\n */\r\n Tree.prototype.forEachChild = function (action) {\r\n var _this = this;\r\n each(this.node_.children, function (child, childTree) {\r\n action(new Tree(child, _this, childTree));\r\n });\r\n };\r\n /**\r\n * Does a depth-first traversal of this node's descendants, calling action for each one.\r\n *\r\n * @param {function(!Tree.)} action Action to be called for each child.\r\n * @param {boolean=} includeSelf Whether to call action on this node as well. Defaults to\r\n * false.\r\n * @param {boolean=} childrenFirst Whether to call action on children before calling it on\r\n * parent.\r\n */\r\n Tree.prototype.forEachDescendant = function (action, includeSelf, childrenFirst) {\r\n if (includeSelf && !childrenFirst) {\r\n action(this);\r\n }\r\n this.forEachChild(function (child) {\r\n child.forEachDescendant(action, /*includeSelf=*/ true, childrenFirst);\r\n });\r\n if (includeSelf && childrenFirst) {\r\n action(this);\r\n }\r\n };\r\n /**\r\n * Calls action on each ancestor node.\r\n *\r\n * @param {function(!Tree.)} action Action to be called on each parent; return\r\n * true to abort.\r\n * @param {boolean=} includeSelf Whether to call action on this node as well.\r\n * @return {boolean} true if the action callback returned true.\r\n */\r\n Tree.prototype.forEachAncestor = function (action, includeSelf) {\r\n var node = includeSelf ? this : this.parent();\r\n while (node !== null) {\r\n if (action(node)) {\r\n return true;\r\n }\r\n node = node.parent();\r\n }\r\n return false;\r\n };\r\n /**\r\n * Does a depth-first traversal of this node's descendants. When a descendant with a value\r\n * is found, action is called on it and traversal does not continue inside the node.\r\n * Action is *not* called on this node.\r\n *\r\n * @param {function(!Tree.)} action Action to be called for each child.\r\n */\r\n Tree.prototype.forEachImmediateDescendantWithValue = function (action) {\r\n this.forEachChild(function (child) {\r\n if (child.getValue() !== null) {\r\n action(child);\r\n }\r\n else {\r\n child.forEachImmediateDescendantWithValue(action);\r\n }\r\n });\r\n };\r\n /**\r\n * @return {!Path} The path of this tree node, as a Path.\r\n */\r\n Tree.prototype.path = function () {\r\n return new Path(this.parent_ === null\r\n ? this.name_\r\n : this.parent_.path() + '/' + this.name_);\r\n };\r\n /**\r\n * @return {string} The name of the tree node.\r\n */\r\n Tree.prototype.name = function () {\r\n return this.name_;\r\n };\r\n /**\r\n * @return {?Tree} The parent tree node, or null if this is the root of the tree.\r\n */\r\n Tree.prototype.parent = function () {\r\n return this.parent_;\r\n };\r\n /**\r\n * Adds or removes this child from its parent based on whether it's empty or not.\r\n *\r\n * @private\r\n */\r\n Tree.prototype.updateParents_ = function () {\r\n if (this.parent_ !== null) {\r\n this.parent_.updateChild_(this.name_, this);\r\n }\r\n };\r\n /**\r\n * Adds or removes the passed child to this tree node, depending on whether it's empty.\r\n *\r\n * @param {string} childName The name of the child to update.\r\n * @param {!Tree.} child The child to update.\r\n * @private\r\n */\r\n Tree.prototype.updateChild_ = function (childName, child) {\r\n var childEmpty = child.isEmpty();\r\n var childExists = contains(this.node_.children, childName);\r\n if (childEmpty && childExists) {\r\n delete this.node_.children[childName];\r\n this.node_.childCount--;\r\n this.updateParents_();\r\n }\r\n else if (!childEmpty && !childExists) {\r\n this.node_.children[childName] = child.node_;\r\n this.node_.childCount++;\r\n this.updateParents_();\r\n }\r\n };\r\n return Tree;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// TODO: This is pretty messy. Ideally, a lot of this would move into FirebaseData, or a transaction-specific\r\n// component used by FirebaseData, but it has ties to user callbacks (transaction update and onComplete) as well\r\n// as the realtime connection (to send transactions to the server). So that all needs to be decoupled first.\r\n// For now it's part of Repo, but in its own file.\r\n/**\r\n * @enum {number}\r\n */\r\nvar TransactionStatus;\r\n(function (TransactionStatus) {\r\n // We've run the transaction and updated transactionResultData_ with the result, but it isn't currently sent to the\r\n // server. A transaction will go from RUN -> SENT -> RUN if it comes back from the server as rejected due to\r\n // mismatched hash.\r\n TransactionStatus[TransactionStatus[\"RUN\"] = 0] = \"RUN\";\r\n // We've run the transaction and sent it to the server and it's currently outstanding (hasn't come back as accepted\r\n // or rejected yet).\r\n TransactionStatus[TransactionStatus[\"SENT\"] = 1] = \"SENT\";\r\n // Temporary state used to mark completed transactions (whether successful or aborted). The transaction will be\r\n // removed when we get a chance to prune completed ones.\r\n TransactionStatus[TransactionStatus[\"COMPLETED\"] = 2] = \"COMPLETED\";\r\n // Used when an already-sent transaction needs to be aborted (e.g. due to a conflicting set() call that was made).\r\n // If it comes back as unsuccessful, we'll abort it.\r\n TransactionStatus[TransactionStatus[\"SENT_NEEDS_ABORT\"] = 3] = \"SENT_NEEDS_ABORT\";\r\n // Temporary state used to mark transactions that need to be aborted.\r\n TransactionStatus[TransactionStatus[\"NEEDS_ABORT\"] = 4] = \"NEEDS_ABORT\";\r\n})(TransactionStatus || (TransactionStatus = {}));\r\n/**\r\n * If a transaction does not succeed after 25 retries, we abort it. Among other things this ensure that if there's\r\n * ever a bug causing a mismatch between client / server hashes for some data, we won't retry indefinitely.\r\n * @type {number}\r\n * @const\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.MAX_TRANSACTION_RETRIES_ = 25;\r\n/**\r\n * Setup the transaction data structures\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.transactionsInit_ = function () {\r\n /**\r\n * Stores queues of outstanding transactions for Firebase locations.\r\n *\r\n * @type {!Tree.>}\r\n * @private\r\n */\r\n this.transactionQueueTree_ = new Tree();\r\n};\r\n/**\r\n * Creates a new transaction, adds it to the transactions we're tracking, and sends it to the server if possible.\r\n *\r\n * @param {!Path} path Path at which to do transaction.\r\n * @param {function(*):*} transactionUpdate Update callback.\r\n * @param {?function(?Error, boolean, ?DataSnapshot)} onComplete Completion callback.\r\n * @param {boolean} applyLocally Whether or not to make intermediate results visible\r\n */\r\nRepo.prototype.startTransaction = function (path, transactionUpdate, onComplete, applyLocally) {\r\n this.log_('transaction on ' + path);\r\n // Add a watch to make sure we get server updates.\r\n var valueCallback = function () { };\r\n var watchRef = new Reference(this, path);\r\n watchRef.on('value', valueCallback);\r\n var unwatcher = function () {\r\n watchRef.off('value', valueCallback);\r\n };\r\n // Initialize transaction.\r\n var transaction = {\r\n path: path,\r\n update: transactionUpdate,\r\n onComplete: onComplete,\r\n // One of TransactionStatus enums.\r\n status: null,\r\n // Used when combining transactions at different locations to figure out which one goes first.\r\n order: LUIDGenerator(),\r\n // Whether to raise local events for this transaction.\r\n applyLocally: applyLocally,\r\n // Count of how many times we've retried the transaction.\r\n retryCount: 0,\r\n // Function to call to clean up our .on() listener.\r\n unwatcher: unwatcher,\r\n // Stores why a transaction was aborted.\r\n abortReason: null,\r\n currentWriteId: null,\r\n currentInputSnapshot: null,\r\n currentOutputSnapshotRaw: null,\r\n currentOutputSnapshotResolved: null\r\n };\r\n // Run transaction initially.\r\n var currentState = this.getLatestState_(path);\r\n transaction.currentInputSnapshot = currentState;\r\n var newVal = transaction.update(currentState.val());\r\n if (newVal === undefined) {\r\n // Abort transaction.\r\n transaction.unwatcher();\r\n transaction.currentOutputSnapshotRaw = null;\r\n transaction.currentOutputSnapshotResolved = null;\r\n if (transaction.onComplete) {\r\n // We just set the input snapshot, so this cast should be safe\r\n var snapshot = new DataSnapshot(transaction.currentInputSnapshot, new Reference(this, transaction.path), PRIORITY_INDEX);\r\n transaction.onComplete(null, false, snapshot);\r\n }\r\n }\r\n else {\r\n validateFirebaseData('transaction failed: Data returned ', newVal, transaction.path);\r\n // Mark as run and add to our queue.\r\n transaction.status = TransactionStatus.RUN;\r\n var queueNode = this.transactionQueueTree_.subTree(path);\r\n var nodeQueue = queueNode.getValue() || [];\r\n nodeQueue.push(transaction);\r\n queueNode.setValue(nodeQueue);\r\n // Update visibleData and raise events\r\n // Note: We intentionally raise events after updating all of our transaction state, since the user could\r\n // start new transactions from the event callbacks.\r\n var priorityForNode = void 0;\r\n if (typeof newVal === 'object' &&\r\n newVal !== null &&\r\n contains(newVal, '.priority')) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n priorityForNode = safeGet(newVal, '.priority');\r\n assert(isValidPriority(priorityForNode), 'Invalid priority returned by transaction. ' +\r\n 'Priority must be a valid string, finite number, server value, or null.');\r\n }\r\n else {\r\n var currentNode = this.serverSyncTree_.calcCompleteEventCache(path) ||\r\n ChildrenNode.EMPTY_NODE;\r\n priorityForNode = currentNode.getPriority().val();\r\n }\r\n priorityForNode /** @type {null|number|string} */ = priorityForNode;\r\n var serverValues = this.generateServerValues();\r\n var newNodeUnresolved = nodeFromJSON$1(newVal, priorityForNode);\r\n var newNode = resolveDeferredValueSnapshot(newNodeUnresolved, currentState, serverValues);\r\n transaction.currentOutputSnapshotRaw = newNodeUnresolved;\r\n transaction.currentOutputSnapshotResolved = newNode;\r\n transaction.currentWriteId = this.getNextWriteId_();\r\n var events = this.serverSyncTree_.applyUserOverwrite(path, newNode, transaction.currentWriteId, transaction.applyLocally);\r\n this.eventQueue_.raiseEventsForChangedPath(path, events);\r\n this.sendReadyTransactions_();\r\n }\r\n};\r\n/**\r\n * @param {!Path} path\r\n * @param {Array.=} excludeSets A specific set to exclude\r\n * @return {Node}\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.getLatestState_ = function (path, excludeSets) {\r\n return (this.serverSyncTree_.calcCompleteEventCache(path, excludeSets) ||\r\n ChildrenNode.EMPTY_NODE);\r\n};\r\n/**\r\n * Sends any already-run transactions that aren't waiting for outstanding transactions to\r\n * complete.\r\n *\r\n * Externally it's called with no arguments, but it calls itself recursively with a particular\r\n * transactionQueueTree node to recurse through the tree.\r\n *\r\n * @param {Tree.>=} node transactionQueueTree node to start at.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.sendReadyTransactions_ = function (node) {\r\n var _this = this;\r\n if (node === void 0) { node = this.transactionQueueTree_; }\r\n // Before recursing, make sure any completed transactions are removed.\r\n if (!node) {\r\n this.pruneCompletedTransactionsBelowNode_(node);\r\n }\r\n if (node.getValue() !== null) {\r\n var queue = this.buildTransactionQueue_(node);\r\n assert(queue.length > 0, 'Sending zero length transaction queue');\r\n var allRun = queue.every(function (transaction) { return transaction.status === TransactionStatus.RUN; });\r\n // If they're all run (and not sent), we can send them. Else, we must wait.\r\n if (allRun) {\r\n this.sendTransactionQueue_(node.path(), queue);\r\n }\r\n }\r\n else if (node.hasChildren()) {\r\n node.forEachChild(function (childNode) {\r\n _this.sendReadyTransactions_(childNode);\r\n });\r\n }\r\n};\r\n/**\r\n * Given a list of run transactions, send them to the server and then handle the result (success or failure).\r\n *\r\n * @param {!Path} path The location of the queue.\r\n * @param {!Array.} queue Queue of transactions under the specified location.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.sendTransactionQueue_ = function (path, queue) {\r\n var _this = this;\r\n // Mark transactions as sent and increment retry count!\r\n var setsToIgnore = queue.map(function (txn) {\r\n return txn.currentWriteId;\r\n });\r\n var latestState = this.getLatestState_(path, setsToIgnore);\r\n var snapToSend = latestState;\r\n var latestHash = latestState.hash();\r\n for (var i = 0; i < queue.length; i++) {\r\n var txn = queue[i];\r\n assert(txn.status === TransactionStatus.RUN, 'tryToSendTransactionQueue_: items in queue should all be run.');\r\n txn.status = TransactionStatus.SENT;\r\n txn.retryCount++;\r\n var relativePath = Path.relativePath(path, txn.path);\r\n // If we've gotten to this point, the output snapshot must be defined.\r\n snapToSend = snapToSend.updateChild(relativePath /** @type {!Node} */, txn.currentOutputSnapshotRaw);\r\n }\r\n var dataToSend = snapToSend.val(true);\r\n var pathToSend = path;\r\n // Send the put.\r\n this.server_.put(pathToSend.toString(), dataToSend, function (status) {\r\n _this.log_('transaction put response', {\r\n path: pathToSend.toString(),\r\n status: status\r\n });\r\n var events = [];\r\n if (status === 'ok') {\r\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\r\n // the callback could trigger more transactions or sets.\r\n var callbacks = [];\r\n for (var i = 0; i < queue.length; i++) {\r\n queue[i].status = TransactionStatus.COMPLETED;\r\n events = events.concat(_this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId));\r\n if (queue[i].onComplete) {\r\n // We never unset the output snapshot, and given that this transaction is complete, it should be set\r\n var node = queue[i].currentOutputSnapshotResolved;\r\n var ref = new Reference(_this, queue[i].path);\r\n var snapshot = new DataSnapshot(node, ref, PRIORITY_INDEX);\r\n callbacks.push(queue[i].onComplete.bind(null, null, true, snapshot));\r\n }\r\n queue[i].unwatcher();\r\n }\r\n // Now remove the completed transactions.\r\n _this.pruneCompletedTransactionsBelowNode_(_this.transactionQueueTree_.subTree(path));\r\n // There may be pending transactions that we can now send.\r\n _this.sendReadyTransactions_();\r\n _this.eventQueue_.raiseEventsForChangedPath(path, events);\r\n // Finally, trigger onComplete callbacks.\r\n for (var i = 0; i < callbacks.length; i++) {\r\n exceptionGuard(callbacks[i]);\r\n }\r\n }\r\n else {\r\n // transactions are no longer sent. Update their status appropriately.\r\n if (status === 'datastale') {\r\n for (var i = 0; i < queue.length; i++) {\r\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT) {\r\n queue[i].status = TransactionStatus.NEEDS_ABORT;\r\n }\r\n else {\r\n queue[i].status = TransactionStatus.RUN;\r\n }\r\n }\r\n }\r\n else {\r\n warn('transaction at ' + pathToSend.toString() + ' failed: ' + status);\r\n for (var i = 0; i < queue.length; i++) {\r\n queue[i].status = TransactionStatus.NEEDS_ABORT;\r\n queue[i].abortReason = status;\r\n }\r\n }\r\n _this.rerunTransactions_(path);\r\n }\r\n }, latestHash);\r\n};\r\n/**\r\n * Finds all transactions dependent on the data at changedPath and reruns them.\r\n *\r\n * Should be called any time cached data changes.\r\n *\r\n * Return the highest path that was affected by rerunning transactions. This is the path at which events need to\r\n * be raised for.\r\n *\r\n * @param {!Path} changedPath The path in mergedData that changed.\r\n * @return {!Path} The rootmost path that was affected by rerunning transactions.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.rerunTransactions_ = function (changedPath) {\r\n var rootMostTransactionNode = this.getAncestorTransactionNode_(changedPath);\r\n var path = rootMostTransactionNode.path();\r\n var queue = this.buildTransactionQueue_(rootMostTransactionNode);\r\n this.rerunTransactionQueue_(queue, path);\r\n return path;\r\n};\r\n/**\r\n * Does all the work of rerunning transactions (as well as cleans up aborted transactions and whatnot).\r\n *\r\n * @param {Array.} queue The queue of transactions to run.\r\n * @param {!Path} path The path the queue is for.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.rerunTransactionQueue_ = function (queue, path) {\r\n if (queue.length === 0) {\r\n return; // Nothing to do!\r\n }\r\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\r\n // the callback could trigger more transactions or sets.\r\n var callbacks = [];\r\n var events = [];\r\n // Ignore all of the sets we're going to re-run.\r\n var txnsToRerun = queue.filter(function (q) {\r\n return q.status === TransactionStatus.RUN;\r\n });\r\n var setsToIgnore = txnsToRerun.map(function (q) {\r\n return q.currentWriteId;\r\n });\r\n for (var i = 0; i < queue.length; i++) {\r\n var transaction = queue[i];\r\n var relativePath = Path.relativePath(path, transaction.path);\r\n var abortTransaction = false, abortReason = void 0;\r\n assert(relativePath !== null, 'rerunTransactionsUnderNode_: relativePath should not be null.');\r\n if (transaction.status === TransactionStatus.NEEDS_ABORT) {\r\n abortTransaction = true;\r\n abortReason = transaction.abortReason;\r\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\r\n }\r\n else if (transaction.status === TransactionStatus.RUN) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (transaction.retryCount >= Repo.MAX_TRANSACTION_RETRIES_) {\r\n abortTransaction = true;\r\n abortReason = 'maxretry';\r\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\r\n }\r\n else {\r\n // This code reruns a transaction\r\n var currentNode = this.getLatestState_(transaction.path, setsToIgnore);\r\n transaction.currentInputSnapshot = currentNode;\r\n var newData = queue[i].update(currentNode.val());\r\n if (newData !== undefined) {\r\n validateFirebaseData('transaction failed: Data returned ', newData, transaction.path);\r\n var newDataNode = nodeFromJSON$1(newData);\r\n var hasExplicitPriority = typeof newData === 'object' &&\r\n newData != null &&\r\n contains(newData, '.priority');\r\n if (!hasExplicitPriority) {\r\n // Keep the old priority if there wasn't a priority explicitly specified.\r\n newDataNode = newDataNode.updatePriority(currentNode.getPriority());\r\n }\r\n var oldWriteId = transaction.currentWriteId;\r\n var serverValues = this.generateServerValues();\r\n var newNodeResolved = resolveDeferredValueSnapshot(newDataNode, currentNode, serverValues);\r\n transaction.currentOutputSnapshotRaw = newDataNode;\r\n transaction.currentOutputSnapshotResolved = newNodeResolved;\r\n transaction.currentWriteId = this.getNextWriteId_();\r\n // Mutates setsToIgnore in place\r\n setsToIgnore.splice(setsToIgnore.indexOf(oldWriteId), 1);\r\n events = events.concat(this.serverSyncTree_.applyUserOverwrite(transaction.path, newNodeResolved, transaction.currentWriteId, transaction.applyLocally));\r\n events = events.concat(this.serverSyncTree_.ackUserWrite(oldWriteId, true));\r\n }\r\n else {\r\n abortTransaction = true;\r\n abortReason = 'nodata';\r\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\r\n }\r\n }\r\n }\r\n this.eventQueue_.raiseEventsForChangedPath(path, events);\r\n events = [];\r\n if (abortTransaction) {\r\n // Abort.\r\n queue[i].status = TransactionStatus.COMPLETED;\r\n // Removing a listener can trigger pruning which can muck with mergedData/visibleData (as it prunes data).\r\n // So defer the unwatcher until we're done.\r\n (function (unwatcher) {\r\n setTimeout(unwatcher, Math.floor(0));\r\n })(queue[i].unwatcher);\r\n if (queue[i].onComplete) {\r\n if (abortReason === 'nodata') {\r\n var ref = new Reference(this, queue[i].path);\r\n // We set this field immediately, so it's safe to cast to an actual snapshot\r\n var lastInput /** @type {!Node} */ = queue[i].currentInputSnapshot;\r\n var snapshot = new DataSnapshot(lastInput, ref, PRIORITY_INDEX);\r\n callbacks.push(queue[i].onComplete.bind(null, null, false, snapshot));\r\n }\r\n else {\r\n callbacks.push(queue[i].onComplete.bind(null, new Error(abortReason), false, null));\r\n }\r\n }\r\n }\r\n }\r\n // Clean up completed transactions.\r\n this.pruneCompletedTransactionsBelowNode_(this.transactionQueueTree_);\r\n // Now fire callbacks, now that we're in a good, known state.\r\n for (var i = 0; i < callbacks.length; i++) {\r\n exceptionGuard(callbacks[i]);\r\n }\r\n // Try to send the transaction result to the server.\r\n this.sendReadyTransactions_();\r\n};\r\n/**\r\n * Returns the rootmost ancestor node of the specified path that has a pending transaction on it, or just returns\r\n * the node for the given path if there are no pending transactions on any ancestor.\r\n *\r\n * @param {!Path} path The location to start at.\r\n * @return {!Tree.>} The rootmost node with a transaction.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.getAncestorTransactionNode_ = function (path) {\r\n var front;\r\n // Start at the root and walk deeper into the tree towards path until we find a node with pending transactions.\r\n var transactionNode = this.transactionQueueTree_;\r\n front = path.getFront();\r\n while (front !== null && transactionNode.getValue() === null) {\r\n transactionNode = transactionNode.subTree(front);\r\n path = path.popFront();\r\n front = path.getFront();\r\n }\r\n return transactionNode;\r\n};\r\n/**\r\n * Builds the queue of all transactions at or below the specified transactionNode.\r\n *\r\n * @param {!Tree.>} transactionNode\r\n * @return {Array.} The generated queue.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.buildTransactionQueue_ = function (transactionNode) {\r\n // Walk any child transaction queues and aggregate them into a single queue.\r\n var transactionQueue = [];\r\n this.aggregateTransactionQueuesForNode_(transactionNode, transactionQueue);\r\n // Sort them by the order the transactions were created.\r\n transactionQueue.sort(function (a, b) {\r\n return a.order - b.order;\r\n });\r\n return transactionQueue;\r\n};\r\n/**\r\n * @param {!Tree.>} node\r\n * @param {Array.} queue\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.aggregateTransactionQueuesForNode_ = function (node, queue) {\r\n var _this = this;\r\n var nodeQueue = node.getValue();\r\n if (nodeQueue !== null) {\r\n for (var i = 0; i < nodeQueue.length; i++) {\r\n queue.push(nodeQueue[i]);\r\n }\r\n }\r\n node.forEachChild(function (child) {\r\n _this.aggregateTransactionQueuesForNode_(child, queue);\r\n });\r\n};\r\n/**\r\n * Remove COMPLETED transactions at or below this node in the transactionQueueTree_.\r\n *\r\n * @param {!Tree.>} node\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.pruneCompletedTransactionsBelowNode_ = function (node) {\r\n var _this = this;\r\n var queue = node.getValue();\r\n if (queue) {\r\n var to = 0;\r\n for (var from = 0; from < queue.length; from++) {\r\n if (queue[from].status !== TransactionStatus.COMPLETED) {\r\n queue[to] = queue[from];\r\n to++;\r\n }\r\n }\r\n queue.length = to;\r\n node.setValue(queue.length > 0 ? queue : null);\r\n }\r\n node.forEachChild(function (childNode) {\r\n _this.pruneCompletedTransactionsBelowNode_(childNode);\r\n });\r\n};\r\n/**\r\n * Aborts all transactions on ancestors or descendants of the specified path. Called when doing a set() or update()\r\n * since we consider them incompatible with transactions.\r\n *\r\n * @param {!Path} path Path for which we want to abort related transactions.\r\n * @return {!Path}\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.abortTransactions_ = function (path) {\r\n var _this = this;\r\n var affectedPath = this.getAncestorTransactionNode_(path).path();\r\n var transactionNode = this.transactionQueueTree_.subTree(path);\r\n transactionNode.forEachAncestor(function (node) {\r\n _this.abortTransactionsOnNode_(node);\r\n });\r\n this.abortTransactionsOnNode_(transactionNode);\r\n transactionNode.forEachDescendant(function (node) {\r\n _this.abortTransactionsOnNode_(node);\r\n });\r\n return affectedPath;\r\n};\r\n/**\r\n * Abort transactions stored in this transaction queue node.\r\n *\r\n * @param {!Tree.>} node Node to abort transactions for.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.abortTransactionsOnNode_ = function (node) {\r\n var queue = node.getValue();\r\n if (queue !== null) {\r\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\r\n // the callback could trigger more transactions or sets.\r\n var callbacks = [];\r\n // Go through queue. Any already-sent transactions must be marked for abort, while the unsent ones\r\n // can be immediately aborted and removed.\r\n var events = [];\r\n var lastSent = -1;\r\n for (var i = 0; i < queue.length; i++) {\r\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT) ;\r\n else if (queue[i].status === TransactionStatus.SENT) {\r\n assert(lastSent === i - 1, 'All SENT items should be at beginning of queue.');\r\n lastSent = i;\r\n // Mark transaction for abort when it comes back.\r\n queue[i].status = TransactionStatus.SENT_NEEDS_ABORT;\r\n queue[i].abortReason = 'set';\r\n }\r\n else {\r\n assert(queue[i].status === TransactionStatus.RUN, 'Unexpected transaction status in abort');\r\n // We can abort it immediately.\r\n queue[i].unwatcher();\r\n events = events.concat(this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId, true));\r\n if (queue[i].onComplete) {\r\n var snapshot = null;\r\n callbacks.push(queue[i].onComplete.bind(null, new Error('set'), false, snapshot));\r\n }\r\n }\r\n }\r\n if (lastSent === -1) {\r\n // We're not waiting for any sent transactions. We can clear the queue.\r\n node.setValue(null);\r\n }\r\n else {\r\n // Remove the transactions we aborted.\r\n queue.length = lastSent + 1;\r\n }\r\n // Now fire the callbacks.\r\n this.eventQueue_.raiseEventsForChangedPath(node.path(), events);\r\n for (var i = 0; i < callbacks.length; i++) {\r\n exceptionGuard(callbacks[i]);\r\n }\r\n }\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Abstraction around FirebaseApp's token fetching capabilities.\r\n */\r\nvar FirebaseAuthTokenProvider = /** @class */ (function () {\r\n function FirebaseAuthTokenProvider(app_, authProvider_) {\r\n var _this = this;\r\n this.app_ = app_;\r\n this.authProvider_ = authProvider_;\r\n this.auth_ = null;\r\n this.auth_ = authProvider_.getImmediate({ optional: true });\r\n if (!this.auth_) {\r\n authProvider_.get().then(function (auth) { return (_this.auth_ = auth); });\r\n }\r\n }\r\n /**\r\n * @param {boolean} forceRefresh\r\n * @return {!Promise}\r\n */\r\n FirebaseAuthTokenProvider.prototype.getToken = function (forceRefresh) {\r\n if (!this.auth_) {\r\n return Promise.resolve(null);\r\n }\r\n return this.auth_.getToken(forceRefresh).catch(function (error) {\r\n // TODO: Need to figure out all the cases this is raised and whether\r\n // this makes sense.\r\n if (error && error.code === 'auth/token-not-initialized') {\r\n log('Got auth/token-not-initialized error. Treating as null token.');\r\n return null;\r\n }\r\n else {\r\n return Promise.reject(error);\r\n }\r\n });\r\n };\r\n FirebaseAuthTokenProvider.prototype.addTokenChangeListener = function (listener) {\r\n // TODO: We might want to wrap the listener and call it with no args to\r\n // avoid a leaky abstraction, but that makes removing the listener harder.\r\n if (this.auth_) {\r\n this.auth_.addAuthTokenListener(listener);\r\n }\r\n else {\r\n setTimeout(function () { return listener(null); }, 0);\r\n this.authProvider_\r\n .get()\r\n .then(function (auth) { return auth.addAuthTokenListener(listener); });\r\n }\r\n };\r\n FirebaseAuthTokenProvider.prototype.removeTokenChangeListener = function (listener) {\r\n this.authProvider_\r\n .get()\r\n .then(function (auth) { return auth.removeAuthTokenListener(listener); });\r\n };\r\n FirebaseAuthTokenProvider.prototype.notifyForInvalidToken = function () {\r\n var errorMessage = 'Provided authentication credentials for the app named \"' +\r\n this.app_.name +\r\n '\" are invalid. This usually indicates your app was not ' +\r\n 'initialized correctly. ';\r\n if ('credential' in this.app_.options) {\r\n errorMessage +=\r\n 'Make sure the \"credential\" property provided to initializeApp() ' +\r\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\r\n 'project.';\r\n }\r\n else if ('serviceAccount' in this.app_.options) {\r\n errorMessage +=\r\n 'Make sure the \"serviceAccount\" property provided to initializeApp() ' +\r\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\r\n 'project.';\r\n }\r\n else {\r\n errorMessage +=\r\n 'Make sure the \"apiKey\" and \"databaseURL\" properties provided to ' +\r\n 'initializeApp() match the values provided for your app at ' +\r\n 'https://console.firebase.google.com/.';\r\n }\r\n warn(errorMessage);\r\n };\r\n return FirebaseAuthTokenProvider;\r\n}());\r\n/* Auth token provider that the Admin SDK uses to connect to the Emulator. */\r\nvar EmulatorAdminTokenProvider = /** @class */ (function () {\r\n function EmulatorAdminTokenProvider() {\r\n }\r\n EmulatorAdminTokenProvider.prototype.getToken = function (forceRefresh) {\r\n return Promise.resolve({\r\n accessToken: EmulatorAdminTokenProvider.EMULATOR_AUTH_TOKEN\r\n });\r\n };\r\n EmulatorAdminTokenProvider.prototype.addTokenChangeListener = function (listener) {\r\n // Invoke the listener immediately to match the behavior in Firebase Auth\r\n // (see packages/auth/src/auth.js#L1807)\r\n listener(EmulatorAdminTokenProvider.EMULATOR_AUTH_TOKEN);\r\n };\r\n EmulatorAdminTokenProvider.prototype.removeTokenChangeListener = function (listener) { };\r\n EmulatorAdminTokenProvider.prototype.notifyForInvalidToken = function () { };\r\n EmulatorAdminTokenProvider.EMULATOR_AUTH_TOKEN = 'owner';\r\n return EmulatorAdminTokenProvider;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * This variable is also defined in the firebase node.js admin SDK. Before\r\n * modifying this definition, consult the definition in:\r\n *\r\n * https://github.com/firebase/firebase-admin-node\r\n *\r\n * and make sure the two are consistent.\r\n */\r\nvar FIREBASE_DATABASE_EMULATOR_HOST_VAR = 'FIREBASE_DATABASE_EMULATOR_HOST';\r\nvar _staticInstance;\r\n/**\r\n * Creates and caches Repo instances.\r\n */\r\nvar RepoManager = /** @class */ (function () {\r\n function RepoManager() {\r\n /**\r\n * @private {!Object.>}\r\n */\r\n this.repos_ = {};\r\n /**\r\n * If true, new Repos will be created to use ReadonlyRestClient (for testing purposes).\r\n * @private {boolean}\r\n */\r\n this.useRestClient_ = false;\r\n }\r\n RepoManager.getInstance = function () {\r\n if (!_staticInstance) {\r\n _staticInstance = new RepoManager();\r\n }\r\n return _staticInstance;\r\n };\r\n // TODO(koss): Remove these functions unless used in tests?\r\n RepoManager.prototype.interrupt = function () {\r\n var e_1, _a, e_2, _b;\r\n try {\r\n for (var _c = __values(Object.keys(this.repos_)), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var appName = _d.value;\r\n try {\r\n for (var _e = (e_2 = void 0, __values(Object.keys(this.repos_[appName]))), _f = _e.next(); !_f.done; _f = _e.next()) {\r\n var dbUrl = _f.value;\r\n this.repos_[appName][dbUrl].interrupt();\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n };\r\n RepoManager.prototype.resume = function () {\r\n var e_3, _a, e_4, _b;\r\n try {\r\n for (var _c = __values(Object.keys(this.repos_)), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var appName = _d.value;\r\n try {\r\n for (var _e = (e_4 = void 0, __values(Object.keys(this.repos_[appName]))), _f = _e.next(); !_f.done; _f = _e.next()) {\r\n var dbUrl = _f.value;\r\n this.repos_[appName][dbUrl].resume();\r\n }\r\n }\r\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\r\n finally {\r\n try {\r\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\r\n }\r\n finally { if (e_4) throw e_4.error; }\r\n }\r\n }\r\n }\r\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\r\n }\r\n finally { if (e_3) throw e_3.error; }\r\n }\r\n };\r\n /**\r\n * Update an existing repo in place to point to a new host/port.\r\n */\r\n RepoManager.prototype.applyEmulatorSettings = function (repo, host, port) {\r\n repo.repoInfo_ = new RepoInfo(host + \":\" + port, \r\n /* secure= */ false, repo.repoInfo_.namespace, repo.repoInfo_.webSocketOnly, repo.repoInfo_.nodeAdmin, repo.repoInfo_.persistenceKey, repo.repoInfo_.includeNamespaceInQueryParams);\r\n if (repo.repoInfo_.nodeAdmin) {\r\n repo.authTokenProvider_ = new EmulatorAdminTokenProvider();\r\n }\r\n };\r\n /**\r\n * This function should only ever be called to CREATE a new database instance.\r\n *\r\n * @param {!FirebaseApp} app\r\n * @return {!Database}\r\n */\r\n RepoManager.prototype.databaseFromApp = function (app, authProvider, url, nodeAdmin) {\r\n var dbUrl = url || app.options.databaseURL;\r\n if (dbUrl === undefined) {\r\n if (!app.options.projectId) {\r\n fatal(\"Can't determine Firebase Database URL. Be sure to include \" +\r\n ' a Project ID when calling firebase.initializeApp().');\r\n }\r\n log('Using default host for project ', app.options.projectId);\r\n dbUrl = app.options.projectId + \"-default-rtdb.firebaseio.com\";\r\n }\r\n var parsedUrl = parseRepoInfo(dbUrl, nodeAdmin);\r\n var repoInfo = parsedUrl.repoInfo;\r\n var isEmulator;\r\n var dbEmulatorHost = undefined;\r\n if (typeof process !== 'undefined') {\r\n dbEmulatorHost = process.env[FIREBASE_DATABASE_EMULATOR_HOST_VAR];\r\n }\r\n if (dbEmulatorHost) {\r\n isEmulator = true;\r\n dbUrl = \"http://\" + dbEmulatorHost + \"?ns=\" + repoInfo.namespace;\r\n parsedUrl = parseRepoInfo(dbUrl, nodeAdmin);\r\n repoInfo = parsedUrl.repoInfo;\r\n }\r\n else {\r\n isEmulator = !parsedUrl.repoInfo.secure;\r\n }\r\n var authTokenProvider = nodeAdmin && isEmulator\r\n ? new EmulatorAdminTokenProvider()\r\n : new FirebaseAuthTokenProvider(app, authProvider);\r\n validateUrl('Invalid Firebase Database URL', 1, parsedUrl);\r\n if (!parsedUrl.path.isEmpty()) {\r\n fatal('Database URL must point to the root of a Firebase Database ' +\r\n '(not including a child path).');\r\n }\r\n var repo = this.createRepo(repoInfo, app, authTokenProvider);\r\n return repo.database;\r\n };\r\n /**\r\n * Remove the repo and make sure it is disconnected.\r\n *\r\n * @param {!Repo} repo\r\n */\r\n RepoManager.prototype.deleteRepo = function (repo) {\r\n var appRepos = safeGet(this.repos_, repo.app.name);\r\n // This should never happen...\r\n if (!appRepos || safeGet(appRepos, repo.key) !== repo) {\r\n fatal(\"Database \" + repo.app.name + \"(\" + repo.repoInfo_ + \") has already been deleted.\");\r\n }\r\n repo.interrupt();\r\n delete appRepos[repo.key];\r\n };\r\n /**\r\n * Ensures a repo doesn't already exist and then creates one using the\r\n * provided app.\r\n *\r\n * @param {!RepoInfo} repoInfo The metadata about the Repo\r\n * @param {!FirebaseApp} app\r\n * @return {!Repo} The Repo object for the specified server / repoName.\r\n */\r\n RepoManager.prototype.createRepo = function (repoInfo, app, authTokenProvider) {\r\n var appRepos = safeGet(this.repos_, app.name);\r\n if (!appRepos) {\r\n appRepos = {};\r\n this.repos_[app.name] = appRepos;\r\n }\r\n var repo = safeGet(appRepos, repoInfo.toURLString());\r\n if (repo) {\r\n fatal('Database initialized multiple times. Please make sure the format of the database URL matches with each database() call.');\r\n }\r\n repo = new Repo(repoInfo, this.useRestClient_, app, authTokenProvider);\r\n appRepos[repoInfo.toURLString()] = repo;\r\n return repo;\r\n };\r\n /**\r\n * Forces us to use ReadonlyRestClient instead of PersistentConnection for new Repos.\r\n * @param {boolean} forceRestClient\r\n */\r\n RepoManager.prototype.forceRestClient = function (forceRestClient) {\r\n this.useRestClient_ = forceRestClient;\r\n };\r\n return RepoManager;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Class representing a firebase database.\r\n * @implements {FirebaseService}\r\n */\r\nvar Database = /** @class */ (function () {\r\n /**\r\n * The constructor should not be called by users of our public API.\r\n * @param {!Repo} repoInternal_\r\n */\r\n function Database(repoInternal_) {\r\n var _this = this;\r\n this.repoInternal_ = repoInternal_;\r\n /** Track if the instance has been used (root or repo accessed) */\r\n this.instanceStarted_ = false;\r\n this.INTERNAL = {\r\n delete: function () { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n this.checkDeleted_('delete');\r\n RepoManager.getInstance().deleteRepo(this.repo_);\r\n this.repoInternal_ = null;\r\n this.rootInternal_ = null;\r\n return [2 /*return*/];\r\n });\r\n }); }\r\n };\r\n if (!(repoInternal_ instanceof Repo)) {\r\n fatal(\"Don't call new Database() directly - please use firebase.database().\");\r\n }\r\n }\r\n Object.defineProperty(Database.prototype, \"repo_\", {\r\n get: function () {\r\n if (!this.instanceStarted_) {\r\n this.repoInternal_.start();\r\n this.instanceStarted_ = true;\r\n }\r\n return this.repoInternal_;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Database.prototype, \"root_\", {\r\n get: function () {\r\n if (!this.rootInternal_) {\r\n this.rootInternal_ = new Reference(this.repo_, Path.Empty);\r\n }\r\n return this.rootInternal_;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Database.prototype, \"app\", {\r\n get: function () {\r\n return this.repo_.app;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Modify this instance to communicate with the Realtime Database emulator.\r\n *\r\n *

Note: This method must be called before performing any other operation.\r\n *\r\n * @param host the emulator host (ex: localhost)\r\n * @param port the emulator port (ex: 8080)\r\n */\r\n Database.prototype.useEmulator = function (host, port) {\r\n this.checkDeleted_('useEmulator');\r\n if (this.instanceStarted_) {\r\n fatal('Cannot call useEmulator() after instance has already been initialized.');\r\n return;\r\n }\r\n // Modify the repo to apply emulator settings\r\n RepoManager.getInstance().applyEmulatorSettings(this.repoInternal_, host, port);\r\n };\r\n Database.prototype.ref = function (path) {\r\n this.checkDeleted_('ref');\r\n validateArgCount('database.ref', 0, 1, arguments.length);\r\n if (path instanceof Reference) {\r\n return this.refFromURL(path.toString());\r\n }\r\n return path !== undefined ? this.root_.child(path) : this.root_;\r\n };\r\n /**\r\n * Returns a reference to the root or the path specified in url.\r\n * We throw a exception if the url is not in the same domain as the\r\n * current repo.\r\n * @param {string} url\r\n * @return {!Reference} Firebase reference.\r\n */\r\n Database.prototype.refFromURL = function (url) {\r\n /** @const {string} */\r\n var apiName = 'database.refFromURL';\r\n this.checkDeleted_(apiName);\r\n validateArgCount(apiName, 1, 1, arguments.length);\r\n var parsedURL = parseRepoInfo(url, this.repo_.repoInfo_.nodeAdmin);\r\n validateUrl(apiName, 1, parsedURL);\r\n var repoInfo = parsedURL.repoInfo;\r\n if (!repoInfo.isCustomHost() && repoInfo.host !== this.repo_.repoInfo_.host) {\r\n fatal(apiName +\r\n ': Host name does not match the current database: ' +\r\n '(found ' +\r\n repoInfo.host +\r\n ' but expected ' +\r\n this.repo_.repoInfo_.host +\r\n ')');\r\n }\r\n return this.ref(parsedURL.path.toString());\r\n };\r\n /**\r\n * @param {string} apiName\r\n */\r\n Database.prototype.checkDeleted_ = function (apiName) {\r\n if (this.repoInternal_ === null) {\r\n fatal('Cannot call ' + apiName + ' on a deleted database.');\r\n }\r\n };\r\n // Make individual repo go offline.\r\n Database.prototype.goOffline = function () {\r\n validateArgCount('database.goOffline', 0, 0, arguments.length);\r\n this.checkDeleted_('goOffline');\r\n this.repo_.interrupt();\r\n };\r\n Database.prototype.goOnline = function () {\r\n validateArgCount('database.goOnline', 0, 0, arguments.length);\r\n this.checkDeleted_('goOnline');\r\n this.repo_.resume();\r\n };\r\n Database.ServerValue = {\r\n TIMESTAMP: {\r\n '.sv': 'timestamp'\r\n },\r\n increment: function (delta) {\r\n return {\r\n '.sv': {\r\n 'increment': delta\r\n }\r\n };\r\n }\r\n };\r\n return Database;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * INTERNAL methods for internal-use only (tests, etc.).\r\n *\r\n * Customers shouldn't use these or else should be aware that they could break at any time.\r\n *\r\n * @const\r\n */\r\nvar forceLongPolling = function () {\r\n WebSocketConnection.forceDisallow();\r\n BrowserPollConnection.forceAllow();\r\n};\r\nvar forceWebSockets = function () {\r\n BrowserPollConnection.forceDisallow();\r\n};\r\n/* Used by App Manager */\r\nvar isWebSocketsAvailable = function () {\r\n return WebSocketConnection['isAvailable']();\r\n};\r\nvar setSecurityDebugCallback = function (ref, callback) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n ref.repo.persistentConnection_.securityDebugCallback_ = callback;\r\n};\r\nvar stats = function (ref, showDelta) {\r\n ref.repo.stats(showDelta);\r\n};\r\nvar statsIncrementCounter = function (ref, metric) {\r\n ref.repo.statsIncrementCounter(metric);\r\n};\r\nvar dataUpdateCount = function (ref) {\r\n return ref.repo.dataUpdateCount;\r\n};\r\nvar interceptServerData = function (ref, callback) {\r\n return ref.repo.interceptServerData_(callback);\r\n};\r\n/**\r\n * Used by console to create a database based on the app,\r\n * passed database URL and a custom auth implementation.\r\n *\r\n * @param app A valid FirebaseApp-like object\r\n * @param url A valid Firebase databaseURL\r\n * @param version custom version e.g. firebase-admin version\r\n * @param customAuthImpl custom auth implementation\r\n */\r\nfunction initStandalone(_a) {\r\n var app = _a.app, url = _a.url, version = _a.version, customAuthImpl = _a.customAuthImpl, namespace = _a.namespace, _b = _a.nodeAdmin, nodeAdmin = _b === void 0 ? false : _b;\r\n setSDKVersion(version);\r\n /**\r\n * ComponentContainer('database-standalone') is just a placeholder that doesn't perform\r\n * any actual function.\r\n */\r\n var authProvider = new Provider('auth-internal', new ComponentContainer('database-standalone'));\r\n authProvider.setComponent(new Component('auth-internal', function () { return customAuthImpl; }, \"PRIVATE\" /* PRIVATE */));\r\n return {\r\n instance: RepoManager.getInstance().databaseFromApp(app, authProvider, url, nodeAdmin),\r\n namespace: namespace\r\n };\r\n}\n\nvar INTERNAL = /*#__PURE__*/Object.freeze({\n __proto__: null,\n forceLongPolling: forceLongPolling,\n forceWebSockets: forceWebSockets,\n isWebSocketsAvailable: isWebSocketsAvailable,\n setSecurityDebugCallback: setSecurityDebugCallback,\n stats: stats,\n statsIncrementCounter: statsIncrementCounter,\n dataUpdateCount: dataUpdateCount,\n interceptServerData: interceptServerData,\n initStandalone: initStandalone\n});\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DataConnection = PersistentConnection;\r\n/**\r\n * @param {!string} pathString\r\n * @param {function(*)} onComplete\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nPersistentConnection.prototype.simpleListen = function (pathString, onComplete) {\r\n this.sendRequest('q', { p: pathString }, onComplete);\r\n};\r\n/**\r\n * @param {*} data\r\n * @param {function(*)} onEcho\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nPersistentConnection.prototype.echo = function (data, onEcho) {\r\n this.sendRequest('echo', { d: data }, onEcho);\r\n};\r\n// RealTimeConnection properties that we use in tests.\r\nvar RealTimeConnection = Connection;\r\n/**\r\n * @param {function(): string} newHash\r\n * @return {function()}\r\n */\r\nvar hijackHash = function (newHash) {\r\n var oldPut = PersistentConnection.prototype.put;\r\n PersistentConnection.prototype.put = function (pathString, data, onComplete, hash) {\r\n if (hash !== undefined) {\r\n hash = newHash();\r\n }\r\n oldPut.call(this, pathString, data, onComplete, hash);\r\n };\r\n return function () {\r\n PersistentConnection.prototype.put = oldPut;\r\n };\r\n};\r\n/**\r\n * @type {function(new:RepoInfo, !string, boolean, !string, boolean): undefined}\r\n */\r\nvar ConnectionTarget = RepoInfo;\r\n/**\r\n * @param {!Query} query\r\n * @return {!string}\r\n */\r\nvar queryIdentifier = function (query) {\r\n return query.queryIdentifier();\r\n};\r\n/**\r\n * Forces the RepoManager to create Repos that use ReadonlyRestClient instead of PersistentConnection.\r\n *\r\n * @param {boolean} forceRestClient\r\n */\r\nvar forceRestClient = function (forceRestClient) {\r\n RepoManager.getInstance().forceRestClient(forceRestClient);\r\n};\n\nvar TEST_ACCESS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n DataConnection: DataConnection,\n RealTimeConnection: RealTimeConnection,\n hijackHash: hijackHash,\n ConnectionTarget: ConnectionTarget,\n queryIdentifier: queryIdentifier,\n forceRestClient: forceRestClient\n});\n\nvar name = \"@firebase/database\";\nvar version = \"0.7.1\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar ServerValue = Database.ServerValue;\r\nfunction registerDatabase(instance) {\r\n // set SDK_VERSION\r\n setSDKVersion(instance.SDK_VERSION);\r\n // Register the Database Service with the 'firebase' namespace.\r\n var namespace = instance.INTERNAL.registerComponent(new Component('database', function (container, url) {\r\n /* Dependencies */\r\n // getImmediate for FirebaseApp will always succeed\r\n var app = container.getProvider('app').getImmediate();\r\n var authProvider = container.getProvider('auth-internal');\r\n return RepoManager.getInstance().databaseFromApp(app, authProvider, url);\r\n }, \"PUBLIC\" /* PUBLIC */)\r\n .setServiceProps(\r\n // firebase.database namespace properties\r\n {\r\n Reference: Reference,\r\n Query: Query,\r\n Database: Database,\r\n DataSnapshot: DataSnapshot,\r\n enableLogging: enableLogging,\r\n INTERNAL: INTERNAL,\r\n ServerValue: ServerValue,\r\n TEST_ACCESS: TEST_ACCESS\r\n })\r\n .setMultipleInstances(true));\r\n instance.registerVersion(name, version);\r\n if (isNodeSdk()) {\r\n module.exports = namespace;\r\n }\r\n}\r\nregisterDatabase(firebase);\n\nexport { DataSnapshot, Database, OnDisconnect, Query, Reference, ServerValue, enableLogging, registerDatabase };\n//# sourceMappingURL=index.esm.js.map\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"btn registration_next\",class:{ outlined: _vm.mode === 'outline' },style:({ backgroundColor: _vm.color, color: _vm.textColor }),attrs:{\"href\":\"\"}},[_vm._t(\"default\"),(_vm.loading)?_c('i',{staticClass:\"fa fa-spin fa-spinner\",staticStyle:{\"color\":\"white\"}}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Primary_button.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Primary_button.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Primary_button.vue?vue&type=template&id=736c1652&scoped=true&\"\nimport script from \"./Primary_button.vue?vue&type=script&lang=js&\"\nexport * from \"./Primary_button.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Primary_button.vue?vue&type=style&index=0&id=736c1652&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"736c1652\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}