{"version":3,"sources":["webpack:///firebase-app.js","webpack:/webpack/bootstrap bf3c0ec1426a3a2c231f","webpack:///util/dist/cjs/index.js","webpack:///app/dist/esm/src/firebaseApp.js","webpack:///app/dist/esm/index.js","webpack:///(webpack)/buildin/global.js","webpack:///util/dist/cjs/src/constants.js","webpack:///usr/local/google/home/jshcrowthe/Repos/firebase-js-sdk/node_modules/process/browser.js","webpack:///util/dist/cjs/src/assert.js","webpack:///util/dist/cjs/src/crypt.js","webpack:///util/dist/cjs/src/json.js","webpack:///util/dist/cjs/src/obj.js","webpack:///app/index.js","webpack:///polyfill/dist/esm/index.js","webpack:///polyfill/dist/esm/src/polyfills/promise.js","webpack:///usr/local/google/home/jshcrowthe/Repos/firebase-js-sdk/node_modules/promise-polyfill/promise.js","webpack:///usr/local/google/home/jshcrowthe/Repos/firebase-js-sdk/node_modules/timers-browserify/main.js","webpack:///usr/local/google/home/jshcrowthe/Repos/firebase-js-sdk/node_modules/setimmediate/setImmediate.js","webpack:///polyfill/dist/esm/src/shims/find.js","webpack:///polyfill/dist/esm/src/shims/findIndex.js","webpack:///util/dist/cjs/src/deepCopy.js","webpack:///util/dist/cjs/src/deferred.js","webpack:///util/dist/cjs/src/environment.js","webpack:///util/dist/cjs/src/errors.js","webpack:///util/dist/cjs/src/jwt.js","webpack:///util/dist/cjs/src/query.js","webpack:///util/dist/cjs/src/sha1.js","webpack:///util/dist/cjs/src/hash.js","webpack:///util/dist/cjs/src/subscribe.js","webpack:///util/dist/cjs/src/validation.js","webpack:///util/dist/cjs/src/utf8.js","webpack:///firebase-auth.js","webpack:///auth/index.js","webpack:///auth/dist/auth.js","webpack:///firebase-database.js","webpack:///database/dist/cjs/src/core/util/util.js","webpack:///database/dist/cjs/src/core/util/Path.js","webpack:///database/dist/cjs/src/core/snap/indexes/PriorityIndex.js","webpack:///database/dist/cjs/src/core/snap/ChildrenNode.js","webpack:///database/dist/cjs/src/core/snap/Node.js","webpack:///database/dist/cjs/src/core/util/validation.js","webpack:///database/dist/cjs/src/core/operation/Operation.js","webpack:///database/dist/cjs/src/core/view/Change.js","webpack:///database/dist/cjs/src/core/snap/indexes/KeyIndex.js","webpack:///database/dist/cjs/src/core/snap/nodeFromJSON.js","webpack:///database/dist/cjs/src/core/storage/storage.js","webpack:///database/dist/cjs/src/realtime/Constants.js","webpack:///database/dist/cjs/src/core/snap/indexes/Index.js","webpack:///database/dist/cjs/src/core/snap/LeafNode.js","webpack:///database/dist/cjs/src/core/util/SortedMap.js","webpack:///database/dist/cjs/src/core/Repo.js","webpack:///database/dist/cjs/src/core/view/CacheNode.js","webpack:///database/dist/cjs/src/api/Reference.js","webpack:///database/dist/cjs/src/core/util/ImmutableTree.js","webpack:///database/dist/cjs/src/core/view/filter/IndexedFilter.js","webpack:///database/dist/cjs/src/core/stats/StatsManager.js","webpack:///database/dist/cjs/src/core/RepoManager.js","webpack:///database/dist/cjs/src/api/Database.js","webpack:///database/dist/cjs/src/core/util/libs/parser.js","webpack:///database/dist/cjs/src/core/RepoInfo.js","webpack:///database/dist/cjs/src/api/Query.js","webpack:///database/dist/cjs/src/core/snap/snap.js","webpack:///database/dist/cjs/src/core/snap/indexes/ValueIndex.js","webpack:///database/dist/cjs/src/core/snap/IndexMap.js","webpack:///database/dist/cjs/src/core/snap/childSet.js","webpack:///database/dist/cjs/src/core/snap/comparators.js","webpack:///database/dist/cjs/src/core/snap/indexes/PathIndex.js","webpack:///database/dist/cjs/src/api/DataSnapshot.js","webpack:///database/dist/cjs/src/core/util/ServerValues.js","webpack:///database/dist/cjs/src/core/SparseSnapshotTree.js","webpack:///database/dist/cjs/src/core/util/CountedSet.js","webpack:///database/dist/cjs/src/core/operation/Overwrite.js","webpack:///database/dist/cjs/src/core/SyncPoint.js","webpack:///database/dist/cjs/src/core/view/ViewCache.js","webpack:///database/dist/cjs/src/core/stats/StatsListener.js","webpack:///database/dist/cjs/src/core/PersistentConnection.js","webpack:///database/dist/cjs/src/core/util/EventEmitter.js","webpack:///database/dist/cjs/src/realtime/Connection.js","webpack:///database/dist/cjs/src/realtime/BrowserPollConnection.js","webpack:///database/dist/cjs/src/realtime/WebSocketConnection.js","webpack:///database/dist/cjs/src/core/ServerActions.js","webpack:///database/dist/cjs/src/core/view/filter/RangedFilter.js","webpack:///database/index.js","webpack:///database/dist/cjs/index.js","webpack:///database/dist/cjs/src/core/storage/DOMStorageWrapper.js","webpack:///database/dist/cjs/src/core/storage/MemoryStorage.js","webpack:///database/dist/cjs/src/api/onDisconnect.js","webpack:///database/dist/cjs/src/api/TransactionResult.js","webpack:///database/dist/cjs/src/core/util/NextPushId.js","webpack:///database/dist/cjs/src/core/view/EventRegistration.js","webpack:///database/dist/cjs/src/core/view/Event.js","webpack:///database/dist/cjs/src/core/SyncTree.js","webpack:///database/dist/cjs/src/core/operation/AckUserWrite.js","webpack:///database/dist/cjs/src/core/operation/ListenComplete.js","webpack:///database/dist/cjs/src/core/operation/Merge.js","webpack:///database/dist/cjs/src/core/view/View.js","webpack:///database/dist/cjs/src/core/view/ViewProcessor.js","webpack:///database/dist/cjs/src/core/view/ChildChangeAccumulator.js","webpack:///database/dist/cjs/src/core/view/CompleteChildSource.js","webpack:///database/dist/cjs/src/core/view/EventGenerator.js","webpack:///database/dist/cjs/src/core/WriteTree.js","webpack:///database/dist/cjs/src/core/CompoundWrite.js","webpack:///database/dist/cjs/src/core/SnapshotHolder.js","webpack:///database/dist/cjs/src/core/AuthTokenProvider.js","webpack:///database/dist/cjs/src/core/stats/StatsCollection.js","webpack:///database/dist/cjs/src/core/stats/StatsReporter.js","webpack:///database/dist/cjs/src/core/view/EventQueue.js","webpack:///database/dist/cjs/src/core/util/VisibilityMonitor.js","webpack:///database/dist/cjs/src/core/util/OnlineMonitor.js","webpack:///database/dist/cjs/src/realtime/TransportManager.js","webpack:///database/dist/cjs/src/realtime/polling/PacketReceiver.js","webpack:///database/dist/cjs/src/core/ReadonlyRestClient.js","webpack:///database/dist/cjs/src/core/view/QueryParams.js","webpack:///database/dist/cjs/src/core/view/filter/LimitedFilter.js","webpack:///database/dist/cjs/src/core/Repo_transaction.js","webpack:///database/dist/cjs/src/core/util/Tree.js","webpack:///database/dist/cjs/src/api/internal.js","webpack:///database/dist/cjs/src/api/test_access.js","webpack:///firebase-messaging.js","webpack:///messaging/index.js","webpack:///messaging/dist/esm/src/helpers/array-buffer-to-base64.js","webpack:///messaging/dist/esm/index.js","webpack:///messaging/dist/esm/src/models/errors.js","webpack:///messaging/dist/esm/src/models/fcm-details.js","webpack:///messaging/dist/esm/src/models/token-manager.js","webpack:///messaging/dist/esm/src/controllers/controller-interface.js","webpack:///messaging/dist/esm/src/models/worker-page-message.js","webpack:///messaging/dist/esm/src/models/default-sw.js","webpack:///messaging/dist/esm/src/controllers/window-controller.js","webpack:///messaging/dist/esm/src/controllers/sw-controller.js","webpack:///firebase-storage.js","webpack:///storage/index.js","webpack:///storage/dist/esm/src/implementation/error.js","webpack:///storage/dist/esm/src/implementation/string.js","webpack:///storage/dist/esm/src/implementation/taskenums.js","webpack:///storage/dist/esm/src/implementation/object.js","webpack:///storage/dist/esm/src/implementation/promise_external.js","webpack:///storage/dist/esm/src/implementation/type.js","webpack:///storage/dist/esm/src/implementation/json.js","webpack:///storage/dist/esm/src/implementation/path.js","webpack:///storage/dist/esm/src/implementation/url.js","webpack:///storage/dist/esm/src/implementation/metadata.js","webpack:///storage/dist/esm/src/implementation/args.js","webpack:///storage/dist/esm/src/implementation/fs.js","webpack:///storage/dist/esm/src/implementation/array.js","webpack:///storage/dist/esm/src/implementation/requests.js","webpack:///storage/dist/esm/src/implementation/async.js","webpack:///storage/dist/esm/src/implementation/backoff.js","webpack:///storage/dist/esm/src/implementation/request.js","webpack:///storage/dist/esm/index.js","webpack:///storage/dist/esm/src/implementation/xhrio.js","webpack:///storage/dist/esm/src/implementation/constants.js","webpack:///storage/dist/esm/src/implementation/xhrio_network.js","webpack:///storage/dist/esm/src/implementation/xhriopool.js","webpack:///storage/dist/esm/src/implementation/location.js","webpack:///storage/dist/esm/src/implementation/blob.js","webpack:///storage/dist/esm/src/implementation/requestinfo.js","webpack:///storage/dist/esm/src/implementation/observer.js","webpack:///storage/dist/esm/src/tasksnapshot.js","webpack:///storage/dist/esm/src/task.js","webpack:///storage/dist/esm/src/reference.js","webpack:///storage/dist/esm/src/implementation/failrequest.js","webpack:///storage/dist/esm/src/implementation/requestmap.js","webpack:///storage/dist/esm/src/implementation/authwrapper.js","webpack:///storage/dist/esm/src/service.js"],"names":["firebase","window","self","modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","parentJsonpFunction","chunkIds","moreModules","executeModules","chunkId","result","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","s","5","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","undefined","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","createElement","type","charset","async","nc","setAttribute","src","p","setTimeout","appendChild","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error","__export","value","__webpack_exports__","createFirebaseNamespace","removeApp","callAppHooks","apps_","app","DEFAULT_ENTRY_NAME","contains","initializeApp","options","firebaseApp_FirebaseAppImpl","namespace","getApps","keys","map","registerService","createService","serviceProperties","appHook","allowMultipleInstances","factories","appHooks","forEach","serviceNamespace","appArg","cjs","args","_i","arguments","this","_getService","bind","apply","extendNamespace","props","eventName","serviceName","factoryName","useAsService","useService","apps","SDK_VERSION","INTERNAL","createSubscribe","ErrorFactory","deepExtend","code","appErrors","create","obj","key","tokenListeners","FirebaseAppImpl","firebase_","isDeleted_","services_","name_","options_","getUid","getToken","addAuthTokenListener","callback","removeAuthTokenListener","filter","listener","checkDestroyed_","delete","_this","then","services","serviceKey","instanceKey","all","service","instanceIdentifier","instanceSpecifier","extendApp","log","errors","no-app","bad-app-name","duplicate-app","app-deleted","duplicate-service","sa-not-supported","invalid-app-argument","g","Function","eval","CONSTANTS","NODE_CLIENT","NODE_ADMIN","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","len","run","Item","array","noop","process","nextTick","Array","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","constants_1","assert","assertion","message","assertionError","stringToByteArray","str","output","charCodeAt","byteArrayToString","bytes","String","fromCharCode","slice","base64","y","b","_","ENCODED_VALS_BASE","ENCODED_VALS","ENCODED_VALS_WEBSAFE","HAS_NATIVE_SUPPORT","atob","encodeByteArray","input","opt_webSafe","isArray","init_","byteToCharMap","byteToCharMapWebSafe_","byteToCharMap_","byte1","haveByte2","byte2","haveByte3","byte3","outByte1","outByte2","outByte3","outByte4","join","encodeString","btoa","decodeString","decodeStringToByteArray","charToByteMap","charToByteMapWebSafe_","charToByteMap_","charAt","haveByte4","byte4","O","base64Encode","utf8Bytes","base64Decode","jsonEval","JSON","parse","stringify","data","safeGet","fn","extend","objTo","objFrom","clone","isNonNullObject","isEmpty","getCount","rv","f","opt_obj","res","findKey","opt_this","findValue","getAnyKey","getValues","every","default","__WEBPACK_IMPORTED_MODULE_0__src_polyfills_promise__","__WEBPACK_IMPORTED_MODULE_1__src_shims_find__","__WEBPACK_IMPORTED_MODULE_2__src_shims_findIndex__","global","__global","setImmediate","root","thisArg","TypeError","_state","_handled","_value","_deferreds","doResolve","handle","deferred","_immediateFn","cb","onFulfilled","onRejected","ret","newValue","finale","_unhandledRejectionFn","Handler","done","reason","ex","setTimeoutFunc","prom","arr","val","remaining","constructor","race","values","warn","_setImmediateFn","_setUnhandledRejectionFn","Timeout","id","clearFn","_id","_clearFn","setInterval","clearInterval","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","task","tasksByHandle","nextHandle","registerImmediate","runIfPresent","currentlyRunningATask","doc","attachTo","getPrototypeOf","toString","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","messagePrefix","Math","random","onGlobalMessage","event","source","indexOf","addEventListener","attachEvent","MessageChannel","channel","port1","port2","html","documentElement","onreadystatechange","removeChild","find","predicate","k","kValue","findIndex","deepCopy","target","Date","dateValue","getTime","prop","patchProperty","Deferred","wrapCallback","catch","getUA","navigator","isMobileCordova","test","isReactNative","isNodeSdk","patchCapture","captureFake","captureStackTrace","ERROR_NAME","FirebaseError","err_1","stack","pattern","template","fullCode","replace","match","crypt_1","json_1","decode","token","header","claims","signature","parts","split","isValidTimestamp","validSince","validUntil","now","floor","issuedAtTime","isValidFormat","decoded","isAdmin","obj_1","querystring","querystringParams","params","arrayVal","encodeURIComponent","querystringDecode","__extends","extendStatics","setPrototypeOf","__proto__","__","hash_1","Sha1","_super","chain_","buf_","W_","pad_","inbuf_","total_","blockSize","reset","compress_","buf","opt_offset","W","t","a","update","opt_length","lengthMinusBlock","inbuf","digest","totalBits","j","Hash","executor","onNoObservers","proxy","ObserverProxy","subscribe","onError","implementsAnyMethods","methods","methods_1","method","observers","unsubscribes","observerCount","finalized","next","forEachObserver","observer","complete","nextOrObserver","unsub","unsubscribeOne","finalError","sendOne","errorPrefix","fnName","argumentNumber","optional","argName","validateNamespace","validateCallback","validateContextObject","context","validateArgCount","minCount","maxCount","argCount","argError","assert_1","out","high","stringLength","webpackJsonpFirebase","75","76","h","aa","ba","ca","da","ea","splice","propertyIsEnumerable","fa","ha","ia","q","ja","ka","unshift","r","la","ma","Vc","Ng","u","na","oa","trim","wa","pa","qa","ra","sa","ta","ua","va","v","xa","ya","za","w","Aa","Ba","Ca","Da","Fa","Uc","gf","Ea","qb","ob","Ga","Ha","Ja","Mc","hf","Ia","bb","Ka","Ma","La","Na","Oa","Pa","max","x","Qa","Ra","Sa","some","Ua","Ta","Va","Xa","Wa","Ya","Za","$a","ab","db","userAgent","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","wb","pb","z","rb","sb","tb","toLowerCase","ub","vb","documentMode","xb","yb","exec","Ab","parseFloat","Cb","Bb","A","parseInt","Db","compatMode","Kb","Eb","Fb","Hb","Gb","Ib","Jb","Mb","rc","Uint8Array","Yc","$f","Ee","Bg","Int32Array","Lb","Nb","Ob","Pb","Qb","F","zb","hc","vi","Sb","Rb","Tb","freeze","Ub","Jc","isDisposed","Vb","Wb","Xb","removeEventListener","B","currentTarget","defaultPrevented","Se","stopPropagation","preventDefault","Yb","relatedTarget","button","screenY","screenX","clientY","clientX","offsetY","offsetX","charCode","keyCode","metaKey","shiftKey","altKey","ctrlKey","state","pointerId","pointerType","P","init","Zb","2","3","4","changedTouches","srcElement","nodeName","fromElement","toElement","layerX","layerY","pageX","pageY","cancelBubble","returnValue","Ef","$b","ac","bc","Nc","capture","wc","qc","cc","dc","I","kc","add","ec","remove","fc","td","hasListener","gc","ic","jc","lc","mc","listen","oc","pc","sc","tc","ga","uc","detachEvent","vc","parentNode","xc","handleEvent","yc","Ac","ff","zc","Bc","Cc","Ec","Dc","Hc","Fc","Gc","Oc","Number","Boolean","Ic","valueOf","isFinite","isNaN","\"","\\","/","\b","\f","\n","\r","\t","\u000b","Kc","substr","Lc","ie","Cd","Pc","ActiveXObject","XMLHttpRequest","De","Qc","XDomainRequest","Rc","readyState","responseText","status","statusText","responseXML","If","ye","onprogress","Jf","ontimeout","Kf","open","send","abort","setRequestHeader","getResponseHeader","contentType","Sc","getAllResponseHeaders","Tc","Vf","tf","kg","put","Wc","style","display","contentWindow","write","location","protocol","host","origin","me","Xc","cd","Zc","set","scope","rd","$c","dd","ad","bd","ed","Window","fd","displayName","gd","ownerDocument","defaultView","parentWindow","hd","jd","ef","kd","Qf","ld","HTMLScriptElement","Element","md","getElementById","od","cssText","className","htmlFor","nd","lastIndexOf","cellpadding","cellspacing","colspan","frameborder","height","maxlength","nonce","role","rowspan","usemap","valign","width","qd","pd","createTextNode","nodeType","sd","$goog_Thenable","C","ud","vd","wd","child","xd","yd","D","E","Ad","zd","Bd","Df","Dd","Fd","Ed","cancel","Gd","Hd","Id","Jd","yg","zg","Kd","Ld","yf","Md","Nd","Od","Le","qe","ae","ge","Pd","Qd","Rd","Sd","Ud","Td","Vd","Xd","Wd","Yd","Zd","$d","xg","ee","Te","be","ce","Og","attributes","de","tagName","fe","se","Zf","Ue","he","Je","ze","je","ke","le","getName","getParent","ne","timeStamp","msWriteProfilerMark","info","config","pe","G","kf","dispatchEvent","re","te","StopIteration","ue","jf","H","ve","addAll","we","xe","clear","Ae","Be","Ce","substring","decodeURIComponent","headers","Ie","fg","df","Fe","Ge","R","He","toUpperCase","Pe","Oe","upload","FormData","responseType","withCredentials","Ke","Me","Ne","bg","Qe","Re","lengthComputable","loaded","total","getResponse","response","mozResponseArrayBuffer","Uf","J","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","pop","K","removeParameter","decodeURI","encodeURI","V","lf","nf","mf","qf","of","Jg","Kg","Lg","pf","firebaseEndpoint","secureTokenEndpoint","rf","L","sf","href","uf","wf","vf","xf","zf","screen","availHeight","availWidth","top","left","resizable","statusbar","toolbar","scrollbars","standalone","HTMLAnchorElement","Location","noreferrer","createEvent","initMouseEvent","opener","focus","Af","closed","Bf","Cf","Ff","Gf","Hf","Eg","Gg","sort","M","Mf","localStorage","Lf","setItem","removeItem","indexedDB","Of","Nf","Pf","Rf","Sf","Tf","___jsl","CP","onLine","connection","Wf","tg","Yf","Xf","visibilityState","ag","abcd","N","cg","dg","eg","gg","hg","ig","Fg","providerId","Hg","Ig","Mg","jg","toJSON","lg","argument-error","app-not-authorized","app-not-installed","captcha-check-failed","code-expired","cordova-not-ready","cors-unsupported","credential-already-in-use","custom-token-mismatch","requires-recent-login","dynamic-link-not-activated","email-already-in-use","expired-action-code","cancelled-popup-request","internal-error","invalid-app-credential","invalid-app-id","invalid-user-token","invalid-auth-event","invalid-verification-code","invalid-continue-uri","invalid-cordova-configuration","invalid-custom-token","invalid-email","invalid-api-key","invalid-credential","invalid-persistence-type","invalid-message-payload","invalid-oauth-provider","invalid-oauth-client-id","unauthorized-domain","invalid-action-code","wrong-password","invalid-phone-number","invalid-recipient-email","invalid-sender","invalid-verification-id","missing-android-pkg-name","auth-domain-config-required","missing-app-credential","missing-verification-code","missing-continue-uri","missing-iframe-start","missing-ios-bundle-id","missing-phone-number","missing-verification-id","account-exists-with-different-credential","network-request-failed","no-auth-event","no-such-provider","operation-not-allowed","operation-not-supported-in-this-environment","popup-blocked","popup-closed-by-user","provider-already-linked","quota-exceeded","redirect-cancelled-by-user","redirect-operation-pending","user-token-expired","too-many-requests","unauthorized-continue-uri","unsupported-persistence-type","user-cancelled","user-not-found","user-disabled","user-mismatch","user-signed-out","weak-password","web-storage-unsupported","mg","getError","eventId","urlResponse","sessionId","ng","og","pg","sub","email","provider_id","is_anonymous","getEmail","isAnonymous","qg","idToken","iss","aud","exp","rg","accessToken","oauthToken","oauthTokenSecret","sg","ug","vg","id_token","access_token","secret","oauth_token_secret","postBody","requestUri","oauthIdToken","oauthAccessToken","wg","isOAuthProvider","setCustomParameters","addScope","credential","Ag","Cg","Dg","Q","password","PROVIDER_ID","verificationId","phoneNumber","S","verifyPhoneNumber","operation","verificationCode","temporaryProof","sessionInfo","auth","verify","recaptchaToken","Pg","Qg","Rg","Sg","Tg","Ug","Zg","node","secureTokenTimeout","Vg","secureTokenHeaders","Wg","firebaseTimeout","Xg","firebaseHeaders","Yg","Content-Type","$g","ah","ch","bh","dh","eh","gapi","client","request","setApiKey","setToken","path","body","authType","gh","grant_type","refresh_token","fh","hh","ih","jh","lh","kh","identifier","continueUri","allProviders","nh","mh","authorizedDomains","oh","ph","signInAnonymously","qh","updateEmail","rh","updatePassword","sh","photoUrl","updateProfile","deleteAttribute","sendPasswordResetEmail","requestType","th","sendEmailVerification","uh","vh","xh","wh","deleteProvider","yh","zh","needConfirmation","errorMessage","returnIdpCredential","Ah","Bh","autoCreate","Ch","Dh","oobCode","confirmPasswordReset","Eh","newPassword","checkActionCode","Fh","applyActionCode","Gh","endpoint","$","Hh","Ih","Jh","Kh","recaptchaSiteKey","Lh","USER_NOT_FOUND","returnSecureToken","keyInvalid","ipRefererBlocked","INVALID_CUSTOM_TOKEN","CREDENTIAL_MISMATCH","MISSING_CUSTOM_TOKEN","INVALID_IDENTIFIER","MISSING_CONTINUE_URI","INVALID_EMAIL","INVALID_PASSWORD","USER_DISABLED","MISSING_PASSWORD","EMAIL_EXISTS","PASSWORD_LOGIN_DISABLED","INVALID_IDP_RESPONSE","FEDERATED_USER_ID_ALREADY_LINKED","INVALID_MESSAGE_PAYLOAD","INVALID_RECIPIENT_EMAIL","INVALID_SENDER","EMAIL_NOT_FOUND","EXPIRED_OOB_CODE","INVALID_OOB_CODE","MISSING_OOB_CODE","CREDENTIAL_TOO_OLD_LOGIN_AGAIN","INVALID_ID_TOKEN","TOKEN_EXPIRED","CORS_UNSUPPORTED","DYNAMIC_LINK_NOT_ACTIVATED","INVALID_APP_ID","TOO_MANY_ATTEMPTS_TRY_LATER","WEAK_PASSWORD","OPERATION_NOT_ALLOWED","USER_CANCELLED","CAPTCHA_CHECK_FAILED","INVALID_APP_CREDENTIAL","INVALID_CODE","INVALID_PHONE_NUMBER","INVALID_SESSION_INFO","INVALID_TEMPORARY_PROOF","MISSING_APP_CREDENTIAL","MISSING_CODE","MISSING_PHONE_NUMBER","MISSING_SESSION_INFO","QUOTA_EXCEEDED","SESSION_EXPIRED","INVALID_CONTINUE_URI","MISSING_ANDROID_PACKAGE_NAME","MISSING_IOS_BUNDLE_ID","UNAUTHORIZED_DOMAIN","INVALID_OAUTH_CLIENT_ID","Nh","Mh","Oh","where","url","messageHandlersFilter","position","dontclear","restyle","setHideOnLeave","Ph","ping","sendMessage","Qh","register","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","RegExp","Zh","$h","ai","bi","authEvent","webStorageSupport","ci","theme","sitekey","size","hasChildNodes","di","ei","fi","render","gi","grecaptcha","execute","firstChild","hi","ii","Infinity","hl","ji","ki","apiKey","li","reactNative","AsyncStorage","getItem","mi","oi","ni","pi","ri","qi","sessionStorage","ti","si","Y","ui","errorCode","onupgradeneeded","createObjectStore","keyPath","onsuccess","wi","xi","objectStore","yi","transaction","zi","getAll","openCursor","Ei","Di","Browser","Ai","Node","Bi","ReactNative","Ci","Fi","android","packageName","installApp","minimumVersion","iOS","bundleId","handleCodeInApp","Gi","continueUrl","canHandleCodeInApp","androidPackageName","androidMinimumVersion","androidInstallApp","iOSBundleId","Hi","confirm","Ii","Ji","newEmail","fromEmail","Ki","start","Li","Mi","stop","Si","Ni","Oi","Pi","Qi","Ri","rawUserInfo","profile","login","screenName","Wi","Ti","LOCAL","NONE","SESSION","Ui","Vi","X","Xi","Yi","Zi","$i","oldValue","aj","bj","cj","dj","ej","fj","gj","hj","ij","jj","kj","lj","ibi","apn","appDisplayName","mj","handleOpenURL","nj","oj","pj","qj","rj","vj","sj","tj","unknown","signInViaRedirect","linkViaRedirect","reauthViaRedirect","signInViaPopup","linkViaPopup","reauthViaPopup","Z","uj","yj","wj","xj","unsubscribe","zj","Aj","getRedirectResult","Bj","Cj","Dj","Ej","Fj","user","Gj","Hj","refreshToken","expirationTime","Jj","Ij","expiresIn","Kj","expires_in","Lj","uid","photoURL","Mj","appName","authDomain","Nj","Oj","Pj","languageCode","Qj","Rj","Sj","Tj","getIdToken","Uj","Vj","Wj","Xj","Yj","emailVerified","providerData","Zj","ak","bk","dk","ck","ek","copy","reload","fk","gk","hk","users","localId","ik","passwordHash","providerUserInfo","rawId","reauthenticateAndRetrieveDataWithCredential","jk","reauthenticateWithCredential","kk","linkAndRetrieveDataWithCredential","lk","linkWithCredential","linkWithPhoneNumber","reauthenticateWithPhoneNumber","additionalUserInfo","operationType","updatePhoneNumber","unlink","linkWithPopup","mk","reauthenticateWithPopup","nk","linkWithRedirect","ok","reauthenticateWithRedirect","pk","qk","rk","stsTokenManager","redirectEventId","sk","tk","uk","vk","xk","wk","yk","zk","Ak","setPersistence","Bk","Ck","Dk","Ek","T","Fk","Gk","Hk","Ik","logFramework","Jk","Kk","Lk","useDeviceLanguage","languages","language","userLanguage","currentUser","U","Mk","Nk","signInWithPopup","signInWithRedirect","signOut","Ok","Pk","Qk","onIdTokenChanged","onAuthStateChanged","signInWithCustomToken","signInWithEmailAndPassword","createUserWithEmailAndPassword","signInWithCredential","signInAndRetrieveDataWithCredential","Rk","_lat","fetchProvidersForEmail","verifyPasswordResetCode","signInWithPhoneNumber","Tk","Sk","Uk","Vk","Wk","Xk","Yk","Zk","App","$k","al","bl","cl","dl","Persistence","Auth","User","util_1","util_2","util_3","util_4","util_5","util_6","storage_1","util_7","LUIDGenerator","sha1","sha1Bytes","buildLogMessage_","var_args","logger","firstLog_","enableLogging","logger_","persistent","SessionStorage","logWrapper","prefix","fatal","warnIfPageIsSecure","warnAboutUnsupportedMethod","methodName","isInvalidJSONNumber","POSITIVE_INFINITY","NEGATIVE_INFINITY","executeWhenDOMReady","called_1","wrappedFn_1","MIN_NAME","MAX_NAME","nameCompare","aAsInt","tryParseInt","bAsInt","stringCompare","requireKey","ObjectToUniqueKey","splitStringBySize","segsize","dataSegs","each","bindCallback","doubleToIEEE754String","ln","bits","abs","pow","min","LN2","round","reverse","hexByteString","hexByte","isChromeExtensionContentScript","isWindowsStoreApp","Windows","UI","errorForServerCode","query","INTEGER_REGEXP_","intVal","exceptionGuard","callUserCallback","beingCrawled","search","exportPropGetter","fnGet","setTimeoutNonBlocking","time","Path","pathOrString","pieceNum","pieces_","copyTo","pieceNum_","getFront","getLength","popFront","getBack","pathString","toUrlEncodedString","begin","parent","pieces","childPathObj","childPieces","relativePath","outerPath","innerPath","outer","inner","comparePaths","right","leftKeys","rightKeys","cmp","equals","other","ValidationPath","errorPrefix_","parts_","byteLength_","checkValid_","last","MAX_PATH_LENGTH_BYTES","MAX_PATH_DEPTH","toErrorString","setNodeFromJSON","nodeFromJSON","setMaxNode","MAX_NODE","Index_1","Node_1","LeafNode_1","PriorityIndex","compare","aPriority","getPriority","bPriority","indexCmp","compareTo","isDefinedOn","indexedValueChanged","oldNode","newNode","minPost","NamedNode","MIN","maxPost","LeafNode","makePost","indexValue","priorityNode","Index","PRIORITY_INDEX","EMPTY_NODE","SortedMap_1","snap_1","PriorityIndex_1","KeyIndex_1","IndexMap_1","comparators_1","ChildrenNode","children_","priorityNode_","indexMap_","lazyHash_","validatePriorityNode","SortedMap","NAME_COMPARATOR","IndexMap","Default","isLeafNode","updatePriority","newPriorityNode","getImmediateChild","childName","getChild","front","hasChild","updateImmediateChild","newChildNode","namedNode","newChildren","newIndexMap","newPriority","removeFromIndexes","insert","addToIndexes","updateChild","newImmediateChild","numChildren","count","exportFormat","numKeys","maxKey","allIntegerKeys","forEachChild","childNode","hash","toHash_1","priorityHashText","childHash","getPredecessorChildName","index","idx","resolveIndex_","predecessor","getPredecessorKey","getFirstChildName","indexDefinition","minKey","getFirstChild","getLastChildName","getLastChild","action","inorderTraversal","wrappedNode","getIterator","getIteratorFrom","startPost","iterator","Wrap","peek","getNext","getReverseIterator","getReverseIteratorFrom","endPost","withIndex","KEY_INDEX","hasIndex","addIndex","isIndexed","otherChildrenNode","thisIter","otherIter","thisCurrent","otherCurrent","MaxNode","defineProperties","MAX","KeyIndex","__EMPTY_NODE","__childrenNodeConstructor","Path_1","INVALID_KEY_REGEX_","INVALID_PATH_REGEX_","MAX_LEAF_SIZE_","isValidKey","isValidPathString","isValidRootPathString","isValidPriority","priority","validateFirebaseDataArg","validateFirebaseData","path_","hasDotValue_1","hasActualChild_1","validateFirebaseMergePaths","mergePaths","curPath","prevPath","validateFirebaseMergeDataArg","validatePriority","validateEventType","eventType","validateKey","validatePathString","validateRootPathString","validateWritablePath","validateUrl","parsedUrl","repoInfo","validateCredential","cred","validateBoolean","bool","validateString","string","validateObject","validateObjectContainsKey","opt_type","OperationType","OperationSource","fromUser","fromServer","queryId","tagged","Server","forServerTaggedQuery","Change","snapshotNode","oldSnap","prevName","valueChange","snapshot","VALUE","childAddedChange","childKey","CHILD_ADDED","childRemovedChange","CHILD_REMOVED","childChangedChange","newSnapshot","oldSnapshot","CHILD_CHANGED","childMovedChange","CHILD_MOVED","json","ChildrenNode_1","jsonLeaf","USE_HINZE","node_1","jsonObj_1","childData","children_1","childrenHavePriority_1","hinzeJsonObj_1","childSet","childSet_1","buildChildSet","NAME_ONLY_COMPARATOR","sortedChildSet","getCompare",".priority","DOMStorageWrapper_1","MemoryStorage_1","createStoragefor","domStorageName","domStorage","DOMStorageWrapper","MemoryStorage","PersistentStorage","PROTOCOL_VERSION","VERSION_PARAM","TRANSPORT_SESSION_PARAM","REFERER_PARAM","FORGE_REF","FORGE_DOMAIN","LAST_SESSION_PARAM","WEBSOCKET","LONG_POLLING","oldWrapped","newWrapped","value_",".value","getValue","toHash","compareToLeafNode_","otherLeaf","otherLeafType","thisLeafType","otherIndex","VALUE_TYPE_ORDER","thisIndex","SortedMapIterator","startKey","comparator","isReverse_","resultGenerator_","nodeStack_","hasNext","LLRBNode","color","RED","reverseTraversal","min_","fixUp_","removeMin_","isRed_","moveRedLeft_","smallest","rotateRight_","moveRedRight_","rotateLeft_","colorFlip_","nl","nr","checkMaxDepth_","blackDepth","check_","BLACK","LLRBEmptyNode","comparator_","root_","rightParent","resultGenerator","ServerValues_1","nodeFromJSON_1","SparseSnapshotTree_1","SyncTree_1","SnapshotHolder_1","AuthTokenProvider_1","StatsManager_1","StatsReporter_1","StatsListener_1","EventQueue_1","PersistentConnection_1","ReadonlyRestClient_1","Database_1","Repo","repoInfo_","forceRestClient","dataUpdateCount","statsListener_","eventQueue_","EventQueue","nextWriteId_","interceptServerDataCallback_","onDisconnect_","SparseSnapshotTree","persistentConnection_","authTokenProvider","AuthTokenProvider","stats_","StatsManager","getCollection","server_","ReadonlyRestClient","onDataUpdate_","onConnectStatus_","authOverride","PersistentConnection","onServerInfoUpdate_","addTokenChangeListener","refreshAuthToken","statsReporter_","getOrCreateReporter","StatsReporter","transactions_init_","infoData_","SnapshotHolder","infoSyncTree_","SyncTree","startListening","tag","currentHashFn","onComplete","infoEvents","getNode","applyServerOverwrite","stopListening","updateInfo_","serverSyncTree_","events","raiseEventsForChangedPath","unlisten","secure","serverTime","offsetNode","offset","generateServerValues","generateWithValues","timestamp","isMerge","taggedChildren","raw","applyTaggedQueryMerge","taggedSnap","applyTaggedQueryOverwrite","changedChildren","applyServerMerge","snap","affectedPath","rerunTransactions_","interceptServerData_","connectStatus","runOnDisconnectEvents_","updates","updateSnapshot","getNextWriteId_","setWithPriority","newVal","log_","serverValues","newNodeUnresolved","resolveDeferredValueSnapshot","writeId","applyUserOverwrite","queueEvents","errorReason","success","clearEvents","ackUserWrite","callOnCompleteCallback","abortTransactions_","childrenToMerge","empty","changedKey","changedValue","writeId_1","applyUserMerge","merge","changedPath","resolvedOnDisconnectTree","resolveDeferredValueTree","forEachTree","Empty","onDisconnectCancel","forget","onDisconnectSet","onDisconnectPut","remember","onDisconnectSetWithPriority","onDisconnectUpdate","onDisconnectMerge","addEventCallbackForQuery","eventRegistration","addEventRegistration","raiseEventsAtPath","removeEventCallbackForQuery","removeEventRegistration","interrupt","resume","stats","showDelta","StatsListener","longestName","reduce","previousValue","currentValue","stat","statsIncrementCounter","metric","incrementCounter","includeStat","__database","Database","CacheNode","node_","fullyInitialized_","filtered_","isFullyInitialized","isFiltered","isCompleteForPath","isCompleteForChild","onDisconnect_1","TransactionResult_1","NextPushId_1","Query_1","Repo_1","QueryParams_1","validation_1","SyncPoint_1","Reference","repo","QueryParams","DEFAULT","getKey","parentPath","getRoot","databaseProp","database","objectToMerge","newObjectToMerge","transactionUpdate","applyLocally","promiseComplete","committed","TransactionResult","startTransaction","setPriority","nextPushId","thennablePushRef","pushRef","onDisconnect","OnDisconnect","Query","__referenceConstructor","SyncPoint","emptyChildrenSingleton","EmptyChildren","ImmutableTree","children","fromObject","tree","childPath","childSnap","findRootMostMatchingPathAndValue","childExistingPathAndValue","findRootMostValueAndPath","subtree","childTree","toSet","newChild","setTree","newTree","fold","fold_","pathSoFar","accum","findOnPath","findOnPath_","pathToFollow","nextChild","foreachOnPath","foreachOnPath_","currentRelativePath","foreach","foreach_","foreachChild","Change_1","IndexedFilter","index_","optChangeAccumulator","oldChild","trackChildChange","updateFullNode","newSnap","filtersNodes","getIndexedFilter","getIndex","StatsCollection_1","hashString","collections_","StatsCollection","creatorFunction","reporters_","parser_1","_staticInstance","RepoManager","repos_","useRestClient_","getInstance","dbUrl","databaseFromApp","parseRepoInfo","createRepo","deleteRepo","appRepos","toURLString","Reference_1","RepoManager_1","repo_","DatabaseInternals","checkDeleted_","refFromURL","apiName","parsedURL","goOffline","goOnline","ServerValue","TIMESTAMP",".sv","decodePath","pathStringDecoded","piece","RepoInfo_1","dataURL","parseURL","subdomain","domain","webSocketOnly","scheme","RepoInfo","port","colonInd","slashInd","Constants_1","persistenceKey","internalHost","needsQueryParam","isCacheableHost","isDemoHost","isCustomHost","updateHost","newHost","connectionURL","connURL","pairs","ValueIndex_1","PathIndex_1","EventRegistration_1","queryParams_","orderByCalled_","validateQueryEndpoints_","startNode","endNode","hasStart","getIndexStartValue","hasEnd","getIndexEndValue","tooManyArgsError","wrongArgTypeError","getIndexStartName","getIndexEndName","PathIndex","VALUE_INDEX","validateLimit_","hasLimit","hasAnchoredLimit","validateNoPreviousOrderByCall_","getQueryParams","getRef","cancelCallbackOrContext","getCancelAndContextArgs_","onValueEvent","callbacks","onChildEvent","cancelCallback","container","ValueEventRegistration","ChildEventRegistration","valueCallback","userCallback","cancelOrContext","firstCall","onceCallback","limitToFirst","limit","limitToLast","orderByChild","parsedPath","newParams","orderBy","orderByKey","orderByPriority","orderByValue","startAt","endAt","equalTo","queryObject","getQueryObject","queryIdentifier","isEqual","sameRepo","samePath","sameQueryIdentifier","ValueIndex","valueNode","_defaultIndexMap","fallbackObject","indexes_","indexSet_","indexKey","sortedMap","existingChildren","childList","sawIndexedValue","iter","newIndex","indexName","newIndexSet","newIndexes","indexedChildren","existingSnap","SortedMap_2","LOG_2","Base12Num","num","current_","mask","bits_","nextBitIsOne","keyFn","mapSortFn","buildBalancedTree","low","middle","base12","buildPennant","chunkSize","attachPennant","pennant","isOne","indexPath_","extractChild","aChild","bChild","DataSnapshot","ref_","exportVal","exists","childPathString","childRef","hasChildren","resolveDeferredValue","resolvedTree","rawPri","leafNode","childrenNode","CountedSet_1","CountedSet","self_1","prefixPath","func","Operation_1","Overwrite","OVERWRITE","operationForChild","CacheNode_1","ViewCache_1","View_1","views_","applyOperation","writesCache","optCompleteServerCache","view","events_1","serverCache","serverCacheComplete","eventCache","calcCompleteEventCache","eventCacheComplete","calcCompleteEventChildren","viewCache","ViewCache","View","getInitialEvents","cancelError","removed","cancelEvents","hadCompleteView","hasCompleteView","viewQueryId","getQuery","loadsAllData","getQueryViews","getCompleteServerCache","viewForQuery","getCompleteView","viewExistsForQuery","eventCache_","serverCache_","updateEventSnap","eventSnap","filtered","updateServerSnap","serverSnap","getEventCache","getCompleteEventSnap","getServerCache","getCompleteServerSnap","collection_","last_","newStats","delta","app_1","VisibilityMonitor_1","OnlineMonitor_1","Connection_1","ServerActions_1","RECONNECT_MIN_DELAY","RECONNECT_MAX_DELAY_DEFAULT","authTokenProvider_","authOverride_","nextPersistentConnectionId_","interruptReasons_","listens_","outstandingPuts_","outstandingPutCount_","onDisconnectRequestQueue_","connected_","reconnectDelay_","maxReconnectDelay_","securityDebugCallback_","lastSessionId","establishConnectionTimer_","visible_","requestCBHash_","requestNumber_","realtime_","authToken_","forceTokenRefresh_","invalidAuthTokenCount_","firstConnection_","lastConnectionAttemptTime_","lastConnectionEstablishedTime_","scheduleConnect_","VisibilityMonitor","onVisible_","OnlineMonitor","onOnline_","sendRequest","onResponse","curReqNum","msg","isDefault","listenSpec","hashFn","sendListen_","req","payload","warnOnListenWarnings_","removeListen_","warnings","indexSpec","indexPath","tryAuth","reduceReconnectDelayIfAdminCredential_","token_1","authMethod","requestData","onAuthRevoked_","sendUnlisten_","queryObj","sendOnDisconnect_","putInternal","sendPut_","queued","reportStats","onDataMessage_","reqNum","onDataPush_","onListenRevoked_","onSecurityDebugPacket_","onReady_","handleTimestamp_","sendConnectStats_","restoreState_","establishConnection_","visible","online","onRealtimeDisconnect_","cancelSentTransactions_","shouldReconnect_","timeSinceLastConnectSucceeded","timeSinceLastConnectAttempt","reconnectDelay","onDataMessage_1","onReady_1","connId_1","nextConnectionId_","lastSessionId_1","canceled_1","connection_1","closeFn_1","sendRequestFn","forceRefresh","Connection","serverTimeOffset","normalizedPathString","statusCode","explanation","notifyForInvalidToken","queries","clientName","currentlyOnline","ServerActions","EventEmitter","allowedEvents_","listeners_","trigger","validateEventType_","eventData","getInitialEvent","et","TransportManager_1","onMessage_","onKill_","connectionCount","pendingDataMessages","state_","transportManager_","TransportManager","start_","conn","initialTransport","conn_","nextTransportId_","primaryResponsesRequired_","onMessageReceived","connReceiver_","onConnectionLost","disconnReceiver_","tx_","rx_","secondaryConn_","isHealthy_","healthyTimeout_ms","healthyTimeout_","bytesReceived","markConnectionHealthy","bytesSent","everConnected","onConnectionLost_","onSecondaryConnectionLost_","onPrimaryMessageReceived_","onSecondaryMessageReceived_","dataMsg","sendData_","tryCleanupConnection","connId","onSecondaryControl_","controlData","cmd","upgradeIfSecondaryHealthy_","secondaryResponsesRequired_","parsedData","layer","proceedWithUpgrade_","onControl_","onPrimaryResponse_","onHandshake_","onConnectionShutdown_","onReset_","sendPingOnPrimaryIfNecessary_","handshake","ts","onConnectionEstablished_","tryStartUpgrade_","upgradeTransport","startUpgrade_","onMessage","closeConnections_","PacketReceiver_1","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_PARAM","FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM","BrowserPollConnection","transportSessionId","everConnected_","urlFn","curSegmentNum","myPacketOrderer","PacketReceiver","isClosed_","connectTimeoutTimer_","onClosed_","scriptTagHolder","FirebaseIFrameScriptHolder","command","arg1","arg2","incrementIncomingBytes_","sendNewPolls","closeAfter","pN","handleResponse","urlParams","uniqueCallbackIdentifier","connectURL","addTag","startLongPoll","addDisconnectPingFrame","forceAllow","forceAllow_","forceDisallow","forceDisallow_","isAvailable","shutdown_","myDisconnFrame","dataStr","base64data","MAX_URL_DATA_SIZE","enqueueSegment","pw","commandCB","onMessageCB","outstandingRequests","pendingSegs","currentSerial","myIFrame","createIFrame_","iframeContents","iframe","contentDocument","alive","innerHTML","myID","myPW","theURL","nodeRestRequest","newRequest_","curDataString","theSeg","seg","addLongPollTag_","segnum","totalsegs","serial","doNewRequest","keepaliveTimeout","readyStateCB","loadCB","doNodeLongPoll","newScript_1","rstate","setWebSocketImpl","impl","WebSocketImpl","MozWebSocket","WebSocket","WebSocketConnection","keepaliveTimer","frames","totalFrames","connectionURL_","device","User-Agent","platform","mySock","onopen","onclose","handleIncomingFrame","isOldAndroid","oldAndroidRegex","oldAndroidMatch","previouslyFailed","isInMemoryStorage","appendFrame_","fullMess","jsonMess","handleNewFrameCount_","frameCount","extractFrameCount_","mess","resetKeepAlive","remainingData","sendString_","responsesRequiredToBeHealthy","healthyTimeout","IndexedFilter_1","RangedFilter","indexedFilter_","startPost_","getStartPost_","endPost_","getEndPost_","getStartPost","getEndPost","matches","startName","endName","registerDatabase","instance","unused","TEST_ACCESS","domStorage_","prefix_","prefixedName_","storedVal","cache_","PUSH_CHARS","lastPushTime","lastRandChars","duplicateTime","timeStampChars","DataSnapshot_1","Event_1","callback_","cancelCallback_","context_","respondsTo","change","DataEvent","getEventRunner","ctx","getEventType","cancelCB_1","cb_1","createCancelEvent","CancelEvent","hasAnyCallback","callbacks_","eventToCheck","cancelCB_2","cb_2","otherCount","otherKey","thisKey","getPath","AckUserWrite_1","ImmutableTree_1","ListenComplete_1","Merge_1","Overwrite_1","WriteTree_1","listenProvider_","syncPointTree_","pendingWriteTree_","WriteTree","tagToQueryMap_","queryToTagMap_","newData","addOverwrite","applyOperationToSyncPoints_","addMerge","changeTree","Merge","revert","getWrite","removeWrite","affectedTree_1","AckUserWrite","applyListenComplete","ListenComplete","queryKey","queryKeyForTag_","parseQueryKey_","queryPath","op","applyTaggedOperation_","applyTaggedListenComplete","foundAncestorDefaultView","pathToSyncPoint","sp","syncPoint","childSyncPoint","completeCache","viewAlreadyExists","makeQueryKey_","getNextQueryTag_","childWrites","setupListener_","maybeSyncPoint","removedAndEvents","removingDefault","covered","parentSyncPoint","newViews","collectDistinctViewsForSubTree_","newQuery","createListenerForView_","queryForListening_","tagForQuery_","queryToRemove","tagToRemove","removeTags_","writeIdsToExclude","writeTree","maybeChildSyncPoint","childMap","views_1","childViews","removedQuery","removedQueryKey","removedQueryTag","queriesToStop","queries_1","childQueries","queryToStop","splitIndex","nextQueryTag_","applyOperationHelper_","syncPointTree","applyOperationDescendantsHelper_","childOperation","childServerCache","childWritesCache","affectedTree","ACK_USER_WRITE","LISTEN_COMPLETE","MERGE","ViewProcessor_1","EventGenerator_1","query_","initialViewCache","eventRegistrations_","indexFilter","getNodeFilter","processor_","ViewProcessor","initialServerCache","initialEventCache","newServerCache","newEventCache","viewCache_","eventGenerator_","EventGenerator","cache","path_1","registration","maybeEvent","existing","completeServerCache","oldViewCache","assertIndexed","generateEventsForChanges_","changes","initialChanges","registrations","generateEventsForChanges","ChildChangeAccumulator_1","CompleteChildSource_1","ProcessorResult","filter_","newViewCache","filterServerNode","accumulator","ChildChangeAccumulator","overwrite","applyUserOverwrite_","applyServerOverwrite_","applyUserMerge_","applyServerMerge_","revertUserWrite_","ackUserWrite_","listenComplete_","getChanges","maybeAddValueEvent_","isLeafOrEmpty","oldCompleteSnap","generateEventCacheAfterServerEvent_","changePath","oldEventSnap","shadowingWrite","serverNode","completeChildren","completeEventChildren","completeNode","oldEventNode","updatedPriority","calcEventCacheAfterServerOverwrite","childChangePath","newEventChild","eventChildUpdate","calcCompleteChild","changedSnap","oldServerSnap","serverFilter","newServerNode","NO_COMPLETE_CHILD_SOURCE","WriteTreeCompleteChildSource","getCompleteChild","newEventSnap","cacheHasChild_","curViewCache","writePath","applyMerge_","viewMergeTree","serverChild","childMergeTree","isUnknownDeepMerge","ackPath","changedChildren_1","changedChildren_2","mergePath","serverCachePath","oldServerNode","oldEventCache","serverChildren","changeMap_","oldChange","oldType","NoCompleteChildSource_","getChildAfterChild","writes_","optCompleteServerCache_","completeServerData","nodes","calcIndexedSlice","eventRegistrations","moves","generateEventsForType_","filteredChanges","compareChanges_","materializedChange","materializeSingleChange_","aWrapped","bWrapped","CompoundWrite_1","visibleWrites_","CompoundWrite","allWrites_","lastWriteId_","WriteTreeRef","addWrite","addWrites","record","writeToRemove","removedWriteWasVisible","removedWriteOverlapsWithOtherWrites","currentWrite","recordContainsPath_","resetTree_","getCompleteWriteData","getCompleteNode","treePath","includeHiddenWrites","childCompoundWrite","hasCompleteWrite","mergeAtPath","layerTree_","layeredCache","shadowingNode","subMerge","completeServerChildren","topLevelSet","merge_1","getCompleteChildren","existingEventSnap","existingServerSnap","childMerge","toIterate","writeRecord","DefaultFilter_","writes","treeRoot","compoundWrite","deepNode","treePath_","writeTree_","existingServerCache","rootmost","rootMostPath","newWrite","applySubtreeWrite_","priorityWrite_1","rootNode_","newSnapshotNode","app_","removeTokenChangeListener","counters_","amount","FIRST_STATS_MIN_TIME","FIRST_STATS_MAX_TIME","collection","statsToReport_","reportStats_","reportedStats","haveStatsToReport","eventLists_","recursionDepth_","eventDataList","currList","eventPath","EventList","raiseQueuedEventsMatchingPredicate_","sentAll","eventList","raise","events_","eventFn","EventEmitter_1","hidden","visibilityChange","online_","BrowserPollConnection_1","WebSocketConnection_1","initTransports_","isWebSocketsAvailable","isSkipPollConnection","transports_","transports_1","ALL_TRANSPORTS","transport","pendingResponses","currentResponseNum","closeAfterResponse","onClose","responseNum","requestNum","this_1","toProcess","getListenId_","listenId","thisListen","queryStringParamaters","toRestQueryStringParameters","restRequest_","status_1","queryStringParameters","authTokenData","authToken","xhr","LimitedFilter_1","RangedFilter_1","limitSet_","startSet_","startNameSet_","endSet_","endNameSet_","limit_","viewFrom_","indexStartValue_","indexStartName_","indexEndValue_","indexEndName_","isViewFromLeft","WIRE_PROTOCOL_CONSTANTS_","VIEW_FROM_LEFT","getLimit","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","LimitedFilter","REST_CONSTANTS","REST_QUERY_CONSTANTS_","qs","ORDER_BY","START_AT","END_AT","LIMIT_TO_FIRST","LIMIT_TO_LAST","rangedFilter_","reverse_","fullLimitUpdateChild_","inRange","indexCompare_1","foundStartPost","changeAccumulator","indexCmp_1","newChildNamedNode","windowBoundary","oldChildSnap","compareNext","TransactionStatus","Tree_1","MAX_TRANSACTION_RETRIES_","transactionQueueTree_","Tree","watchRef","unwatcher","order","retryCount","abortReason","currentWriteId","currentInputSnapshot","currentOutputSnapshotRaw","currentOutputSnapshotResolved","currentState","getLatestState_","RUN","queueNode","subTree","nodeQueue","setValue","priorityForNode","sendReadyTransactions_","excludeSets","pruneCompletedTransactionsBelowNode_","buildTransactionQueue_","sendTransactionQueue_","setsToIgnore","txn","latestState","snapToSend","latestHash","SENT","dataToSend","pathToSend","COMPLETED","SENT_NEEDS_ABORT","NEEDS_ABORT","rootMostTransactionNode","getAncestorTransactionNode_","rerunTransactionQueue_","txnsToRerun","abortTransaction","currentNode","newDataNode","hasExplicitPriority","oldWriteId","newNodeResolved","lastInput","transactionNode","transactionQueue","aggregateTransactionQueuesForNode_","to","from","forEachAncestor","abortTransactionsOnNode_","forEachDescendant","lastSent","TreeNode","childCount","parent_","pathObj","updateParents_","includeSelf","childrenFirst","forEachImmediateDescendantWithValue","updateChild_","childEmpty","childExists","forceLongPolling","forceWebSockets","setSecurityDebugCallback","interceptServerData","DataConnection","simpleListen","echo","onEcho","RealTimeConnection","hijackHash","newHash","oldPut","opt_onComplete","opt_hash","ConnectionTarget","listens","firebaseRef","116","117","toBase64","arrayBuffer","uint8Version","registerMessaging","factoryMethod","sw_controller","window_controller","namespaceExports","Messaging","_a","CODES","AVAILABLE_IN_WINDOW","AVAILABLE_IN_SW","SHOULD_BE_INHERITED","BAD_SENDER_ID","INCORRECT_GCM_SENDER_ID","PERMISSION_DEFAULT","PERMISSION_BLOCKED","UNSUPPORTED_BROWSER","NOTIFICATIONS_BLOCKED","FAILED_DEFAULT_REGISTRATION","SW_REGISTRATION_EXPECTED","GET_SUBSCRIPTION_FAILED","INVALID_SAVED_TOKEN","SW_REG_REDUNDANT","TOKEN_SUBSCRIBE_FAILED","TOKEN_SUBSCRIBE_NO_TOKEN","TOKEN_SUBSCRIBE_NO_PUSH_SET","USE_SW_BEFORE_GET_TOKEN","INVALID_DELETE_TOKEN","DELETE_TOKEN_NOT_FOUND","DELETE_SCOPE_NOT_FOUND","BG_HANDLER_FUNCTION_EXPECTED","NO_WINDOW_CLIENT_TO_MSG","UNABLE_TO_RESUBSCRIBE","NO_FCM_TOKEN_FOR_RESUBSCRIBE","FAILED_TO_DELETE_TOKEN","NO_SW_IN_REG","BAD_SCOPE","BAD_VAPID_KEY","BAD_SUBSCRIPTION","BAD_TOKEN","BAD_PUSH_SET","FAILED_DELETE_VAPID_KEY","ERROR_MAP","codes","array_buffer_to_base64","FCM_APPLICATION_SERVER_KEY","SUBSCRIPTION_DETAILS","userVisibleOnly","applicationServerKey","fcm_details","ENDPOINT","APPLICATION_SERVER_KEY","SUBSCRIPTION_OPTIONS","FCM_TOKEN_OBJ_STORE","token_manager_TokenManager","TokenManager","errorFactory_","openDbPromise_","openDatabase_","createIndex","unique","closeDatabase","getTokenDetailsFromToken","fcmToken","getTokenDetailsFromSWScope_","swScope","scopeRequest","getAllTokenDetailsForSenderId_","senderId","senderIdTokens","cursorRequest","cursor","continue","subscribeToFCM","subscription","pushSet","p256dh","fcmSubscribeBody","Headers","append","subscribeOptions","fetch","fcmTokenResponse","isSameSubscription_","masterTokenDetails","saveTokenDetails_","swRegistration","fcmPushSet","details","fcmSenderId","getSavedToken","ServiceWorkerRegistration","allTokenDetails","tokenDetails","pushManager","getSubscription","createToken","fcmTokenDetails","deleteToken","token_manager","SENDER_ID_OPTION_NAME","controller_interface_ControllerInterface","ControllerInterface","messagingSenderId_","tokenManager_","currentPermission","getNotificationPermission_","notification_permission","getSWRegistration_","requestPermission","useServiceWorker","optError","optCompleted","onTokenRefresh","setBackgroundMessageHandler","Notification","permission","getTokenManager","controller_interface","PARAMS","TYPE_OF_MSG","DATA","msgType","PUSH_MSG_RECEIVED","NOTIFICATION_CLICKED","createNewMsg","msgData","worker_page_message","TYPES_OF_MSG","default_sw","window_controller_WindowController","WindowController","registrationToUse_","manifestCheckPromise_","messageObserver_","tokenRefreshObserver_","onTokenRefresh_","setupSWMessageListener_","isSupported_","manifestCheck_","manifestTag","querySelector","manifestContent","managePermissionResult","permissionPromise","waitForRegistrationToActivate_","serviceWorker","installing","waiting","stateChangeListener","browserErrorMessage","workerPageMessage","pushMessage","PushSubscription","sw_controller___extends","sw_controller_SWController","SWController","onPush_","onSubChange_","onNotificationClick_","bgMessageHandler_","msgPayload","handleMsgPromise","hasVisibleClients_","hasVisibleClients","notification","sendMessageToWindowClients_","notificationDetails","getNotificationData_","notificationTitle","showNotification","waitUntil","promiseChain","tokenManager","newSubscription","stopImmediatePropagation","clickAction","getWindowClient_","windowClient","clients","openWindow","internalMsg","attemptToMessageClient_","notificationInformation","assign","URL","matchAll","includeUncontrolled","clientList","suitableClient","esm","118","119","prependCode","FirebaseStorageError","Code","UNKNOWN","objectNotFound","OBJECT_NOT_FOUND","quotaExceeded","bucket","unauthenticated","UNAUTHENTICATED","unauthorized","UNAUTHORIZED","retryLimitExceeded","RETRY_LIMIT_EXCEEDED","error_canceled","CANCELED","invalidUrl","INVALID_URL","invalidDefaultBucket","INVALID_DEFAULT_BUCKET","cannotSliceBlob","CANNOT_SLICE_BLOB","serverFileWrongSize","SERVER_FILE_WRONG_SIZE","noDownloadURL","NO_DOWNLOAD_URL","invalidArgument","INVALID_ARGUMENT","invalidArgumentCount","argMin","argMax","real","countPart","plural","INVALID_ARGUMENT_COUNT","appDeleted","APP_DELETED","invalidRootOperation","INVALID_ROOT_OPERATION","invalidFormat","format","INVALID_FORMAT","internalError","INTERNAL_ERROR","formatValidator","stringFormat","StringFormat","RAW","BASE64","BASE64URL","DATA_URL","dataFromString","StringData","utf8Bytes_","base64Bytes_","dataURLBytes_","dataURLContentType_","valid","lo","percentEncodedBytes_","hasMinus","hasUnder","invalidChar","hasPlus","hasSlash","string_DataURLParts","rest","endsWith","end","taskStateFromInternalTaskState","InternalTaskState","RUNNING","PAUSING","CANCELING","TaskState","PAUSED","SUCCESS","ERROR","make","resolver","promise_external_resolve","promise_external_reject","isDef","isJustDef","isFunction","isObject","isNonArrayObject","isString","isNumber","isNativeBlob","isNativeBlobDefined","Blob","jsonObjectOrNull","path_parent","canonicalChildPath","component","lastComponent","makeNormalUrl","urlPart","domainBase","apiBaseUrl","makeDownloadUrl","downloadBase","makeUploadUrl","apiUploadBaseUrl","makeQueryString","encode","queryPart","nextPart","noXform_","metadata","xformPath","fullPath","getMappings","mappingsXformPath","xformSize","xformTokens","tokens","alt","mappings_","mappings","Mapping","nameMapping","xform","sizeMapping","addRef","authWrapper","generateRef","loc","location_Location","makeStorageReference","fromResource","resource","mapping","local","server","fromResourceString","resourceString","toResourceString","writable","metadataValidator","validate","specs","passed","minArgs","maxArgs","validator","and_","v1","v2","stringSpec","opt_validator","opt_optional","stringValidator","args_ArgSpec","uploadDataSpec","ArrayBuffer","metadataSpec","nonNegativeNumberSpec","looseObjectSpec","nullFunctionSpec","getBlobBuilder","BlobBuilder","WebKitBlobBuilder","getBlob","sliceBlob","blob","webkitSlice","mozSlice","array_contains","elem","array_clone","arraylike","handlerCheck","cndn","metadataHandler","handler","text","sharedErrorHandler","errorHandler","newErr","getStatus","setServerResponseProp","serverResponseProp","objectErrorHandler","shared","getMetadata","fullServerUrl","maxOperationRetryTime","requestInfo","RequestInfo","updateMetadata","deleteObject","successCodes","determineContentType_","metadataForUpload_","opt_metadata","multipartUpload","bucketOnlyServerUrl","X-Goog-Upload-Protocol","boundary","metadataString","preBlobPart","postBlobPart","blob_FbsBlob","maxUploadRetryTime","uploadData","checkResumeHeader_","opt_allowed","createResumableUpload","X-Goog-Upload-Command","X-Goog-Upload-Header-Content-Length","X-Goog-Upload-Header-Content-Type","getResumableUploadStatus","sizeString","ResumableUploadStatus","continueResumableUpload","opt_status","opt_progressCallback","uploadStatus","newCurrent","current","bytesToUpload","bytesLeft","startByte","endByte","uploadCommand","X-Goog-Upload-Offset","progressCallback","async_async","argsToForward","canceled","cancelState","triggerCallback","triggeredCallback","callWithDelay","millis","timeoutId","hitTimeout","waitSeconds","waitMillis","wasTimeout","stopped","addAuthHeader_","addVersionHeader_","number","makeRequest","pool","request_NetworkRequest","additionalRetryCodes","factory","opt_url","service_Service","xhriopool_XhrIoPool","registerStorage","TaskEvent","Storage","reference_Reference","STORAGE_TYPE","ErrorCode","defaultMaxOperationRetryTime","defaultMaxUploadRetryTime","minSafeInteger","code_","message_","serverResponse_","codeProp","codeEquals","serverResponse","BUCKET_NOT_FOUND","PROJECT_NOT_FOUND","INVALID_CHECKSUM","INVALID_EVENT_NAME","NO_DEFAULT_BUCKET","opt_contentType","DataURLParts","STATE_CHANGED","xhrio_network_NetworkXhrIo","NetworkXhrIo","sent_","xhr_","errorCode_","NO_ERROR","sendPromise_","ABORT","NETWORK_ERROR","opt_body","opt_headers","getErrorCode","getResponseText","addUploadProgressListener","removeUploadProgressListener","XhrIoPool","createXhrIo","makeFromBucketSpec","bucketString","bucketLocation","makeFromUrl","gsModify","httpModify","gsRegex","gsIndices","httpRegex","httpIndices","groups","regex","indices","postModify","group","captures","bucketValue","pathValue","opt_local","opt_writable","opt_xform","ArgSpec","FbsBlob","opt_elideCopy","blobType","data_","byteLength","size_","type_","realBlob","sliced","buffer","blobby","uint8Arrays","finalLength_1","merged_1","index_1","observer_Observer","Observer","opt_error","opt_complete","UploadTaskSnapshot","bytesTransferred","totalBytes","urls","task_UploadTask","UploadTask","transferred_","needToFetchStatus_","needToFetchMetadata_","observers_","error_","uploadUrl_","request_","chunkMultiplier_","resolve_","reject_","authWrapper_","location_","blob_","metadata_","resumable_","shouldDoResumable_","errorHandler_","completeTransitions_","transition_","metadataErrorHandler_","promise_","makeProgressCallback_","sizeBefore","updateProgress_","createResumable_","fetchStatus_","fetchMetadata_","continueUpload_","oneShotUpload_","resolveToken_","getAuthToken","createRequest","getPromise","statusRequest","uploadRequest","newStatus","increaseMultiplier_","metadataRequest","multipartRequest","transferred","old","notifyObservers_","wasPaused","externalState","completed","typeValidator","_p","nextOrObserverValidator","nextValidator","observerValidator","nextOrObserverMessage","makeBinder","binder","addObserver_","removeObserver_","binderNextOrObserverValidator","binderSpecs","notifyObserver_","finishPromise_","triggered","pause","newRef","newPath","throwIfRoot_","putString","getDownloadURL","failrequest_FailRequest","FailRequest","appDelete","requestmap_RequestMap","RequestMap","map_","id_","addRequest","unmap","authwrapper_AuthWrapper","AuthWrapper","maker","requestMaker","bucket_","deleted_","extractBucket_","storageRefMaker_","requestMaker_","pool_","service_","maxOperationRetryTime_","maxUploadRetryTime_","requestMap_","_error","deleteApp","setMaxUploadRetryTime","setMaxOperationRetryTime","NetworkRequest","errorCallback","pendingXhr_","backoffId_","canceled_","appDelete_","url_","method_","headers_","body_","successCodes_","additionalRetryCodes_","errorCallback_","progressCallback_","timeout_","doTheRequest","backoffCallback","progressListener","progressEvent","RequestEndStatus","hitServer","isRetryStatusCode_","wasCanceled","successCode","backoffDone","requestWentThrough","wasSuccessCode","isFiveHundredCode","extraRetryCodes","isExtraRetryCode","isRequestSpecificRetryCode","opt_canceled","Service","authWrapperBucket","internals_","service_ServiceInternals","ServiceInternals"],"mappings":"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","file":"firebase.js","sourcesContent":["/*!\n * @license Firebase v4.5.2\n * Build: rev-646dbb2\n * Terms: https://firebase.google.com/terms/\n */\nvar firebase = (function() {\n var window = typeof window === 'undefined' ? self : window;\n return /******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonpFirebase\"];\n/******/ \twindow[\"webpackJsonpFirebase\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/ \t\tif(executeModules) {\n/******/ \t\t\tfor(i=0; i < executeModules.length; i++) {\n/******/ \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\treturn result;\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t5: 0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tvar installedChunkData = installedChunks[chunkId];\n/******/ \t\tif(installedChunkData === 0) {\n/******/ \t\t\treturn new Promise(function(resolve) { resolve(); });\n/******/ \t\t}\n/******/\n/******/ \t\t// a Promise means \"currently loading\".\n/******/ \t\tif(installedChunkData) {\n/******/ \t\t\treturn installedChunkData[2];\n/******/ \t\t}\n/******/\n/******/ \t\t// setup Promise in chunk cache\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\tinstalledChunkData[2] = promise;\n/******/\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = 'text/javascript';\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tif (__webpack_require__.nc) {\n/******/ \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n/******/ \t\t}\n/******/ \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".js\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) {\n/******/ \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\treturn promise;\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 56);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(27));\n__export(__webpack_require__(28));\n__export(__webpack_require__(20));\n__export(__webpack_require__(64));\n__export(__webpack_require__(65));\n__export(__webpack_require__(66));\n__export(__webpack_require__(67));\n__export(__webpack_require__(29));\n__export(__webpack_require__(68));\n__export(__webpack_require__(30));\n__export(__webpack_require__(69));\n__export(__webpack_require__(70));\n__export(__webpack_require__(72));\n__export(__webpack_require__(73));\n__export(__webpack_require__(74));\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ }),\n/* 1 */,\n/* 2 */,\n/* 3 */,\n/* 4 */,\n/* 5 */,\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n// EXTERNAL MODULE: ../util/dist/cjs/index.js\nvar cjs = __webpack_require__(0);\nvar cjs_default = /*#__PURE__*/__webpack_require__.n(cjs);\n\n// CONCATENATED MODULE: ../app/dist/esm/src/firebaseApp.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nvar contains = function (obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\nvar DEFAULT_ENTRY_NAME = '[DEFAULT]';\n// An array to capture listeners before the true auth functions\n// exist\nvar tokenListeners = [];\n/**\n * Global context object for a collection of services using\n * a shared authentication state.\n */\nvar firebaseApp_FirebaseAppImpl = /** @class */ (function () {\n function FirebaseAppImpl(options, name, firebase_) {\n this.firebase_ = firebase_;\n this.isDeleted_ = false;\n this.services_ = {};\n this.name_ = name;\n this.options_ = Object(cjs[\"deepCopy\"])(options);\n this.INTERNAL = {\n getUid: function () { return null; },\n getToken: function () { return Promise.resolve(null); },\n addAuthTokenListener: function (callback) {\n tokenListeners.push(callback);\n // Make sure callback is called, asynchronously, in the absence of the auth module\n setTimeout(function () { return callback(null); }, 0);\n },\n removeAuthTokenListener: function (callback) {\n tokenListeners = tokenListeners.filter(function (listener) { return listener !== callback; });\n }\n };\n }\n Object.defineProperty(FirebaseAppImpl.prototype, \"name\", {\n get: function () {\n this.checkDestroyed_();\n return this.name_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseAppImpl.prototype, \"options\", {\n get: function () {\n this.checkDestroyed_();\n return this.options_;\n },\n enumerable: true,\n configurable: true\n });\n FirebaseAppImpl.prototype.delete = function () {\n var _this = this;\n return new Promise(function (resolve) {\n _this.checkDestroyed_();\n resolve();\n })\n .then(function () {\n _this.firebase_.INTERNAL.removeApp(_this.name_);\n var services = [];\n Object.keys(_this.services_).forEach(function (serviceKey) {\n Object.keys(_this.services_[serviceKey]).forEach(function (instanceKey) {\n services.push(_this.services_[serviceKey][instanceKey]);\n });\n });\n return Promise.all(services.map(function (service) {\n return service.INTERNAL.delete();\n }));\n })\n .then(function () {\n _this.isDeleted_ = true;\n _this.services_ = {};\n });\n };\n /**\n * Return a service instance associated with this app (creating it\n * on demand), identified by the passed instanceIdentifier.\n *\n * NOTE: Currently storage is the only one that is leveraging this\n * functionality. They invoke it by calling:\n *\n * ```javascript\n * firebase.app().storage('STORAGE BUCKET ID')\n * ```\n *\n * The service name is passed to this already\n * @internal\n */\n FirebaseAppImpl.prototype._getService = function (name, instanceIdentifier) {\n if (instanceIdentifier === void 0) { instanceIdentifier = DEFAULT_ENTRY_NAME; }\n this.checkDestroyed_();\n if (!this.services_[name]) {\n this.services_[name] = {};\n }\n if (!this.services_[name][instanceIdentifier]) {\n /**\n * If a custom instance has been defined (i.e. not '[DEFAULT]')\n * then we will pass that instance on, otherwise we pass `null`\n */\n var instanceSpecifier = instanceIdentifier !== DEFAULT_ENTRY_NAME\n ? instanceIdentifier\n : undefined;\n var service = this.firebase_.INTERNAL.factories[name](this, this.extendApp.bind(this), instanceSpecifier);\n this.services_[name][instanceIdentifier] = service;\n }\n return this.services_[name][instanceIdentifier];\n };\n /**\n * Callback function used to extend an App instance at the time\n * of service instance creation.\n */\n FirebaseAppImpl.prototype.extendApp = function (props) {\n var _this = this;\n // Copy the object onto the FirebaseAppImpl prototype\n Object(cjs[\"deepExtend\"])(this, props);\n /**\n * If the app has overwritten the addAuthTokenListener stub, forward\n * the active token listeners on to the true fxn.\n *\n * TODO: This function is required due to our current module\n * structure. Once we are able to rely strictly upon a single module\n * implementation, this code should be refactored and Auth should\n * provide these stubs and the upgrade logic\n */\n if (props.INTERNAL && props.INTERNAL.addAuthTokenListener) {\n tokenListeners.forEach(function (listener) {\n _this.INTERNAL.addAuthTokenListener(listener);\n });\n tokenListeners = [];\n }\n };\n /**\n * This function will throw an Error if the App has already been deleted -\n * use before performing API actions on the App.\n */\n FirebaseAppImpl.prototype.checkDestroyed_ = function () {\n if (this.isDeleted_) {\n error('app-deleted', { name: this.name_ });\n }\n };\n return FirebaseAppImpl;\n}());\n// Prevent dead-code elimination of these methods w/o invalid property\n// copying.\n(firebaseApp_FirebaseAppImpl.prototype.name && firebaseApp_FirebaseAppImpl.prototype.options) ||\n firebaseApp_FirebaseAppImpl.prototype.delete ||\n console.log('dc');\n/**\n * Return a firebase namespace object.\n *\n * In production, this will be called exactly once and the result\n * assigned to the 'firebase' global. It may be called multiple times\n * in unit tests.\n */\nfunction createFirebaseNamespace() {\n var apps_ = {};\n var factories = {};\n var appHooks = {};\n // A namespace is a plain JavaScript Object.\n var namespace = {\n // Hack to prevent Babel from modifying the object returned\n // as the firebase namespace.\n __esModule: true,\n initializeApp: initializeApp,\n app: app,\n apps: null,\n Promise: Promise,\n SDK_VERSION: '4.5.2',\n INTERNAL: {\n registerService: registerService,\n createFirebaseNamespace: createFirebaseNamespace,\n extendNamespace: extendNamespace,\n createSubscribe: cjs[\"createSubscribe\"],\n ErrorFactory: cjs[\"ErrorFactory\"],\n removeApp: removeApp,\n factories: factories,\n useAsService: useAsService,\n Promise: Promise,\n deepExtend: cjs[\"deepExtend\"]\n }\n };\n // Inject a circular default export to allow Babel users who were previously\n // using:\n //\n // import firebase from 'firebase';\n // which becomes: var firebase = require('firebase').default;\n //\n // instead of\n //\n // import * as firebase from 'firebase';\n // which becomes: var firebase = require('firebase');\n Object(cjs[\"patchProperty\"])(namespace, 'default', namespace);\n // firebase.apps is a read-only getter.\n Object.defineProperty(namespace, 'apps', {\n get: getApps\n });\n /**\n * Called by App.delete() - but before any services associated with the App\n * are deleted.\n */\n function removeApp(name) {\n var app = apps_[name];\n callAppHooks(app, 'delete');\n delete apps_[name];\n }\n /**\n * Get the App object for a given name (or DEFAULT).\n */\n function app(name) {\n name = name || DEFAULT_ENTRY_NAME;\n if (!contains(apps_, name)) {\n error('no-app', { name: name });\n }\n return apps_[name];\n }\n Object(cjs[\"patchProperty\"])(app, 'App', firebaseApp_FirebaseAppImpl);\n /**\n * Create a new App instance (name must be unique).\n */\n function initializeApp(options, name) {\n if (name === undefined) {\n name = DEFAULT_ENTRY_NAME;\n }\n else {\n if (typeof name !== 'string' || name === '') {\n error('bad-app-name', { name: name + '' });\n }\n }\n if (contains(apps_, name)) {\n error('duplicate-app', { name: name });\n }\n var app = new firebaseApp_FirebaseAppImpl(options, name, namespace);\n apps_[name] = app;\n callAppHooks(app, 'create');\n return app;\n }\n /*\n * Return an array of all the non-deleted FirebaseApps.\n */\n function getApps() {\n // Make a copy so caller cannot mutate the apps list.\n return Object.keys(apps_).map(function (name) { return apps_[name]; });\n }\n /*\n * Register a Firebase Service.\n *\n * firebase.INTERNAL.registerService()\n *\n * TODO: Implement serviceProperties.\n */\n function registerService(name, createService, serviceProperties, appHook, allowMultipleInstances) {\n // Cannot re-register a service that already exists\n if (factories[name]) {\n error('duplicate-service', { name: name });\n }\n // Capture the service factory for later service instantiation\n factories[name] = createService;\n // Capture the appHook, if passed\n if (appHook) {\n appHooks[name] = appHook;\n // Run the **new** app hook on all existing apps\n getApps().forEach(function (app) {\n appHook('create', app);\n });\n }\n // The Service namespace is an accessor function ...\n var serviceNamespace = function (appArg) {\n if (appArg === void 0) { appArg = app(); }\n if (typeof appArg[name] !== 'function') {\n // Invalid argument.\n // This happens in the following case: firebase.storage('gs:/')\n error('invalid-app-argument', { name: name });\n }\n // Forward service instance lookup to the FirebaseApp.\n return appArg[name]();\n };\n // ... and a container for service-level properties.\n if (serviceProperties !== undefined) {\n Object(cjs[\"deepExtend\"])(serviceNamespace, serviceProperties);\n }\n // Monkey-patch the serviceNamespace onto the firebase namespace\n namespace[name] = serviceNamespace;\n // Patch the FirebaseAppImpl prototype\n firebaseApp_FirebaseAppImpl.prototype[name] = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var serviceFxn = this._getService.bind(this, name);\n return serviceFxn.apply(this, allowMultipleInstances ? args : []);\n };\n return serviceNamespace;\n }\n /**\n * Patch the top-level firebase namespace with additional properties.\n *\n * firebase.INTERNAL.extendNamespace()\n */\n function extendNamespace(props) {\n Object(cjs[\"deepExtend\"])(namespace, props);\n }\n function callAppHooks(app, eventName) {\n Object.keys(factories).forEach(function (serviceName) {\n // Ignore virtual services\n var factoryName = useAsService(app, serviceName);\n if (factoryName === null) {\n return;\n }\n if (appHooks[factoryName]) {\n appHooks[factoryName](eventName, app);\n }\n });\n }\n // Map the requested service to a registered service name\n // (used to map auth to serverAuth service when needed).\n function useAsService(app, name) {\n if (name === 'serverAuth') {\n return null;\n }\n var useService = name;\n var options = app.options;\n return useService;\n }\n return namespace;\n}\nfunction error(code, args) {\n throw appErrors.create(code, args);\n}\n// TypeScript does not support non-string indexes!\n// let errors: {[code: AppError: string} = {\nvar errors = {\n 'no-app': \"No Firebase App '{$name}' has been created - \" +\n 'call Firebase App.initializeApp()',\n 'bad-app-name': \"Illegal App name: '{$name}\",\n 'duplicate-app': \"Firebase App named '{$name}' already exists\",\n 'app-deleted': \"Firebase App named '{$name}' already deleted\",\n 'duplicate-service': \"Firebase service named '{$name}' already registered\",\n 'sa-not-supported': 'Initializing the Firebase SDK with a service ' +\n 'account is only allowed in a Node.js environment. On client ' +\n 'devices, you should instead initialize the SDK with an api key and ' +\n 'auth domain',\n 'invalid-app-argument': 'firebase.{$name}() takes either no argument or a ' +\n 'Firebase App instance.'\n};\nvar appErrors = new cjs[\"ErrorFactory\"]('app', 'Firebase', errors);\n\n\n//# sourceMappingURL=firebaseApp.js.map\n\n// CONCATENATED MODULE: ../app/dist/esm/index.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"firebase\", function() { return firebase; });\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar firebase = createFirebaseNamespace();\n/* harmony default export */ var esm = __webpack_exports__[\"default\"] = (firebase);\n\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ }),\n/* 7 */,\n/* 8 */,\n/* 9 */,\n/* 10 */,\n/* 11 */,\n/* 12 */,\n/* 13 */,\n/* 14 */,\n/* 15 */,\n/* 16 */,\n/* 17 */,\n/* 18 */,\n/* 19 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\n */\nexports.CONSTANTS = {\n /**\n * @define {boolean} Whether this is the client Node.js SDK.\n */\n NODE_CLIENT: false,\n /**\n * @define {boolean} Whether this is the Admin Node.js SDK.\n */\n NODE_ADMIN: false,\n /**\n * Firebase SDK Version\n */\n SDK_VERSION: '${JSCORE_VERSION}'\n};\n\n//# sourceMappingURL=constants.js.map\n\n\n/***/ }),\n/* 21 */,\n/* 22 */,\n/* 23 */,\n/* 24 */,\n/* 25 */,\n/* 26 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = __webpack_require__(20);\n/**\n * Throws an error if the provided assertion is falsy\n * @param {*} assertion The assertion to be tested for falsiness\n * @param {!string} message The message to display if the check fails\n */\nexports.assert = function (assertion, message) {\n if (!assertion) {\n throw exports.assertionError(message);\n }\n};\n/**\n * Returns an Error object suitable for throwing.\n * @param {string} message\n * @return {!Error}\n */\nexports.assertionError = function (message) {\n return new Error('Firebase Database (' +\n constants_1.CONSTANTS.SDK_VERSION +\n ') INTERNAL ASSERT FAILED: ' +\n message);\n};\n\n//# sourceMappingURL=assert.js.map\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar stringToByteArray = function (str) {\n var output = [], p = 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n while (c > 255) {\n output[p++] = c & 255;\n c >>= 8;\n }\n output[p++] = c;\n }\n return output;\n};\n/**\n * Turns an array of numbers into the string given by the concatenation of the\n * characters to which the numbers correspond.\n * @param {Array} bytes Array of numbers representing characters.\n * @return {string} Stringification of the array.\n */\nvar byteArrayToString = function (bytes) {\n var CHUNK_SIZE = 8192;\n // Special-case the simple case for speed's sake.\n if (bytes.length < CHUNK_SIZE) {\n return String.fromCharCode.apply(null, bytes);\n }\n // The remaining logic splits conversion by chunks since\n // Function#apply() has a maximum parameter count.\n // See discussion: http://goo.gl/LrWmZ9\n var str = '';\n for (var i = 0; i < bytes.length; i += CHUNK_SIZE) {\n var chunk = bytes.slice(i, i + CHUNK_SIZE);\n str += String.fromCharCode.apply(null, chunk);\n }\n return str;\n};\n// Static lookup maps, lazily populated by init_()\nexports.base64 = {\n /**\n * Maps bytes to characters.\n * @type {Object}\n * @private\n */\n byteToCharMap_: null,\n /**\n * Maps characters to bytes.\n * @type {Object}\n * @private\n */\n charToByteMap_: null,\n /**\n * Maps bytes to websafe characters.\n * @type {Object}\n * @private\n */\n byteToCharMapWebSafe_: null,\n /**\n * Maps websafe characters to bytes.\n * @type {Object}\n * @private\n */\n charToByteMapWebSafe_: null,\n /**\n * Our default alphabet, shared between\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\n * @type {string}\n */\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\n /**\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\n * @type {string}\n */\n get ENCODED_VALS() {\n return this.ENCODED_VALS_BASE + '+/=';\n },\n /**\n * Our websafe alphabet.\n * @type {string}\n */\n get ENCODED_VALS_WEBSAFE() {\n return this.ENCODED_VALS_BASE + '-_.';\n },\n /**\n * Whether this browser supports the atob and btoa functions. This extension\n * started at Mozilla but is now implemented by many browsers. We use the\n * ASSUME_* variables to avoid pulling in the full useragent detection library\n * but still allowing the standard per-browser compilations.\n *\n * @type {boolean}\n */\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\n /**\n * Base64-encode an array of bytes.\n *\n * @param {Array|Uint8Array} input An array of bytes (numbers with\n * value in [0, 255]) to encode.\n * @param {boolean=} opt_webSafe Boolean indicating we should use the\n * alternative alphabet.\n * @return {string} The base64 encoded string.\n */\n encodeByteArray: function (input, opt_webSafe) {\n if (!Array.isArray(input)) {\n throw Error('encodeByteArray takes an array as a parameter');\n }\n this.init_();\n var byteToCharMap = opt_webSafe\n ? this.byteToCharMapWebSafe_\n : this.byteToCharMap_;\n var output = [];\n for (var i = 0; i < input.length; i += 3) {\n var byte1 = input[i];\n var haveByte2 = i + 1 < input.length;\n var byte2 = haveByte2 ? input[i + 1] : 0;\n var haveByte3 = i + 2 < input.length;\n var byte3 = haveByte3 ? input[i + 2] : 0;\n var outByte1 = byte1 >> 2;\n var outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\n var outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\n var outByte4 = byte3 & 0x3f;\n if (!haveByte3) {\n outByte4 = 64;\n if (!haveByte2) {\n outByte3 = 64;\n }\n }\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\n }\n return output.join('');\n },\n /**\n * Base64-encode a string.\n *\n * @param {string} input A string to encode.\n * @param {boolean=} opt_webSafe If true, we should use the\n * alternative alphabet.\n * @return {string} The base64 encoded string.\n */\n encodeString: function (input, opt_webSafe) {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !opt_webSafe) {\n return btoa(input);\n }\n return this.encodeByteArray(stringToByteArray(input), opt_webSafe);\n },\n /**\n * Base64-decode a string.\n *\n * @param {string} input to decode.\n * @param {boolean=} opt_webSafe True if we should use the\n * alternative alphabet.\n * @return {string} string representing the decoded value.\n */\n decodeString: function (input, opt_webSafe) {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !opt_webSafe) {\n return atob(input);\n }\n return byteArrayToString(this.decodeStringToByteArray(input, opt_webSafe));\n },\n /**\n * Base64-decode a string.\n *\n * In base-64 decoding, groups of four characters are converted into three\n * bytes. If the encoder did not apply padding, the input length may not\n * be a multiple of 4.\n *\n * In this case, the last group will have fewer than 4 characters, and\n * padding will be inferred. If the group has one or two characters, it decodes\n * to one byte. If the group has three characters, it decodes to two bytes.\n *\n * @param {string} input Input to decode.\n * @param {boolean=} opt_webSafe True if we should use the web-safe alphabet.\n * @return {!Array} bytes representing the decoded value.\n */\n decodeStringToByteArray: function (input, opt_webSafe) {\n this.init_();\n var charToByteMap = opt_webSafe\n ? this.charToByteMapWebSafe_\n : this.charToByteMap_;\n var output = [];\n for (var i = 0; i < input.length;) {\n var byte1 = charToByteMap[input.charAt(i++)];\n var haveByte2 = i < input.length;\n var byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\n ++i;\n var haveByte3 = i < input.length;\n var byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n var haveByte4 = i < input.length;\n var byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\n throw Error();\n }\n var outByte1 = (byte1 << 2) | (byte2 >> 4);\n output.push(outByte1);\n if (byte3 != 64) {\n var outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\n output.push(outByte2);\n if (byte4 != 64) {\n var outByte3 = ((byte3 << 6) & 0xc0) | byte4;\n output.push(outByte3);\n }\n }\n }\n return output;\n },\n /**\n * Lazy static initialization function. Called before\n * accessing any of the static map variables.\n * @private\n */\n init_: function () {\n if (!this.byteToCharMap_) {\n this.byteToCharMap_ = {};\n this.charToByteMap_ = {};\n this.byteToCharMapWebSafe_ = {};\n this.charToByteMapWebSafe_ = {};\n // We want quick mappings back and forth, so we precompute two maps.\n for (var i = 0; i < this.ENCODED_VALS.length; i++) {\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\n // Be forgiving when decoding and correctly decode both encodings.\n if (i >= this.ENCODED_VALS_BASE.length) {\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\n }\n }\n }\n }\n};\n/**\n * URL-safe base64 encoding\n * @param {!string} str\n * @return {!string}\n */\nexports.base64Encode = function (str) {\n var utf8Bytes = stringToByteArray(str);\n return exports.base64.encodeByteArray(utf8Bytes, true);\n};\n/**\n * URL-safe base64 decoding\n *\n * NOTE: DO NOT use the global atob() function - it does NOT support the\n * base64Url variant encoding.\n *\n * @param {string} str To be decoded\n * @return {?string} Decoded result, if possible\n */\nexports.base64Decode = function (str) {\n try {\n return exports.base64.decodeString(str, true);\n }\n catch (e) {\n console.error('base64Decode failed: ', e);\n }\n return null;\n};\n\n//# sourceMappingURL=crypt.js.map\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Evaluates a JSON string into a javascript object.\n *\n * @param {string} str A string containing JSON.\n * @return {*} The javascript object representing the specified JSON.\n */\nfunction jsonEval(str) {\n return JSON.parse(str);\n}\nexports.jsonEval = jsonEval;\n/**\n * Returns JSON representing a javascript object.\n * @param {*} data Javascript object to be stringified.\n * @return {string} The JSON contents of the object.\n */\nfunction stringify(data) {\n return JSON.stringify(data);\n}\nexports.stringify = stringify;\n\n//# sourceMappingURL=json.js.map\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// See http://www.devthought.com/2012/01/18/an-object-is-not-a-hash/\nexports.contains = function (obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\nexports.safeGet = function (obj, key) {\n if (Object.prototype.hasOwnProperty.call(obj, key))\n return obj[key];\n // else return undefined.\n};\n/**\n * Enumerates the keys/values in an object, excluding keys defined on the prototype.\n *\n * @param {?Object.} obj Object to enumerate.\n * @param {!function(K, V)} fn Function to call for each key and value.\n * @template K,V\n */\nexports.forEach = function (obj, fn) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn(key, obj[key]);\n }\n }\n};\n/**\n * Copies all the (own) properties from one object to another.\n * @param {!Object} objTo\n * @param {!Object} objFrom\n * @return {!Object} objTo\n */\nexports.extend = function (objTo, objFrom) {\n exports.forEach(objFrom, function (key, value) {\n objTo[key] = value;\n });\n return objTo;\n};\n/**\n * Returns a clone of the specified object.\n * @param {!Object} obj\n * @return {!Object} cloned obj.\n */\nexports.clone = function (obj) {\n return exports.extend({}, obj);\n};\n/**\n * Returns true if obj has typeof \"object\" and is not null. Unlike goog.isObject(), does not return true\n * for functions.\n *\n * @param obj {*} A potential object.\n * @returns {boolean} True if it's an object.\n */\nexports.isNonNullObject = function (obj) {\n return typeof obj === 'object' && obj !== null;\n};\nexports.isEmpty = function (obj) {\n for (var key in obj) {\n return false;\n }\n return true;\n};\nexports.getCount = function (obj) {\n var rv = 0;\n for (var key in obj) {\n rv++;\n }\n return rv;\n};\nexports.map = function (obj, f, opt_obj) {\n var res = {};\n for (var key in obj) {\n res[key] = f.call(opt_obj, obj[key], key, obj);\n }\n return res;\n};\nexports.findKey = function (obj, fn, opt_this) {\n for (var key in obj) {\n if (fn.call(opt_this, obj[key], key, obj)) {\n return key;\n }\n }\n return undefined;\n};\nexports.findValue = function (obj, fn, opt_this) {\n var key = exports.findKey(obj, fn, opt_this);\n return key && obj[key];\n};\nexports.getAnyKey = function (obj) {\n for (var key in obj) {\n return key;\n }\n};\nexports.getValues = function (obj) {\n var res = [];\n var i = 0;\n for (var key in obj) {\n res[i++] = obj[key];\n }\n return res;\n};\n/**\n * Tests whether every key/value pair in an object pass the test implemented\n * by the provided function\n *\n * @param {?Object.} obj Object to test.\n * @param {!function(K, V)} fn Function to call for each key and value.\n * @template K,V\n */\nexports.every = function (obj, fn) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (!fn(key, obj[key])) {\n return false;\n }\n }\n }\n return true;\n};\n\n//# sourceMappingURL=obj.js.map\n\n\n/***/ }),\n/* 31 */,\n/* 32 */,\n/* 33 */,\n/* 34 */,\n/* 35 */,\n/* 36 */,\n/* 37 */,\n/* 38 */,\n/* 39 */,\n/* 40 */,\n/* 41 */,\n/* 42 */,\n/* 43 */,\n/* 44 */,\n/* 45 */,\n/* 46 */,\n/* 47 */,\n/* 48 */,\n/* 49 */,\n/* 50 */,\n/* 51 */,\n/* 52 */,\n/* 53 */,\n/* 54 */,\n/* 55 */,\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n__webpack_require__(57);\nmodule.exports = __webpack_require__(6).default;\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_polyfills_promise__ = __webpack_require__(58);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_polyfills_promise___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__src_polyfills_promise__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_shims_find__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_shims_find___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__src_shims_find__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_shims_findIndex__ = __webpack_require__(63);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_shims_findIndex___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__src_shims_findIndex__);\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __global = (function () {\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n throw new Error('unable to locate global object');\n})();\n// Polyfill Promise\nif (typeof Promise === 'undefined') {\n // HACK: TS throws an error if I attempt to use 'dot-notation'\n __global['Promise'] = Promise = __webpack_require__(59);\n}\n\n//# sourceMappingURL=promise.js.map\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(19)))\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(setImmediate) {(function (root) {\n\n // Store setTimeout reference so promise-polyfill will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var setTimeoutFunc = setTimeout;\n\n function noop() {}\n \n // Polyfill for Function.prototype.bind\n function bind(fn, thisArg) {\n return function () {\n fn.apply(thisArg, arguments);\n };\n }\n\n function Promise(fn) {\n if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n this._state = 0;\n this._handled = false;\n this._value = undefined;\n this._deferreds = [];\n\n doResolve(fn, this);\n }\n\n function handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function () {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n }\n\n function resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');\n if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n }\n\n function reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n }\n\n function finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n }\n\n function Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n }\n\n /**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\n function doResolve(fn, self) {\n var done = false;\n try {\n fn(function (value) {\n if (done) return;\n done = true;\n resolve(self, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n });\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n }\n\n Promise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n };\n\n Promise.prototype.then = function (onFulfilled, onRejected) {\n var prom = new (this.constructor)(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n };\n\n Promise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(val, function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n };\n\n Promise.resolve = function (value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function (resolve) {\n resolve(value);\n });\n };\n\n Promise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n };\n\n Promise.race = function (values) {\n return new Promise(function (resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n };\n\n // Use polyfill for setImmediate for performance gains\n Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) ||\n function (fn) {\n setTimeoutFunc(fn, 0);\n };\n\n Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n };\n\n /**\n * Set the immediate function to execute callbacks\n * @param fn {function} Function to execute\n * @deprecated\n */\n Promise._setImmediateFn = function _setImmediateFn(fn) {\n Promise._immediateFn = fn;\n };\n\n /**\n * Change the function to execute on unhandled rejection\n * @param {function} fn Function to execute on unhandled rejection\n * @deprecated\n */\n Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {\n Promise._unhandledRejectionFn = fn;\n };\n \n if (typeof module !== 'undefined' && module.exports) {\n module.exports = Promise;\n } else if (!root.Promise) {\n root.Promise = Promise;\n }\n\n})(this);\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(60).setImmediate))\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(61);\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a ';\n }\n var iframeContents = '' + script + '';\n try {\n this.myIFrame.doc.open();\n this.myIFrame.doc.write(iframeContents);\n this.myIFrame.doc.close();\n }\n catch (e) {\n util_1.log('frame writing exception');\n if (e.stack) {\n util_1.log(e.stack);\n }\n util_1.log(e);\n }\n }\n else {\n this.commandCB = commandCB;\n this.onMessageCB = onMessageCB;\n }\n }\n /**\n * Each browser has its own funny way to handle iframes. Here we mush them all together into one object that I can\n * actually use.\n * @private\n * @return {Element}\n */\n FirebaseIFrameScriptHolder.createIFrame_ = function () {\n var iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n // This is necessary in order to initialize the document inside the iframe\n if (document.body) {\n document.body.appendChild(iframe);\n try {\n // If document.domain has been modified in IE, this will throw an error, and we need to set the\n // domain of the iframe's document manually. We can do this via a javascript: url as the src attribute\n // Also note that we must do this *after* the iframe has been appended to the page. Otherwise it doesn't work.\n var a = iframe.contentWindow.document;\n if (!a) {\n // Apologies for the log-spam, I need to do something to keep closure from optimizing out the assignment above.\n util_1.log('No IE domain setting required');\n }\n }\n catch (e) {\n var domain = document.domain;\n iframe.src =\n \"javascript:void((function(){document.open();document.domain='\" +\n domain +\n \"';document.close();})())\";\n }\n }\n else {\n // LongPollConnection attempts to delay initialization until the document is ready, so hopefully this\n // never gets hit.\n throw 'Document body has not initialized. Wait to initialize Firebase until after the document is ready.';\n }\n // Get the document of the iframe in a browser-specific way.\n if (iframe.contentDocument) {\n iframe.doc = iframe.contentDocument; // Firefox, Opera, Safari\n }\n else if (iframe.contentWindow) {\n iframe.doc = iframe.contentWindow.document; // Internet Explorer\n }\n else if (iframe.document) {\n iframe.doc = iframe.document; //others?\n }\n return iframe;\n };\n /**\n * Cancel all outstanding queries and remove the frame.\n */\n FirebaseIFrameScriptHolder.prototype.close = function () {\n var _this = this;\n //Mark this iframe as dead, so no new requests are sent.\n this.alive = false;\n if (this.myIFrame) {\n //We have to actually remove all of the html inside this iframe before removing it from the\n //window, or IE will continue loading and executing the script tags we've already added, which\n //can lead to some errors being thrown. Setting innerHTML seems to be the easiest way to do this.\n this.myIFrame.doc.body.innerHTML = '';\n setTimeout(function () {\n if (_this.myIFrame !== null) {\n document.body.removeChild(_this.myIFrame);\n _this.myIFrame = null;\n }\n }, Math.floor(0));\n }\n if (util_3.isNodeSdk() && this.myID) {\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM] = 't';\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n var theURL = this.urlFn(urlParams);\n FirebaseIFrameScriptHolder.nodeRestRequest(theURL);\n }\n // Protect from being called recursively.\n var onDisconnect = this.onDisconnect;\n if (onDisconnect) {\n this.onDisconnect = null;\n onDisconnect();\n }\n };\n /**\n * Actually start the long-polling session by adding the first script tag(s) to the iframe.\n * @param {!string} id - The ID of this connection\n * @param {!string} pw - The password for this connection\n */\n FirebaseIFrameScriptHolder.prototype.startLongPoll = function (id, pw) {\n this.myID = id;\n this.myPW = pw;\n this.alive = true;\n //send the initial request. If there are requests queued, make sure that we transmit as many as we are currently able to.\n while (this.newRequest_()) { }\n };\n /**\n * This is called any time someone might want a script tag to be added. It adds a script tag when there aren't\n * too many outstanding requests and we are still alive.\n *\n * If there are outstanding packet segments to send, it sends one. If there aren't, it sends a long-poll anyways if\n * needed.\n */\n FirebaseIFrameScriptHolder.prototype.newRequest_ = function () {\n // We keep one outstanding request open all the time to receive data, but if we need to send data\n // (pendingSegs.length > 0) then we create a new request to send the data. The server will automatically\n // close the old request.\n if (this.alive &&\n this.sendNewPolls &&\n this.outstandingRequests.count() < (this.pendingSegs.length > 0 ? 2 : 1)) {\n //construct our url\n this.currentSerial++;\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n urlParams[exports.FIREBASE_LONGPOLL_SERIAL_PARAM] = this.currentSerial;\n var theURL = this.urlFn(urlParams);\n //Now add as much data as we can.\n var curDataString = '';\n var i = 0;\n while (this.pendingSegs.length > 0) {\n //first, lets see if the next segment will fit.\n var nextSeg = this.pendingSegs[0];\n if (nextSeg.d.length + SEG_HEADER_SIZE + curDataString.length <=\n MAX_URL_DATA_SIZE) {\n //great, the segment will fit. Lets append it.\n var theSeg = this.pendingSegs.shift();\n curDataString =\n curDataString +\n '&' +\n exports.FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM +\n i +\n '=' +\n theSeg.seg +\n '&' +\n exports.FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET +\n i +\n '=' +\n theSeg.ts +\n '&' +\n exports.FIREBASE_LONGPOLL_DATA_PARAM +\n i +\n '=' +\n theSeg.d;\n i++;\n }\n else {\n break;\n }\n }\n theURL = theURL + curDataString;\n this.addLongPollTag_(theURL, this.currentSerial);\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Queue a packet for transmission to the server.\n * @param segnum - A sequential id for this packet segment used for reassembly\n * @param totalsegs - The total number of segments in this packet\n * @param data - The data for this segment.\n */\n FirebaseIFrameScriptHolder.prototype.enqueueSegment = function (segnum, totalsegs, data) {\n //add this to the queue of segments to send.\n this.pendingSegs.push({ seg: segnum, ts: totalsegs, d: data });\n //send the data immediately if there isn't already data being transmitted, unless\n //startLongPoll hasn't been called yet.\n if (this.alive) {\n this.newRequest_();\n }\n };\n /**\n * Add a script tag for a regular long-poll request.\n * @param {!string} url - The URL of the script tag.\n * @param {!number} serial - The serial number of the request.\n * @private\n */\n FirebaseIFrameScriptHolder.prototype.addLongPollTag_ = function (url, serial) {\n var _this = this;\n //remember that we sent this request.\n this.outstandingRequests.add(serial, 1);\n var doNewRequest = function () {\n _this.outstandingRequests.remove(serial);\n _this.newRequest_();\n };\n // If this request doesn't return on its own accord (by the server sending us some data), we'll\n // create a new one after the KEEPALIVE interval to make sure we always keep a fresh request open.\n var keepaliveTimeout = setTimeout(doNewRequest, Math.floor(KEEPALIVE_REQUEST_INTERVAL));\n var readyStateCB = function () {\n // Request completed. Cancel the keepalive.\n clearTimeout(keepaliveTimeout);\n // Trigger a new request so we can continue receiving data.\n doNewRequest();\n };\n this.addTag(url, readyStateCB);\n };\n /**\n * Add an arbitrary script tag to the iframe.\n * @param {!string} url - The URL for the script tag source.\n * @param {!function()} loadCB - A callback to be triggered once the script has loaded.\n */\n FirebaseIFrameScriptHolder.prototype.addTag = function (url, loadCB) {\n var _this = this;\n if (util_3.isNodeSdk()) {\n this.doNodeLongPoll(url, loadCB);\n }\n else {\n setTimeout(function () {\n try {\n // if we're already closed, don't add this poll\n if (!_this.sendNewPolls)\n return;\n var newScript_1 = _this.myIFrame.doc.createElement('script');\n newScript_1.type = 'text/javascript';\n newScript_1.async = true;\n newScript_1.src = url;\n newScript_1.onload = newScript_1.onreadystatechange = function () {\n var rstate = newScript_1.readyState;\n if (!rstate || rstate === 'loaded' || rstate === 'complete') {\n newScript_1.onload = newScript_1.onreadystatechange = null;\n if (newScript_1.parentNode) {\n newScript_1.parentNode.removeChild(newScript_1);\n }\n loadCB();\n }\n };\n newScript_1.onerror = function () {\n util_1.log('Long-poll script failed to load: ' + url);\n _this.sendNewPolls = false;\n _this.close();\n };\n _this.myIFrame.doc.body.appendChild(newScript_1);\n }\n catch (e) {\n // TODO: we should make this error visible somehow\n }\n }, Math.floor(1));\n }\n };\n return FirebaseIFrameScriptHolder;\n}());\nexports.FirebaseIFrameScriptHolder = FirebaseIFrameScriptHolder;\n\n//# sourceMappingURL=BrowserPollConnection.js.map\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = __webpack_require__(6);\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar StatsManager_1 = __webpack_require__(24);\nvar Constants_1 = __webpack_require__(13);\nvar util_3 = __webpack_require__(0);\nvar storage_1 = __webpack_require__(12);\nvar util_4 = __webpack_require__(0);\nvar util_5 = __webpack_require__(0);\nvar WEBSOCKET_MAX_FRAME_SIZE = 16384;\nvar WEBSOCKET_KEEPALIVE_INTERVAL = 45000;\nvar WebSocketImpl = null;\nif (typeof MozWebSocket !== 'undefined') {\n WebSocketImpl = MozWebSocket;\n}\nelse if (typeof WebSocket !== 'undefined') {\n WebSocketImpl = WebSocket;\n}\nfunction setWebSocketImpl(impl) {\n WebSocketImpl = impl;\n}\nexports.setWebSocketImpl = setWebSocketImpl;\n/**\n * Create a new websocket connection with the given callbacks.\n * @constructor\n * @implements {Transport}\n */\nvar WebSocketConnection = /** @class */ (function () {\n /**\n * @param {string} connId identifier for this transport\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\n */\n function WebSocketConnection(connId, repoInfo, transportSessionId, lastSessionId) {\n this.connId = connId;\n this.keepaliveTimer = null;\n this.frames = null;\n this.totalFrames = 0;\n this.bytesSent = 0;\n this.bytesReceived = 0;\n this.log_ = util_2.logWrapper(this.connId);\n this.stats_ = StatsManager_1.StatsManager.getCollection(repoInfo);\n this.connURL = WebSocketConnection.connectionURL_(repoInfo, transportSessionId, lastSessionId);\n }\n /**\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\n * @return {string} connection url\n * @private\n */\n WebSocketConnection.connectionURL_ = function (repoInfo, transportSessionId, lastSessionId) {\n var urlParams = {};\n urlParams[Constants_1.VERSION_PARAM] = Constants_1.PROTOCOL_VERSION;\n if (!util_5.isNodeSdk() &&\n typeof location !== 'undefined' &&\n location.href &&\n location.href.indexOf(Constants_1.FORGE_DOMAIN) !== -1) {\n urlParams[Constants_1.REFERER_PARAM] = Constants_1.FORGE_REF;\n }\n if (transportSessionId) {\n urlParams[Constants_1.TRANSPORT_SESSION_PARAM] = transportSessionId;\n }\n if (lastSessionId) {\n urlParams[Constants_1.LAST_SESSION_PARAM] = lastSessionId;\n }\n return repoInfo.connectionURL(Constants_1.WEBSOCKET, urlParams);\n };\n /**\n *\n * @param onMessage Callback when messages arrive\n * @param onDisconnect Callback with connection lost.\n */\n WebSocketConnection.prototype.open = function (onMessage, onDisconnect) {\n var _this = this;\n this.onDisconnect = onDisconnect;\n this.onMessage = onMessage;\n this.log_('Websocket connecting to ' + this.connURL);\n this.everConnected_ = false;\n // Assume failure until proven otherwise.\n storage_1.PersistentStorage.set('previous_websocket_failure', true);\n try {\n if (util_5.isNodeSdk()) {\n var device = util_3.CONSTANTS.NODE_ADMIN ? 'AdminNode' : 'Node';\n // UA Format: Firebase////\n var options = {\n headers: {\n 'User-Agent': \"Firebase/\" + Constants_1.PROTOCOL_VERSION + \"/\" + app_1.default.SDK_VERSION + \"/\" + process.platform + \"/\" + device\n }\n };\n // Plumb appropriate http_proxy environment variable into faye-websocket if it exists.\n var env = process['env'];\n var proxy = this.connURL.indexOf('wss://') == 0\n ? env['HTTPS_PROXY'] || env['https_proxy']\n : env['HTTP_PROXY'] || env['http_proxy'];\n if (proxy) {\n options['proxy'] = { origin: proxy };\n }\n this.mySock = new WebSocketImpl(this.connURL, [], options);\n }\n else {\n this.mySock = new WebSocketImpl(this.connURL);\n }\n }\n catch (e) {\n this.log_('Error instantiating WebSocket.');\n var error = e.message || e.data;\n if (error) {\n this.log_(error);\n }\n this.onClosed_();\n return;\n }\n this.mySock.onopen = function () {\n _this.log_('Websocket connected.');\n _this.everConnected_ = true;\n };\n this.mySock.onclose = function () {\n _this.log_('Websocket connection was disconnected.');\n _this.mySock = null;\n _this.onClosed_();\n };\n this.mySock.onmessage = function (m) {\n _this.handleIncomingFrame(m);\n };\n this.mySock.onerror = function (e) {\n _this.log_('WebSocket error. Closing connection.');\n var error = e.message || e.data;\n if (error) {\n _this.log_(error);\n }\n _this.onClosed_();\n };\n };\n /**\n * No-op for websockets, we don't need to do anything once the connection is confirmed as open\n */\n WebSocketConnection.prototype.start = function () { };\n WebSocketConnection.forceDisallow = function () {\n WebSocketConnection.forceDisallow_ = true;\n };\n WebSocketConnection.isAvailable = function () {\n var isOldAndroid = false;\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n var oldAndroidRegex = /Android ([0-9]{0,}\\.[0-9]{0,})/;\n var oldAndroidMatch = navigator.userAgent.match(oldAndroidRegex);\n if (oldAndroidMatch && oldAndroidMatch.length > 1) {\n if (parseFloat(oldAndroidMatch[1]) < 4.4) {\n isOldAndroid = true;\n }\n }\n }\n return (!isOldAndroid &&\n WebSocketImpl !== null &&\n !WebSocketConnection.forceDisallow_);\n };\n /**\n * Returns true if we previously failed to connect with this transport.\n * @return {boolean}\n */\n WebSocketConnection.previouslyFailed = function () {\n // If our persistent storage is actually only in-memory storage,\n // we default to assuming that it previously failed to be safe.\n return (storage_1.PersistentStorage.isInMemoryStorage ||\n storage_1.PersistentStorage.get('previous_websocket_failure') === true);\n };\n WebSocketConnection.prototype.markConnectionHealthy = function () {\n storage_1.PersistentStorage.remove('previous_websocket_failure');\n };\n WebSocketConnection.prototype.appendFrame_ = function (data) {\n this.frames.push(data);\n if (this.frames.length == this.totalFrames) {\n var fullMess = this.frames.join('');\n this.frames = null;\n var jsonMess = util_4.jsonEval(fullMess);\n //handle the message\n this.onMessage(jsonMess);\n }\n };\n /**\n * @param {number} frameCount The number of frames we are expecting from the server\n * @private\n */\n WebSocketConnection.prototype.handleNewFrameCount_ = function (frameCount) {\n this.totalFrames = frameCount;\n this.frames = [];\n };\n /**\n * Attempts to parse a frame count out of some text. If it can't, assumes a value of 1\n * @param {!String} data\n * @return {?String} Any remaining data to be process, or null if there is none\n * @private\n */\n WebSocketConnection.prototype.extractFrameCount_ = function (data) {\n util_1.assert(this.frames === null, 'We already have a frame buffer');\n // TODO: The server is only supposed to send up to 9999 frames (i.e. length <= 4), but that isn't being enforced\n // currently. So allowing larger frame counts (length <= 6). See https://app.asana.com/0/search/8688598998380/8237608042508\n if (data.length <= 6) {\n var frameCount = Number(data);\n if (!isNaN(frameCount)) {\n this.handleNewFrameCount_(frameCount);\n return null;\n }\n }\n this.handleNewFrameCount_(1);\n return data;\n };\n /**\n * Process a websocket frame that has arrived from the server.\n * @param mess The frame data\n */\n WebSocketConnection.prototype.handleIncomingFrame = function (mess) {\n if (this.mySock === null)\n return; // Chrome apparently delivers incoming packets even after we .close() the connection sometimes.\n var data = mess['data'];\n this.bytesReceived += data.length;\n this.stats_.incrementCounter('bytes_received', data.length);\n this.resetKeepAlive();\n if (this.frames !== null) {\n // we're buffering\n this.appendFrame_(data);\n }\n else {\n // try to parse out a frame count, otherwise, assume 1 and process it\n var remainingData = this.extractFrameCount_(data);\n if (remainingData !== null) {\n this.appendFrame_(remainingData);\n }\n }\n };\n /**\n * Send a message to the server\n * @param {Object} data The JSON object to transmit\n */\n WebSocketConnection.prototype.send = function (data) {\n this.resetKeepAlive();\n var dataStr = util_4.stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n //We can only fit a certain amount in each websocket frame, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n var dataSegs = util_2.splitStringBySize(dataStr, WEBSOCKET_MAX_FRAME_SIZE);\n //Send the length header\n if (dataSegs.length > 1) {\n this.sendString_(String(dataSegs.length));\n }\n //Send the actual data in segments.\n for (var i = 0; i < dataSegs.length; i++) {\n this.sendString_(dataSegs[i]);\n }\n };\n WebSocketConnection.prototype.shutdown_ = function () {\n this.isClosed_ = true;\n if (this.keepaliveTimer) {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = null;\n }\n if (this.mySock) {\n this.mySock.close();\n this.mySock = null;\n }\n };\n WebSocketConnection.prototype.onClosed_ = function () {\n if (!this.isClosed_) {\n this.log_('WebSocket is closing itself');\n this.shutdown_();\n // since this is an internal close, trigger the close listener\n if (this.onDisconnect) {\n this.onDisconnect(this.everConnected_);\n this.onDisconnect = null;\n }\n }\n };\n /**\n * External-facing close handler.\n * Close the websocket and kill the connection.\n */\n WebSocketConnection.prototype.close = function () {\n if (!this.isClosed_) {\n this.log_('WebSocket is being closed');\n this.shutdown_();\n }\n };\n /**\n * Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after\n * the last activity.\n */\n WebSocketConnection.prototype.resetKeepAlive = function () {\n var _this = this;\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = setInterval(function () {\n //If there has been no websocket activity for a while, send a no-op\n if (_this.mySock) {\n _this.sendString_('0');\n }\n _this.resetKeepAlive();\n }, Math.floor(WEBSOCKET_KEEPALIVE_INTERVAL));\n };\n /**\n * Send a string over the websocket.\n *\n * @param {string} str String to send.\n * @private\n */\n WebSocketConnection.prototype.sendString_ = function (str) {\n // Firefox seems to sometimes throw exceptions (NS_ERROR_UNEXPECTED) from websocket .send()\n // calls for some unknown reason. We treat these as an error and disconnect.\n // See https://app.asana.com/0/58926111402292/68021340250410\n try {\n this.mySock.send(str);\n }\n catch (e) {\n this.log_('Exception thrown from WebSocket.send():', e.message || e.data, 'Closing connection.');\n setTimeout(this.onClosed_.bind(this), 0);\n }\n };\n /**\n * Number of response before we consider the connection \"healthy.\"\n * @type {number}\n */\n WebSocketConnection.responsesRequiredToBeHealthy = 2;\n /**\n * Time to wait for the connection te become healthy before giving up.\n * @type {number}\n */\n WebSocketConnection.healthyTimeout = 30000;\n return WebSocketConnection;\n}());\nexports.WebSocketConnection = WebSocketConnection;\n\n//# sourceMappingURL=WebSocketConnection.js.map\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(26)))\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Interface defining the set of actions that can be performed against the Firebase server\n * (basically corresponds to our wire protocol).\n *\n * @interface\n */\nvar ServerActions = /** @class */ (function () {\n function ServerActions() {\n }\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n * @param {string=} hash\n */\n ServerActions.prototype.put = function (pathString, data, onComplete, hash) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, ?string)} onComplete\n * @param {string=} hash\n */\n ServerActions.prototype.merge = function (pathString, data, onComplete, hash) { };\n /**\n * Refreshes the auth token for the current connection.\n * @param {string} token The authentication token\n */\n ServerActions.prototype.refreshAuthToken = function (token) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectPut = function (pathString, data, onComplete) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectMerge = function (pathString, data, onComplete) { };\n /**\n * @param {string} pathString\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectCancel = function (pathString, onComplete) { };\n /**\n * @param {Object.} stats\n */\n ServerActions.prototype.reportStats = function (stats) { };\n return ServerActions;\n}());\nexports.ServerActions = ServerActions;\n\n//# sourceMappingURL=ServerActions.js.map\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IndexedFilter_1 = __webpack_require__(23);\nvar PriorityIndex_1 = __webpack_require__(3);\nvar Node_1 = __webpack_require__(5);\nvar ChildrenNode_1 = __webpack_require__(4);\n/**\n * Filters nodes by range and uses an IndexFilter to track any changes after filtering the node\n *\n * @constructor\n * @implements {NodeFilter}\n */\nvar RangedFilter = /** @class */ (function () {\n /**\n * @param {!QueryParams} params\n */\n function RangedFilter(params) {\n this.indexedFilter_ = new IndexedFilter_1.IndexedFilter(params.getIndex());\n this.index_ = params.getIndex();\n this.startPost_ = RangedFilter.getStartPost_(params);\n this.endPost_ = RangedFilter.getEndPost_(params);\n }\n /**\n * @return {!NamedNode}\n */\n RangedFilter.prototype.getStartPost = function () {\n return this.startPost_;\n };\n /**\n * @return {!NamedNode}\n */\n RangedFilter.prototype.getEndPost = function () {\n return this.endPost_;\n };\n /**\n * @param {!NamedNode} node\n * @return {boolean}\n */\n RangedFilter.prototype.matches = function (node) {\n return (this.index_.compare(this.getStartPost(), node) <= 0 &&\n this.index_.compare(node, this.getEndPost()) <= 0);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.matches(new Node_1.NamedNode(key, newChild))) {\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n return this.indexedFilter_.updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n if (newSnap.isLeafNode()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n newSnap = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n var filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var self = this;\n newSnap.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n if (!self.matches(new Node_1.NamedNode(key, childNode))) {\n filtered = filtered.updateImmediateChild(key, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n });\n return this.indexedFilter_.updateFullNode(oldSnap, filtered, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.filtersNodes = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.getIndexedFilter = function () {\n return this.indexedFilter_;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @param {!QueryParams} params\n * @return {!NamedNode}\n * @private\n */\n RangedFilter.getStartPost_ = function (params) {\n if (params.hasStart()) {\n var startName = params.getIndexStartName();\n return params.getIndex().makePost(params.getIndexStartValue(), startName);\n }\n else {\n return params.getIndex().minPost();\n }\n };\n /**\n * @param {!QueryParams} params\n * @return {!NamedNode}\n * @private\n */\n RangedFilter.getEndPost_ = function (params) {\n if (params.hasEnd()) {\n var endName = params.getIndexEndName();\n return params.getIndex().makePost(params.getIndexEndValue(), endName);\n }\n else {\n return params.getIndex().maxPost();\n }\n };\n return RangedFilter;\n}());\nexports.RangedFilter = RangedFilter;\n\n//# sourceMappingURL=RangedFilter.js.map\n\n\n/***/ }),\n/* 56 */,\n/* 57 */,\n/* 58 */,\n/* 59 */,\n/* 60 */,\n/* 61 */,\n/* 62 */,\n/* 63 */,\n/* 64 */,\n/* 65 */,\n/* 66 */,\n/* 67 */,\n/* 68 */,\n/* 69 */,\n/* 70 */,\n/* 71 */,\n/* 72 */,\n/* 73 */,\n/* 74 */,\n/* 75 */,\n/* 76 */,\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nmodule.exports = __webpack_require__(78);\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = __webpack_require__(6);\nvar Database_1 = __webpack_require__(31);\nvar Query_1 = __webpack_require__(34);\nvar Reference_1 = __webpack_require__(21);\nvar util_1 = __webpack_require__(1);\nvar RepoManager_1 = __webpack_require__(25);\nvar INTERNAL = __webpack_require__(111);\nvar TEST_ACCESS = __webpack_require__(112);\nvar util_2 = __webpack_require__(0);\nfunction registerDatabase(instance) {\n // Register the Database Service with the 'firebase' namespace.\n var namespace = instance.INTERNAL.registerService('database', function (app, unused, url) { return RepoManager_1.RepoManager.getInstance().databaseFromApp(app, url); }, \n // firebase.database namespace properties\n {\n Reference: Reference_1.Reference,\n Query: Query_1.Query,\n Database: Database_1.Database,\n enableLogging: util_1.enableLogging,\n INTERNAL: INTERNAL,\n ServerValue: Database_1.Database.ServerValue,\n TEST_ACCESS: TEST_ACCESS\n }, null, true);\n if (util_2.isNodeSdk()) {\n module.exports = namespace;\n }\n}\nexports.registerDatabase = registerDatabase;\nregisterDatabase(app_1.default);\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\n/**\n * Wraps a DOM Storage object and:\n * - automatically encode objects as JSON strings before storing them to allow us to store arbitrary types.\n * - prefixes names with \"firebase:\" to avoid collisions with app data.\n *\n * We automatically (see storage.js) create two such wrappers, one for sessionStorage,\n * and one for localStorage.\n *\n * @constructor\n */\nvar DOMStorageWrapper = /** @class */ (function () {\n /**\n * @param {Storage} domStorage_ The underlying storage object (e.g. localStorage or sessionStorage)\n */\n function DOMStorageWrapper(domStorage_) {\n this.domStorage_ = domStorage_;\n // Use a prefix to avoid collisions with other stuff saved by the app.\n this.prefix_ = 'firebase:';\n }\n /**\n * @param {string} key The key to save the value under\n * @param {?Object} value The value being stored, or null to remove the key.\n */\n DOMStorageWrapper.prototype.set = function (key, value) {\n if (value == null) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n }\n else {\n this.domStorage_.setItem(this.prefixedName_(key), util_1.stringify(value));\n }\n };\n /**\n * @param {string} key\n * @return {*} The value that was stored under this key, or null\n */\n DOMStorageWrapper.prototype.get = function (key) {\n var storedVal = this.domStorage_.getItem(this.prefixedName_(key));\n if (storedVal == null) {\n return null;\n }\n else {\n return util_1.jsonEval(storedVal);\n }\n };\n /**\n * @param {string} key\n */\n DOMStorageWrapper.prototype.remove = function (key) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n };\n /**\n * @param {string} name\n * @return {string}\n */\n DOMStorageWrapper.prototype.prefixedName_ = function (name) {\n return this.prefix_ + name;\n };\n DOMStorageWrapper.prototype.toString = function () {\n return this.domStorage_.toString();\n };\n return DOMStorageWrapper;\n}());\nexports.DOMStorageWrapper = DOMStorageWrapper;\n\n//# sourceMappingURL=DOMStorageWrapper.js.map\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\n/**\n * An in-memory storage implementation that matches the API of DOMStorageWrapper\n * (TODO: create interface for both to implement).\n *\n * @constructor\n */\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n this.cache_ = {};\n this.isInMemoryStorage = true;\n }\n MemoryStorage.prototype.set = function (key, value) {\n if (value == null) {\n delete this.cache_[key];\n }\n else {\n this.cache_[key] = value;\n }\n };\n MemoryStorage.prototype.get = function (key) {\n if (util_1.contains(this.cache_, key)) {\n return this.cache_[key];\n }\n return null;\n };\n MemoryStorage.prototype.remove = function (key) {\n delete this.cache_[key];\n };\n return MemoryStorage;\n}());\nexports.MemoryStorage = MemoryStorage;\n\n//# sourceMappingURL=MemoryStorage.js.map\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar validation_1 = __webpack_require__(7);\nvar util_2 = __webpack_require__(1);\nvar util_3 = __webpack_require__(0);\n/**\n * @constructor\n */\nvar OnDisconnect = /** @class */ (function () {\n /**\n * @param {!Repo} repo_\n * @param {!Path} path_\n */\n function OnDisconnect(repo_, path_) {\n this.repo_ = repo_;\n this.path_ = path_;\n }\n /**\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.cancel = function (onComplete) {\n util_1.validateArgCount('OnDisconnect.cancel', 0, 1, arguments.length);\n util_1.validateCallback('OnDisconnect.cancel', 1, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectCancel(this.path_, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.remove = function (onComplete) {\n util_1.validateArgCount('OnDisconnect.remove', 0, 1, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.remove', this.path_);\n util_1.validateCallback('OnDisconnect.remove', 1, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectSet(this.path_, null, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*} value\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.set = function (value, onComplete) {\n util_1.validateArgCount('OnDisconnect.set', 1, 2, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.set', this.path_);\n validation_1.validateFirebaseDataArg('OnDisconnect.set', 1, value, this.path_, false);\n util_1.validateCallback('OnDisconnect.set', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectSet(this.path_, value, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*} value\n * @param {number|string|null} priority\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.setWithPriority = function (value, priority, onComplete) {\n util_1.validateArgCount('OnDisconnect.setWithPriority', 2, 3, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.setWithPriority', this.path_);\n validation_1.validateFirebaseDataArg('OnDisconnect.setWithPriority', 1, value, this.path_, false);\n validation_1.validatePriority('OnDisconnect.setWithPriority', 2, priority, false);\n util_1.validateCallback('OnDisconnect.setWithPriority', 3, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectSetWithPriority(this.path_, value, priority, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {!Object} objectToMerge\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.update = function (objectToMerge, onComplete) {\n util_1.validateArgCount('OnDisconnect.update', 1, 2, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.update', this.path_);\n if (Array.isArray(objectToMerge)) {\n var newObjectToMerge = {};\n for (var i = 0; i < objectToMerge.length; ++i) {\n newObjectToMerge['' + i] = objectToMerge[i];\n }\n objectToMerge = newObjectToMerge;\n util_2.warn('Passing an Array to firebase.database.onDisconnect().update() is deprecated. Use set() if you want to overwrite the ' +\n 'existing data, or an Object with integer keys if you really do want to only update some of the children.');\n }\n validation_1.validateFirebaseMergeDataArg('OnDisconnect.update', 1, objectToMerge, this.path_, false);\n util_1.validateCallback('OnDisconnect.update', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectUpdate(this.path_, objectToMerge, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n return OnDisconnect;\n}());\nexports.OnDisconnect = OnDisconnect;\n\n//# sourceMappingURL=onDisconnect.js.map\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar TransactionResult = /** @class */ (function () {\n /**\n * A type for the resolve value of Firebase.transaction.\n * @constructor\n * @dict\n * @param {boolean} committed\n * @param {DataSnapshot} snapshot\n */\n function TransactionResult(committed, snapshot) {\n this.committed = committed;\n this.snapshot = snapshot;\n }\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\n // for end-users\n TransactionResult.prototype.toJSON = function () {\n util_1.validateArgCount('TransactionResult.toJSON', 0, 1, arguments.length);\n return { committed: this.committed, snapshot: this.snapshot.toJSON() };\n };\n return TransactionResult;\n}());\nexports.TransactionResult = TransactionResult;\n\n//# sourceMappingURL=TransactionResult.js.map\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\n/**\n * Fancy ID generator that creates 20-character string identifiers with the\n * following properties:\n *\n * 1. They're based on timestamp so that they sort *after* any existing ids.\n * 2. They contain 72-bits of random data after the timestamp so that IDs won't\n * collide with other clients' IDs.\n * 3. They sort *lexicographically* (so the timestamp is converted to characters\n * that will sort properly).\n * 4. They're monotonically increasing. Even if you generate more than one in\n * the same timestamp, the latter ones will sort after the former ones. We do\n * this by using the previous random bits but \"incrementing\" them by 1 (only\n * in the case of a timestamp collision).\n */\nexports.nextPushId = (function () {\n // Modeled after base64 web-safe chars, but ordered by ASCII.\n var PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n // Timestamp of last push, used to prevent local collisions if you push twice\n // in one ms.\n var lastPushTime = 0;\n // We generate 72-bits of randomness which get turned into 12 characters and\n // appended to the timestamp to prevent collisions with other clients. We\n // store the last characters we generated because in the event of a collision,\n // we'll use those same characters except \"incremented\" by one.\n var lastRandChars = [];\n return function (now) {\n var duplicateTime = now === lastPushTime;\n lastPushTime = now;\n var i;\n var timeStampChars = new Array(8);\n for (i = 7; i >= 0; i--) {\n timeStampChars[i] = PUSH_CHARS.charAt(now % 64);\n // NOTE: Can't use << here because javascript will convert to int and lose\n // the upper bits.\n now = Math.floor(now / 64);\n }\n util_1.assert(now === 0, 'Cannot push at time == 0');\n var id = timeStampChars.join('');\n if (!duplicateTime) {\n for (i = 0; i < 12; i++) {\n lastRandChars[i] = Math.floor(Math.random() * 64);\n }\n }\n else {\n // If the timestamp hasn't changed since last push, use the same random\n // number, except incremented by 1.\n for (i = 11; i >= 0 && lastRandChars[i] === 63; i--) {\n lastRandChars[i] = 0;\n }\n lastRandChars[i]++;\n }\n for (i = 0; i < 12; i++) {\n id += PUSH_CHARS.charAt(lastRandChars[i]);\n }\n util_1.assert(id.length === 20, 'nextPushId: Length should be 20.');\n return id;\n };\n})();\n\n//# sourceMappingURL=NextPushId.js.map\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DataSnapshot_1 = __webpack_require__(41);\nvar Event_1 = __webpack_require__(85);\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(0);\n/**\n * Represents registration for 'value' events.\n */\nvar ValueEventRegistration = /** @class */ (function () {\n /**\n * @param {?function(!DataSnapshot)} callback_\n * @param {?function(Error)} cancelCallback_\n * @param {?Object} context_\n */\n function ValueEventRegistration(callback_, cancelCallback_, context_) {\n this.callback_ = callback_;\n this.cancelCallback_ = cancelCallback_;\n this.context_ = context_;\n }\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.respondsTo = function (eventType) {\n return eventType === 'value';\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.createEvent = function (change, query) {\n var index = query.getQueryParams().getIndex();\n return new Event_1.DataEvent('value', this, new DataSnapshot_1.DataSnapshot(change.snapshotNode, query.getRef(), index));\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.getEventRunner = function (eventData) {\n var ctx = this.context_;\n if (eventData.getEventType() === 'cancel') {\n util_2.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\n var cancelCB_1 = this.cancelCallback_;\n return function () {\n // We know that error exists, we checked above that this is a cancel event\n cancelCB_1.call(ctx, eventData.error);\n };\n }\n else {\n var cb_1 = this.callback_;\n return function () {\n cb_1.call(ctx, eventData.snapshot);\n };\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.createCancelEvent = function (error, path) {\n if (this.cancelCallback_) {\n return new Event_1.CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.matches = function (other) {\n if (!(other instanceof ValueEventRegistration)) {\n return false;\n }\n else if (!other.callback_ || !this.callback_) {\n // If no callback specified, we consider it to match any callback.\n return true;\n }\n else {\n return (other.callback_ === this.callback_ && other.context_ === this.context_);\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.hasAnyCallback = function () {\n return this.callback_ !== null;\n };\n return ValueEventRegistration;\n}());\nexports.ValueEventRegistration = ValueEventRegistration;\n/**\n * Represents the registration of 1 or more child_xxx events.\n *\n * Currently, it is always exactly 1 child_xxx event, but the idea is we might let you\n * register a group of callbacks together in the future.\n *\n * @constructor\n * @implements {EventRegistration}\n */\nvar ChildEventRegistration = /** @class */ (function () {\n /**\n * @param {?Object.} callbacks_\n * @param {?function(Error)} cancelCallback_\n * @param {Object=} context_\n */\n function ChildEventRegistration(callbacks_, cancelCallback_, context_) {\n this.callbacks_ = callbacks_;\n this.cancelCallback_ = cancelCallback_;\n this.context_ = context_;\n }\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.respondsTo = function (eventType) {\n var eventToCheck = eventType === 'children_added' ? 'child_added' : eventType;\n eventToCheck =\n eventToCheck === 'children_removed' ? 'child_removed' : eventToCheck;\n return util_1.contains(this.callbacks_, eventToCheck);\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.createCancelEvent = function (error, path) {\n if (this.cancelCallback_) {\n return new Event_1.CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.createEvent = function (change, query) {\n util_2.assert(change.childName != null, 'Child events should have a childName.');\n var ref = query.getRef().child(/** @type {!string} */ (change.childName));\n var index = query.getQueryParams().getIndex();\n return new Event_1.DataEvent(change.type, this, new DataSnapshot_1.DataSnapshot(change.snapshotNode, ref, index), change.prevName);\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.getEventRunner = function (eventData) {\n var ctx = this.context_;\n if (eventData.getEventType() === 'cancel') {\n util_2.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\n var cancelCB_2 = this.cancelCallback_;\n return function () {\n // We know that error exists, we checked above that this is a cancel event\n cancelCB_2.call(ctx, eventData.error);\n };\n }\n else {\n var cb_2 = this.callbacks_[eventData.eventType];\n return function () {\n cb_2.call(ctx, eventData.snapshot, eventData.prevName);\n };\n }\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.matches = function (other) {\n if (other instanceof ChildEventRegistration) {\n if (!this.callbacks_ || !other.callbacks_) {\n return true;\n }\n else if (this.context_ === other.context_) {\n var otherCount = util_1.getCount(other.callbacks_);\n var thisCount = util_1.getCount(this.callbacks_);\n if (otherCount === thisCount) {\n // If count is 1, do an exact match on eventType, if either is defined but null, it's a match.\n // If event types don't match, not a match\n // If count is not 1, exact match across all\n if (otherCount === 1) {\n var otherKey /** @type {!string} */ = util_1.getAnyKey(other.callbacks_);\n var thisKey /** @type {!string} */ = util_1.getAnyKey(this.callbacks_);\n return (thisKey === otherKey &&\n (!other.callbacks_[otherKey] ||\n !this.callbacks_[thisKey] ||\n other.callbacks_[otherKey] === this.callbacks_[thisKey]));\n }\n else {\n // Exact match on each key.\n return util_1.every(this.callbacks_, function (eventType, cb) { return other.callbacks_[eventType] === cb; });\n }\n }\n }\n }\n return false;\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.hasAnyCallback = function () {\n return this.callbacks_ !== null;\n };\n return ChildEventRegistration;\n}());\nexports.ChildEventRegistration = ChildEventRegistration;\n\n//# sourceMappingURL=EventRegistration.js.map\n\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\n/**\n * Encapsulates the data needed to raise an event\n * @implements {Event}\n */\nvar DataEvent = /** @class */ (function () {\n /**\n * @param {!string} eventType One of: value, child_added, child_changed, child_moved, child_removed\n * @param {!EventRegistration} eventRegistration The function to call to with the event data. User provided\n * @param {!DataSnapshot} snapshot The data backing the event\n * @param {?string=} prevName Optional, the name of the previous child for child_* events.\n */\n function DataEvent(eventType, eventRegistration, snapshot, prevName) {\n this.eventType = eventType;\n this.eventRegistration = eventRegistration;\n this.snapshot = snapshot;\n this.prevName = prevName;\n }\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getPath = function () {\n var ref = this.snapshot.getRef();\n if (this.eventType === 'value') {\n return ref.path;\n }\n else {\n return ref.getParent().path;\n }\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getEventType = function () {\n return this.eventType;\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getEventRunner = function () {\n return this.eventRegistration.getEventRunner(this);\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.toString = function () {\n return (this.getPath().toString() +\n ':' +\n this.eventType +\n ':' +\n util_1.stringify(this.snapshot.exportVal()));\n };\n return DataEvent;\n}());\nexports.DataEvent = DataEvent;\nvar CancelEvent = /** @class */ (function () {\n /**\n * @param {EventRegistration} eventRegistration\n * @param {Error} error\n * @param {!Path} path\n */\n function CancelEvent(eventRegistration, error, path) {\n this.eventRegistration = eventRegistration;\n this.error = error;\n this.path = path;\n }\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getPath = function () {\n return this.path;\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getEventType = function () {\n return 'cancel';\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getEventRunner = function () {\n return this.eventRegistration.getEventRunner(this);\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.toString = function () {\n return this.path.toString() + ':cancel';\n };\n return CancelEvent;\n}());\nexports.CancelEvent = CancelEvent;\n\n//# sourceMappingURL=Event.js.map\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar AckUserWrite_1 = __webpack_require__(87);\nvar ChildrenNode_1 = __webpack_require__(4);\nvar util_3 = __webpack_require__(0);\nvar ImmutableTree_1 = __webpack_require__(22);\nvar ListenComplete_1 = __webpack_require__(88);\nvar Merge_1 = __webpack_require__(89);\nvar Operation_1 = __webpack_require__(8);\nvar Overwrite_1 = __webpack_require__(45);\nvar Path_1 = __webpack_require__(2);\nvar SyncPoint_1 = __webpack_require__(46);\nvar WriteTree_1 = __webpack_require__(95);\n/**\n * SyncTree is the central class for managing event callback registration, data caching, views\n * (query processing), and event generation. There are typically two SyncTree instances for\n * each Repo, one for the normal Firebase data, and one for the .info data.\n *\n * It has a number of responsibilities, including:\n * - Tracking all user event callbacks (registered via addEventRegistration() and removeEventRegistration()).\n * - Applying and caching data changes for user set(), transaction(), and update() calls\n * (applyUserOverwrite(), applyUserMerge()).\n * - Applying and caching data changes for server data changes (applyServerOverwrite(),\n * applyServerMerge()).\n * - Generating user-facing events for server and user changes (all of the apply* methods\n * return the set of events that need to be raised as a result).\n * - Maintaining the appropriate set of server listens to ensure we are always subscribed\n * to the correct set of paths and queries to satisfy the current set of user event\n * callbacks (listens are started/stopped using the provided listenProvider).\n *\n * NOTE: Although SyncTree tracks event callbacks and calculates events to raise, the actual\n * events are returned to the caller rather than raised synchronously.\n *\n * @constructor\n */\nvar SyncTree = /** @class */ (function () {\n /**\n * @param {!ListenProvider} listenProvider_ Used by SyncTree to start / stop listening\n * to server data.\n */\n function SyncTree(listenProvider_) {\n this.listenProvider_ = listenProvider_;\n /**\n * Tree of SyncPoints. There's a SyncPoint at any location that has 1 or more views.\n * @type {!ImmutableTree.}\n * @private\n */\n this.syncPointTree_ = ImmutableTree_1.ImmutableTree.Empty;\n /**\n * A tree of all pending user writes (user-initiated set()'s, transaction()'s, update()'s, etc.).\n * @type {!WriteTree}\n * @private\n */\n this.pendingWriteTree_ = new WriteTree_1.WriteTree();\n this.tagToQueryMap_ = {};\n this.queryToTagMap_ = {};\n }\n /**\n * Apply the data changes for a user-generated set() or transaction() call.\n *\n * @param {!Path} path\n * @param {!Node} newData\n * @param {number} writeId\n * @param {boolean=} visible\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyUserOverwrite = function (path, newData, writeId, visible) {\n // Record pending write.\n this.pendingWriteTree_.addOverwrite(path, newData, writeId, visible);\n if (!visible) {\n return [];\n }\n else {\n return this.applyOperationToSyncPoints_(new Overwrite_1.Overwrite(Operation_1.OperationSource.User, path, newData));\n }\n };\n /**\n * Apply the data from a user-generated update() call\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} writeId\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyUserMerge = function (path, changedChildren, writeId) {\n // Record pending merge.\n this.pendingWriteTree_.addMerge(path, changedChildren, writeId);\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n return this.applyOperationToSyncPoints_(new Merge_1.Merge(Operation_1.OperationSource.User, path, changeTree));\n };\n /**\n * Acknowledge a pending user write that was previously registered with applyUserOverwrite() or applyUserMerge().\n *\n * @param {!number} writeId\n * @param {boolean=} revert True if the given write failed and needs to be reverted\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.ackUserWrite = function (writeId, revert) {\n if (revert === void 0) { revert = false; }\n var write = this.pendingWriteTree_.getWrite(writeId);\n var needToReevaluate = this.pendingWriteTree_.removeWrite(writeId);\n if (!needToReevaluate) {\n return [];\n }\n else {\n var affectedTree_1 = ImmutableTree_1.ImmutableTree.Empty;\n if (write.snap != null) {\n // overwrite\n affectedTree_1 = affectedTree_1.set(Path_1.Path.Empty, true);\n }\n else {\n util_3.forEach(write.children, function (pathString, node) {\n affectedTree_1 = affectedTree_1.set(new Path_1.Path(pathString), node);\n });\n }\n return this.applyOperationToSyncPoints_(new AckUserWrite_1.AckUserWrite(write.path, affectedTree_1, revert));\n }\n };\n /**\n * Apply new server data for the specified path..\n *\n * @param {!Path} path\n * @param {!Node} newData\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyServerOverwrite = function (path, newData) {\n return this.applyOperationToSyncPoints_(new Overwrite_1.Overwrite(Operation_1.OperationSource.Server, path, newData));\n };\n /**\n * Apply new server data to be merged in at the specified path.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyServerMerge = function (path, changedChildren) {\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n return this.applyOperationToSyncPoints_(new Merge_1.Merge(Operation_1.OperationSource.Server, path, changeTree));\n };\n /**\n * Apply a listen complete for a query\n *\n * @param {!Path} path\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyListenComplete = function (path) {\n return this.applyOperationToSyncPoints_(new ListenComplete_1.ListenComplete(Operation_1.OperationSource.Server, path));\n };\n /**\n * Apply new server data for the specified tagged query.\n *\n * @param {!Path} path\n * @param {!Node} snap\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedQueryOverwrite = function (path, snap, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey != null) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var op = new Overwrite_1.Overwrite(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath, snap);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // Query must have been removed already\n return [];\n }\n };\n /**\n * Apply server data to be merged in for the specified tagged query.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedQueryMerge = function (path, changedChildren, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n var op = new Merge_1.Merge(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath, changeTree);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n };\n /**\n * Apply a listen complete for a tagged query\n *\n * @param {!Path} path\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedListenComplete = function (path, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var op = new ListenComplete_1.ListenComplete(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n };\n /**\n * Add an event callback for the specified query.\n *\n * @param {!Query} query\n * @param {!EventRegistration} eventRegistration\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.addEventRegistration = function (query, eventRegistration) {\n var path = query.path;\n var serverCache = null;\n var foundAncestorDefaultView = false;\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\n this.syncPointTree_.foreachOnPath(path, function (pathToSyncPoint, sp) {\n var relativePath = Path_1.Path.relativePath(pathToSyncPoint, path);\n serverCache = serverCache || sp.getCompleteServerCache(relativePath);\n foundAncestorDefaultView =\n foundAncestorDefaultView || sp.hasCompleteView();\n });\n var syncPoint = this.syncPointTree_.get(path);\n if (!syncPoint) {\n syncPoint = new SyncPoint_1.SyncPoint();\n this.syncPointTree_ = this.syncPointTree_.set(path, syncPoint);\n }\n else {\n foundAncestorDefaultView =\n foundAncestorDefaultView || syncPoint.hasCompleteView();\n serverCache = serverCache || syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var serverCacheComplete;\n if (serverCache != null) {\n serverCacheComplete = true;\n }\n else {\n serverCacheComplete = false;\n serverCache = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var subtree = this.syncPointTree_.subtree(path);\n subtree.foreachChild(function (childName, childSyncPoint) {\n var completeCache = childSyncPoint.getCompleteServerCache(Path_1.Path.Empty);\n if (completeCache) {\n serverCache = serverCache.updateImmediateChild(childName, completeCache);\n }\n });\n }\n var viewAlreadyExists = syncPoint.viewExistsForQuery(query);\n if (!viewAlreadyExists && !query.getQueryParams().loadsAllData()) {\n // We need to track a tag for this query\n var queryKey = SyncTree.makeQueryKey_(query);\n util_1.assert(!(queryKey in this.queryToTagMap_), 'View does not exist, but we have a tag');\n var tag = SyncTree.getNextQueryTag_();\n this.queryToTagMap_[queryKey] = tag;\n // Coerce to string to avoid sparse arrays.\n this.tagToQueryMap_['_' + tag] = queryKey;\n }\n var writesCache = this.pendingWriteTree_.childWrites(path);\n var events = syncPoint.addEventRegistration(query, eventRegistration, writesCache, serverCache, serverCacheComplete);\n if (!viewAlreadyExists && !foundAncestorDefaultView) {\n var view /** @type !View */ = syncPoint.viewForQuery(query);\n events = events.concat(this.setupListener_(query, view));\n }\n return events;\n };\n /**\n * Remove event callback(s).\n *\n * If query is the default query, we'll check all queries for the specified eventRegistration.\n * If eventRegistration is null, we'll remove all callbacks for the specified query/queries.\n *\n * @param {!Query} query\n * @param {?EventRegistration} eventRegistration If null, all callbacks are removed.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {!Array.} Cancel events, if cancelError was provided.\n */\n SyncTree.prototype.removeEventRegistration = function (query, eventRegistration, cancelError) {\n var _this = this;\n // Find the syncPoint first. Then deal with whether or not it has matching listeners\n var path = query.path;\n var maybeSyncPoint = this.syncPointTree_.get(path);\n var cancelEvents = [];\n // A removal on a default query affects all queries at that location. A removal on an indexed query, even one without\n // other query constraints, does *not* affect all queries at that location. So this check must be for 'default', and\n // not loadsAllData().\n if (maybeSyncPoint &&\n (query.queryIdentifier() === 'default' ||\n maybeSyncPoint.viewExistsForQuery(query))) {\n /**\n * @type {{removed: !Array., events: !Array.}}\n */\n var removedAndEvents = maybeSyncPoint.removeEventRegistration(query, eventRegistration, cancelError);\n if (maybeSyncPoint.isEmpty()) {\n this.syncPointTree_ = this.syncPointTree_.remove(path);\n }\n var removed = removedAndEvents.removed;\n cancelEvents = removedAndEvents.events;\n // We may have just removed one of many listeners and can short-circuit this whole process\n // We may also not have removed a default listener, in which case all of the descendant listeners should already be\n // properly set up.\n //\n // Since indexed queries can shadow if they don't have other query constraints, check for loadsAllData(), instead of\n // queryId === 'default'\n var removingDefault = -1 !==\n removed.findIndex(function (query) {\n return query.getQueryParams().loadsAllData();\n });\n var covered = this.syncPointTree_.findOnPath(path, function (relativePath, parentSyncPoint) {\n return parentSyncPoint.hasCompleteView();\n });\n if (removingDefault && !covered) {\n var subtree = this.syncPointTree_.subtree(path);\n // There are potentially child listeners. Determine what if any listens we need to send before executing the\n // removal\n if (!subtree.isEmpty()) {\n // We need to fold over our subtree and collect the listeners to send\n var newViews = this.collectDistinctViewsForSubTree_(subtree);\n // Ok, we've collected all the listens we need. Set them up.\n for (var i = 0; i < newViews.length; ++i) {\n var view = newViews[i], newQuery = view.getQuery();\n var listener = this.createListenerForView_(view);\n this.listenProvider_.startListening(SyncTree.queryForListening_(newQuery), this.tagForQuery_(newQuery), listener.hashFn, listener.onComplete);\n }\n }\n else {\n // There's nothing below us, so nothing we need to start listening on\n }\n }\n // If we removed anything and we're not covered by a higher up listen, we need to stop listening on this query\n // The above block has us covered in terms of making sure we're set up on listens lower in the tree.\n // Also, note that if we have a cancelError, it's already been removed at the provider level.\n if (!covered && removed.length > 0 && !cancelError) {\n // If we removed a default, then we weren't listening on any of the other queries here. Just cancel the one\n // default. Otherwise, we need to iterate through and cancel each individual query\n if (removingDefault) {\n // We don't tag default listeners\n var defaultTag = null;\n this.listenProvider_.stopListening(SyncTree.queryForListening_(query), defaultTag);\n }\n else {\n removed.forEach(function (queryToRemove) {\n var tagToRemove = _this.queryToTagMap_[SyncTree.makeQueryKey_(queryToRemove)];\n _this.listenProvider_.stopListening(SyncTree.queryForListening_(queryToRemove), tagToRemove);\n });\n }\n }\n // Now, clear all of the tags we're tracking for the removed listens\n this.removeTags_(removed);\n }\n else {\n // No-op, this listener must've been already removed\n }\n return cancelEvents;\n };\n /**\n * Returns a complete cache, if we have one, of the data at a particular path. The location must have a listener above\n * it, but as this is only used by transaction code, that should always be the case anyways.\n *\n * Note: this method will *include* hidden writes from transaction with applyLocally set to false.\n * @param {!Path} path The path to the data we want\n * @param {Array.=} writeIdsToExclude A specific set to be excluded\n * @return {?Node}\n */\n SyncTree.prototype.calcCompleteEventCache = function (path, writeIdsToExclude) {\n var includeHiddenSets = true;\n var writeTree = this.pendingWriteTree_;\n var serverCache = this.syncPointTree_.findOnPath(path, function (pathSoFar, syncPoint) {\n var relativePath = Path_1.Path.relativePath(pathSoFar, path);\n var serverCache = syncPoint.getCompleteServerCache(relativePath);\n if (serverCache) {\n return serverCache;\n }\n });\n return writeTree.calcCompleteEventCache(path, serverCache, writeIdsToExclude, includeHiddenSets);\n };\n /**\n * This collapses multiple unfiltered views into a single view, since we only need a single\n * listener for them.\n *\n * @param {!ImmutableTree.} subtree\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.collectDistinctViewsForSubTree_ = function (subtree) {\n return subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\n if (maybeChildSyncPoint && maybeChildSyncPoint.hasCompleteView()) {\n var completeView = maybeChildSyncPoint.getCompleteView();\n return [completeView];\n }\n else {\n // No complete view here, flatten any deeper listens into an array\n var views_1 = [];\n if (maybeChildSyncPoint) {\n views_1 = maybeChildSyncPoint.getQueryViews();\n }\n util_3.forEach(childMap, function (key, childViews) {\n views_1 = views_1.concat(childViews);\n });\n return views_1;\n }\n });\n };\n /**\n * @param {!Array.} queries\n * @private\n */\n SyncTree.prototype.removeTags_ = function (queries) {\n for (var j = 0; j < queries.length; ++j) {\n var removedQuery = queries[j];\n if (!removedQuery.getQueryParams().loadsAllData()) {\n // We should have a tag for this\n var removedQueryKey = SyncTree.makeQueryKey_(removedQuery);\n var removedQueryTag = this.queryToTagMap_[removedQueryKey];\n delete this.queryToTagMap_[removedQueryKey];\n delete this.tagToQueryMap_['_' + removedQueryTag];\n }\n }\n };\n /**\n * Normalizes a query to a query we send the server for listening\n * @param {!Query} query\n * @return {!Query} The normalized query\n * @private\n */\n SyncTree.queryForListening_ = function (query) {\n if (query.getQueryParams().loadsAllData() &&\n !query.getQueryParams().isDefault()) {\n // We treat queries that load all data as default queries\n // Cast is necessary because ref() technically returns Firebase which is actually fb.api.Firebase which inherits\n // from Query\n return /** @type {!Query} */ query.getRef();\n }\n else {\n return query;\n }\n };\n /**\n * For a given new listen, manage the de-duplication of outstanding subscriptions.\n *\n * @param {!Query} query\n * @param {!View} view\n * @return {!Array.} This method can return events to support synchronous data sources\n * @private\n */\n SyncTree.prototype.setupListener_ = function (query, view) {\n var path = query.path;\n var tag = this.tagForQuery_(query);\n var listener = this.createListenerForView_(view);\n var events = this.listenProvider_.startListening(SyncTree.queryForListening_(query), tag, listener.hashFn, listener.onComplete);\n var subtree = this.syncPointTree_.subtree(path);\n // The root of this subtree has our query. We're here because we definitely need to send a listen for that, but we\n // may need to shadow other listens as well.\n if (tag) {\n util_1.assert(!subtree.value.hasCompleteView(), \"If we're adding a query, it shouldn't be shadowed\");\n }\n else {\n // Shadow everything at or below this location, this is a default listener.\n var queriesToStop = subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\n if (!relativePath.isEmpty() &&\n maybeChildSyncPoint &&\n maybeChildSyncPoint.hasCompleteView()) {\n return [maybeChildSyncPoint.getCompleteView().getQuery()];\n }\n else {\n // No default listener here, flatten any deeper queries into an array\n var queries_1 = [];\n if (maybeChildSyncPoint) {\n queries_1 = queries_1.concat(maybeChildSyncPoint.getQueryViews().map(function (view) { return view.getQuery(); }));\n }\n util_3.forEach(childMap, function (key, childQueries) {\n queries_1 = queries_1.concat(childQueries);\n });\n return queries_1;\n }\n });\n for (var i = 0; i < queriesToStop.length; ++i) {\n var queryToStop = queriesToStop[i];\n this.listenProvider_.stopListening(SyncTree.queryForListening_(queryToStop), this.tagForQuery_(queryToStop));\n }\n }\n return events;\n };\n /**\n *\n * @param {!View} view\n * @return {{hashFn: function(), onComplete: function(!string, *)}}\n * @private\n */\n SyncTree.prototype.createListenerForView_ = function (view) {\n var _this = this;\n var query = view.getQuery();\n var tag = this.tagForQuery_(query);\n return {\n hashFn: function () {\n var cache = view.getServerCache() || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return cache.hash();\n },\n onComplete: function (status) {\n if (status === 'ok') {\n if (tag) {\n return _this.applyTaggedListenComplete(query.path, tag);\n }\n else {\n return _this.applyListenComplete(query.path);\n }\n }\n else {\n // If a listen failed, kill all of the listeners here, not just the one that triggered the error.\n // Note that this may need to be scoped to just this listener if we change permissions on filtered children\n var error = util_2.errorForServerCode(status, query);\n return _this.removeEventRegistration(query, \n /*eventRegistration*/ null, error);\n }\n }\n };\n };\n /**\n * Given a query, computes a \"queryKey\" suitable for use in our queryToTagMap_.\n * @private\n * @param {!Query} query\n * @return {string}\n */\n SyncTree.makeQueryKey_ = function (query) {\n return query.path.toString() + '$' + query.queryIdentifier();\n };\n /**\n * Given a queryKey (created by makeQueryKey), parse it back into a path and queryId.\n * @private\n * @param {!string} queryKey\n * @return {{queryId: !string, path: !Path}}\n */\n SyncTree.parseQueryKey_ = function (queryKey) {\n var splitIndex = queryKey.indexOf('$');\n util_1.assert(splitIndex !== -1 && splitIndex < queryKey.length - 1, 'Bad queryKey.');\n return {\n queryId: queryKey.substr(splitIndex + 1),\n path: new Path_1.Path(queryKey.substr(0, splitIndex))\n };\n };\n /**\n * Return the query associated with the given tag, if we have one\n * @param {!number} tag\n * @return {?string}\n * @private\n */\n SyncTree.prototype.queryKeyForTag_ = function (tag) {\n return this.tagToQueryMap_['_' + tag];\n };\n /**\n * Return the tag associated with the given query.\n * @param {!Query} query\n * @return {?number}\n * @private\n */\n SyncTree.prototype.tagForQuery_ = function (query) {\n var queryKey = SyncTree.makeQueryKey_(query);\n return util_3.safeGet(this.queryToTagMap_, queryKey);\n };\n /**\n * Static accessor for query tags.\n * @return {number}\n * @private\n */\n SyncTree.getNextQueryTag_ = function () {\n return SyncTree.nextQueryTag_++;\n };\n /**\n * A helper method to apply tagged operations\n *\n * @param {!Path} queryPath\n * @param {!Operation} operation\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.applyTaggedOperation_ = function (queryPath, operation) {\n var syncPoint = this.syncPointTree_.get(queryPath);\n util_1.assert(syncPoint, \"Missing sync point for query tag that we're tracking\");\n var writesCache = this.pendingWriteTree_.childWrites(queryPath);\n return syncPoint.applyOperation(operation, writesCache, \n /*serverCache=*/ null);\n };\n /**\n * A helper method that visits all descendant and ancestor SyncPoints, applying the operation.\n *\n * NOTES:\n * - Descendant SyncPoints will be visited first (since we raise events depth-first).\n \n * - We call applyOperation() on each SyncPoint passing three things:\n * 1. A version of the Operation that has been made relative to the SyncPoint location.\n * 2. A WriteTreeRef of any writes we have cached at the SyncPoint location.\n * 3. A snapshot Node with cached server data, if we have it.\n \n * - We concatenate all of the events returned by each SyncPoint and return the result.\n *\n * @param {!Operation} operation\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.applyOperationToSyncPoints_ = function (operation) {\n return this.applyOperationHelper_(operation, this.syncPointTree_, \n /*serverCache=*/ null, this.pendingWriteTree_.childWrites(Path_1.Path.Empty));\n };\n /**\n * Recursive helper for applyOperationToSyncPoints_\n *\n * @private\n * @param {!Operation} operation\n * @param {ImmutableTree.} syncPointTree\n * @param {?Node} serverCache\n * @param {!WriteTreeRef} writesCache\n * @return {!Array.}\n */\n SyncTree.prototype.applyOperationHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\n if (operation.path.isEmpty()) {\n return this.applyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache);\n }\n else {\n var syncPoint = syncPointTree.get(Path_1.Path.Empty);\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var events = [];\n var childName = operation.path.getFront();\n var childOperation = operation.operationForChild(childName);\n var childTree = syncPointTree.children.get(childName);\n if (childTree && childOperation) {\n var childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n var childWritesCache = writesCache.child(childName);\n events = events.concat(this.applyOperationHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n if (syncPoint) {\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\n }\n return events;\n }\n };\n /**\n * Recursive helper for applyOperationToSyncPoints_\n *\n * @private\n * @param {!Operation} operation\n * @param {ImmutableTree.} syncPointTree\n * @param {?Node} serverCache\n * @param {!WriteTreeRef} writesCache\n * @return {!Array.}\n */\n SyncTree.prototype.applyOperationDescendantsHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\n var _this = this;\n var syncPoint = syncPointTree.get(Path_1.Path.Empty);\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var events = [];\n syncPointTree.children.inorderTraversal(function (childName, childTree) {\n var childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n var childWritesCache = writesCache.child(childName);\n var childOperation = operation.operationForChild(childName);\n if (childOperation) {\n events = events.concat(_this.applyOperationDescendantsHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n });\n if (syncPoint) {\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\n }\n return events;\n };\n /**\n * Static tracker for next query tag.\n * @type {number}\n * @private\n */\n SyncTree.nextQueryTag_ = 1;\n return SyncTree;\n}());\nexports.SyncTree = SyncTree;\n\n//# sourceMappingURL=SyncTree.js.map\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar Path_1 = __webpack_require__(2);\nvar Operation_1 = __webpack_require__(8);\nvar AckUserWrite = /** @class */ (function () {\n /**\n *\n * @param {!Path} path\n * @param {!ImmutableTree} affectedTree A tree containing true for each affected path. Affected paths can't overlap.\n * @param {!boolean} revert\n */\n function AckUserWrite(\n /**@inheritDoc */ path, \n /**@inheritDoc */ affectedTree, \n /**@inheritDoc */ revert) {\n this.path = path;\n this.affectedTree = affectedTree;\n this.revert = revert;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.ACK_USER_WRITE;\n /** @inheritDoc */\n this.source = Operation_1.OperationSource.User;\n }\n /**\n * @inheritDoc\n */\n AckUserWrite.prototype.operationForChild = function (childName) {\n if (!this.path.isEmpty()) {\n util_1.assert(this.path.getFront() === childName, 'operationForChild called for unrelated child.');\n return new AckUserWrite(this.path.popFront(), this.affectedTree, this.revert);\n }\n else if (this.affectedTree.value != null) {\n util_1.assert(this.affectedTree.children.isEmpty(), 'affectedTree should not have overlapping affected paths.');\n // All child locations are affected as well; just return same operation.\n return this;\n }\n else {\n var childTree = this.affectedTree.subtree(new Path_1.Path(childName));\n return new AckUserWrite(Path_1.Path.Empty, childTree, this.revert);\n }\n };\n return AckUserWrite;\n}());\nexports.AckUserWrite = AckUserWrite;\n\n//# sourceMappingURL=AckUserWrite.js.map\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = __webpack_require__(2);\nvar Operation_1 = __webpack_require__(8);\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @constructor\n * @implements {Operation}\n */\nvar ListenComplete = /** @class */ (function () {\n function ListenComplete(source, path) {\n this.source = source;\n this.path = path;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.LISTEN_COMPLETE;\n }\n ListenComplete.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n return new ListenComplete(this.source, Path_1.Path.Empty);\n }\n else {\n return new ListenComplete(this.source, this.path.popFront());\n }\n };\n return ListenComplete;\n}());\nexports.ListenComplete = ListenComplete;\n\n//# sourceMappingURL=ListenComplete.js.map\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = __webpack_require__(8);\nvar Overwrite_1 = __webpack_require__(45);\nvar Path_1 = __webpack_require__(2);\nvar util_1 = __webpack_require__(0);\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @param {!ImmutableTree.} children\n * @constructor\n * @implements {Operation}\n */\nvar Merge = /** @class */ (function () {\n function Merge(\n /**@inheritDoc */ source, \n /**@inheritDoc */ path, \n /**@inheritDoc */ children) {\n this.source = source;\n this.path = path;\n this.children = children;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.MERGE;\n }\n /**\n * @inheritDoc\n */\n Merge.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n var childTree = this.children.subtree(new Path_1.Path(childName));\n if (childTree.isEmpty()) {\n // This child is unaffected\n return null;\n }\n else if (childTree.value) {\n // We have a snapshot for the child in question. This becomes an overwrite of the child.\n return new Overwrite_1.Overwrite(this.source, Path_1.Path.Empty, childTree.value);\n }\n else {\n // This is a merge at a deeper level\n return new Merge(this.source, Path_1.Path.Empty, childTree);\n }\n }\n else {\n util_1.assert(this.path.getFront() === childName, \"Can't get a merge for a child not on the path of the operation\");\n return new Merge(this.source, this.path.popFront(), this.children);\n }\n };\n /**\n * @inheritDoc\n */\n Merge.prototype.toString = function () {\n return ('Operation(' +\n this.path +\n ': ' +\n this.source.toString() +\n ' merge: ' +\n this.children.toString() +\n ')');\n };\n return Merge;\n}());\nexports.Merge = Merge;\n\n//# sourceMappingURL=Merge.js.map\n\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IndexedFilter_1 = __webpack_require__(23);\nvar ViewProcessor_1 = __webpack_require__(91);\nvar ChildrenNode_1 = __webpack_require__(4);\nvar CacheNode_1 = __webpack_require__(18);\nvar ViewCache_1 = __webpack_require__(47);\nvar EventGenerator_1 = __webpack_require__(94);\nvar util_1 = __webpack_require__(0);\nvar Operation_1 = __webpack_require__(8);\nvar Change_1 = __webpack_require__(9);\nvar PriorityIndex_1 = __webpack_require__(3);\n/**\n * A view represents a specific location and query that has 1 or more event registrations.\n *\n * It does several things:\n * - Maintains the list of event registrations for this location/query.\n * - Maintains a cache of the data visible for this location/query.\n * - Applies new operations (via applyOperation), updates the cache, and based on the event\n * registrations returns the set of events to be raised.\n * @constructor\n */\nvar View = /** @class */ (function () {\n /**\n *\n * @param {!Query} query_\n * @param {!ViewCache} initialViewCache\n */\n function View(query_, initialViewCache) {\n this.query_ = query_;\n this.eventRegistrations_ = [];\n var params = this.query_.getQueryParams();\n var indexFilter = new IndexedFilter_1.IndexedFilter(params.getIndex());\n var filter = params.getNodeFilter();\n /**\n * @type {ViewProcessor}\n * @private\n */\n this.processor_ = new ViewProcessor_1.ViewProcessor(filter);\n var initialServerCache = initialViewCache.getServerCache();\n var initialEventCache = initialViewCache.getEventCache();\n // Don't filter server node with other filter than index, wait for tagged listen\n var serverSnap = indexFilter.updateFullNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, initialServerCache.getNode(), null);\n var eventSnap = filter.updateFullNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, initialEventCache.getNode(), null);\n var newServerCache = new CacheNode_1.CacheNode(serverSnap, initialServerCache.isFullyInitialized(), indexFilter.filtersNodes());\n var newEventCache = new CacheNode_1.CacheNode(eventSnap, initialEventCache.isFullyInitialized(), filter.filtersNodes());\n /**\n * @type {!ViewCache}\n * @private\n */\n this.viewCache_ = new ViewCache_1.ViewCache(newEventCache, newServerCache);\n /**\n * @type {!EventGenerator}\n * @private\n */\n this.eventGenerator_ = new EventGenerator_1.EventGenerator(this.query_);\n }\n /**\n * @return {!Query}\n */\n View.prototype.getQuery = function () {\n return this.query_;\n };\n /**\n * @return {?Node}\n */\n View.prototype.getServerCache = function () {\n return this.viewCache_.getServerCache().getNode();\n };\n /**\n * @param {!Path} path\n * @return {?Node}\n */\n View.prototype.getCompleteServerCache = function (path) {\n var cache = this.viewCache_.getCompleteServerSnap();\n if (cache) {\n // If this isn't a \"loadsAllData\" view, then cache isn't actually a complete cache and\n // we need to see if it contains the child we're interested in.\n if (this.query_.getQueryParams().loadsAllData() ||\n (!path.isEmpty() && !cache.getImmediateChild(path.getFront()).isEmpty())) {\n return cache.getChild(path);\n }\n }\n return null;\n };\n /**\n * @return {boolean}\n */\n View.prototype.isEmpty = function () {\n return this.eventRegistrations_.length === 0;\n };\n /**\n * @param {!EventRegistration} eventRegistration\n */\n View.prototype.addEventRegistration = function (eventRegistration) {\n this.eventRegistrations_.push(eventRegistration);\n };\n /**\n * @param {?EventRegistration} eventRegistration If null, remove all callbacks.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {!Array.} Cancel events, if cancelError was provided.\n */\n View.prototype.removeEventRegistration = function (eventRegistration, cancelError) {\n var cancelEvents = [];\n if (cancelError) {\n util_1.assert(eventRegistration == null, 'A cancel should cancel all event registrations.');\n var path_1 = this.query_.path;\n this.eventRegistrations_.forEach(function (registration) {\n cancelError /** @type {!Error} */ = cancelError;\n var maybeEvent = registration.createCancelEvent(cancelError, path_1);\n if (maybeEvent) {\n cancelEvents.push(maybeEvent);\n }\n });\n }\n if (eventRegistration) {\n var remaining = [];\n for (var i = 0; i < this.eventRegistrations_.length; ++i) {\n var existing = this.eventRegistrations_[i];\n if (!existing.matches(eventRegistration)) {\n remaining.push(existing);\n }\n else if (eventRegistration.hasAnyCallback()) {\n // We're removing just this one\n remaining = remaining.concat(this.eventRegistrations_.slice(i + 1));\n break;\n }\n }\n this.eventRegistrations_ = remaining;\n }\n else {\n this.eventRegistrations_ = [];\n }\n return cancelEvents;\n };\n /**\n * Applies the given Operation, updates our cache, and returns the appropriate events.\n *\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeServerCache\n * @return {!Array.}\n */\n View.prototype.applyOperation = function (operation, writesCache, completeServerCache) {\n if (operation.type === Operation_1.OperationType.MERGE &&\n operation.source.queryId !== null) {\n util_1.assert(this.viewCache_.getCompleteServerSnap(), 'We should always have a full cache before handling merges');\n util_1.assert(this.viewCache_.getCompleteEventSnap(), 'Missing event cache, even though we have a server cache');\n }\n var oldViewCache = this.viewCache_;\n var result = this.processor_.applyOperation(oldViewCache, operation, writesCache, completeServerCache);\n this.processor_.assertIndexed(result.viewCache);\n util_1.assert(result.viewCache.getServerCache().isFullyInitialized() ||\n !oldViewCache.getServerCache().isFullyInitialized(), 'Once a server snap is complete, it should never go back');\n this.viewCache_ = result.viewCache;\n return this.generateEventsForChanges_(result.changes, result.viewCache.getEventCache().getNode(), null);\n };\n /**\n * @param {!EventRegistration} registration\n * @return {!Array.}\n */\n View.prototype.getInitialEvents = function (registration) {\n var eventSnap = this.viewCache_.getEventCache();\n var initialChanges = [];\n if (!eventSnap.getNode().isLeafNode()) {\n var eventNode = eventSnap.getNode();\n eventNode.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n initialChanges.push(Change_1.Change.childAddedChange(key, childNode));\n });\n }\n if (eventSnap.isFullyInitialized()) {\n initialChanges.push(Change_1.Change.valueChange(eventSnap.getNode()));\n }\n return this.generateEventsForChanges_(initialChanges, eventSnap.getNode(), registration);\n };\n /**\n * @private\n * @param {!Array.} changes\n * @param {!Node} eventCache\n * @param {EventRegistration=} eventRegistration\n * @return {!Array.}\n */\n View.prototype.generateEventsForChanges_ = function (changes, eventCache, eventRegistration) {\n var registrations = eventRegistration\n ? [eventRegistration]\n : this.eventRegistrations_;\n return this.eventGenerator_.generateEventsForChanges(changes, eventCache, registrations);\n };\n return View;\n}());\nexports.View = View;\n\n//# sourceMappingURL=View.js.map\n\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = __webpack_require__(8);\nvar util_1 = __webpack_require__(0);\nvar ChildChangeAccumulator_1 = __webpack_require__(92);\nvar Change_1 = __webpack_require__(9);\nvar ChildrenNode_1 = __webpack_require__(4);\nvar KeyIndex_1 = __webpack_require__(10);\nvar ImmutableTree_1 = __webpack_require__(22);\nvar Path_1 = __webpack_require__(2);\nvar CompleteChildSource_1 = __webpack_require__(93);\n/**\n * @constructor\n * @struct\n */\nvar ProcessorResult = /** @class */ (function () {\n /**\n * @param {!ViewCache} viewCache\n * @param {!Array.} changes\n */\n function ProcessorResult(viewCache, changes) {\n this.viewCache = viewCache;\n this.changes = changes;\n }\n return ProcessorResult;\n}());\nexports.ProcessorResult = ProcessorResult;\n/**\n * @constructor\n */\nvar ViewProcessor = /** @class */ (function () {\n /**\n * @param {!NodeFilter} filter_\n */\n function ViewProcessor(filter_) {\n this.filter_ = filter_;\n }\n /**\n * @param {!ViewCache} viewCache\n */\n ViewProcessor.prototype.assertIndexed = function (viewCache) {\n util_1.assert(viewCache\n .getEventCache()\n .getNode()\n .isIndexed(this.filter_.getIndex()), 'Event snap not indexed');\n util_1.assert(viewCache\n .getServerCache()\n .getNode()\n .isIndexed(this.filter_.getIndex()), 'Server snap not indexed');\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @return {!ProcessorResult}\n */\n ViewProcessor.prototype.applyOperation = function (oldViewCache, operation, writesCache, completeCache) {\n var accumulator = new ChildChangeAccumulator_1.ChildChangeAccumulator();\n var newViewCache, filterServerNode;\n if (operation.type === Operation_1.OperationType.OVERWRITE) {\n var overwrite = operation;\n if (overwrite.source.fromUser) {\n newViewCache = this.applyUserOverwrite_(oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, accumulator);\n }\n else {\n util_1.assert(overwrite.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered and the\n // update is not at the root in which case it is ok (and necessary) to mark the node unfiltered\n // again\n filterServerNode =\n overwrite.source.tagged ||\n (oldViewCache.getServerCache().isFiltered() &&\n !overwrite.path.isEmpty());\n newViewCache = this.applyServerOverwrite_(oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.MERGE) {\n var merge = operation;\n if (merge.source.fromUser) {\n newViewCache = this.applyUserMerge_(oldViewCache, merge.path, merge.children, writesCache, completeCache, accumulator);\n }\n else {\n util_1.assert(merge.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered\n filterServerNode =\n merge.source.tagged || oldViewCache.getServerCache().isFiltered();\n newViewCache = this.applyServerMerge_(oldViewCache, merge.path, merge.children, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.ACK_USER_WRITE) {\n var ackUserWrite = operation;\n if (!ackUserWrite.revert) {\n newViewCache = this.ackUserWrite_(oldViewCache, ackUserWrite.path, ackUserWrite.affectedTree, writesCache, completeCache, accumulator);\n }\n else {\n newViewCache = this.revertUserWrite_(oldViewCache, ackUserWrite.path, writesCache, completeCache, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.LISTEN_COMPLETE) {\n newViewCache = this.listenComplete_(oldViewCache, operation.path, writesCache, accumulator);\n }\n else {\n throw util_1.assertionError('Unknown operation type: ' + operation.type);\n }\n var changes = accumulator.getChanges();\n ViewProcessor.maybeAddValueEvent_(oldViewCache, newViewCache, changes);\n return new ProcessorResult(newViewCache, changes);\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!ViewCache} newViewCache\n * @param {!Array.} accumulator\n * @private\n */\n ViewProcessor.maybeAddValueEvent_ = function (oldViewCache, newViewCache, accumulator) {\n var eventSnap = newViewCache.getEventCache();\n if (eventSnap.isFullyInitialized()) {\n var isLeafOrEmpty = eventSnap.getNode().isLeafNode() || eventSnap.getNode().isEmpty();\n var oldCompleteSnap = oldViewCache.getCompleteEventSnap();\n if (accumulator.length > 0 ||\n !oldViewCache.getEventCache().isFullyInitialized() ||\n (isLeafOrEmpty &&\n !eventSnap\n .getNode()\n .equals(/** @type {!Node} */ (oldCompleteSnap))) ||\n !eventSnap\n .getNode()\n .getPriority()\n .equals(oldCompleteSnap.getPriority())) {\n accumulator.push(Change_1.Change.valueChange(\n /** @type {!Node} */ newViewCache.getCompleteEventSnap()));\n }\n }\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} changePath\n * @param {!WriteTreeRef} writesCache\n * @param {!CompleteChildSource} source\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.generateEventCacheAfterServerEvent_ = function (viewCache, changePath, writesCache, source, accumulator) {\n var oldEventSnap = viewCache.getEventCache();\n if (writesCache.shadowingWrite(changePath) != null) {\n // we have a shadowing write, ignore changes\n return viewCache;\n }\n else {\n var newEventCache = void 0, serverNode = void 0;\n if (changePath.isEmpty()) {\n // TODO: figure out how this plays with \"sliding ack windows\"\n util_1.assert(viewCache.getServerCache().isFullyInitialized(), 'If change path is empty, we must have complete server data');\n if (viewCache.getServerCache().isFiltered()) {\n // We need to special case this, because we need to only apply writes to complete children, or\n // we might end up raising events for incomplete children. If the server data is filtered deep\n // writes cannot be guaranteed to be complete\n var serverCache = viewCache.getCompleteServerSnap();\n var completeChildren = serverCache instanceof ChildrenNode_1.ChildrenNode\n ? serverCache\n : ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var completeEventChildren = writesCache.calcCompleteEventChildren(completeChildren);\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeEventChildren, accumulator);\n }\n else {\n var completeNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeNode, accumulator);\n }\n }\n else {\n var childKey = changePath.getFront();\n if (childKey == '.priority') {\n util_1.assert(changePath.getLength() == 1, \"Can't have a priority with additional path components\");\n var oldEventNode = oldEventSnap.getNode();\n serverNode = viewCache.getServerCache().getNode();\n // we might have overwrites for this priority\n var updatedPriority = writesCache.calcEventCacheAfterServerOverwrite(changePath, oldEventNode, serverNode);\n if (updatedPriority != null) {\n newEventCache = this.filter_.updatePriority(oldEventNode, updatedPriority);\n }\n else {\n // priority didn't change, keep old node\n newEventCache = oldEventSnap.getNode();\n }\n }\n else {\n var childChangePath = changePath.popFront();\n // update child\n var newEventChild = void 0;\n if (oldEventSnap.isCompleteForChild(childKey)) {\n serverNode = viewCache.getServerCache().getNode();\n var eventChildUpdate = writesCache.calcEventCacheAfterServerOverwrite(changePath, oldEventSnap.getNode(), serverNode);\n if (eventChildUpdate != null) {\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey)\n .updateChild(childChangePath, eventChildUpdate);\n }\n else {\n // Nothing changed, just keep the old child\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey);\n }\n }\n else {\n newEventChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\n }\n if (newEventChild != null) {\n newEventCache = this.filter_.updateChild(oldEventSnap.getNode(), childKey, newEventChild, childChangePath, source, accumulator);\n }\n else {\n // no complete child available or no change\n newEventCache = oldEventSnap.getNode();\n }\n }\n }\n return viewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized() || changePath.isEmpty(), this.filter_.filtersNodes());\n }\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Path} changePath\n * @param {!Node} changedSnap\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {boolean} filterServerNode\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyServerOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, filterServerNode, accumulator) {\n var oldServerSnap = oldViewCache.getServerCache();\n var newServerCache;\n var serverFilter = filterServerNode\n ? this.filter_\n : this.filter_.getIndexedFilter();\n if (changePath.isEmpty()) {\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), changedSnap, null);\n }\n else if (serverFilter.filtersNodes() && !oldServerSnap.isFiltered()) {\n // we want to filter the server node, but we didn't filter the server node yet, so simulate a full update\n var newServerNode = oldServerSnap\n .getNode()\n .updateChild(changePath, changedSnap);\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), newServerNode, null);\n }\n else {\n var childKey = changePath.getFront();\n if (!oldServerSnap.isCompleteForPath(changePath) &&\n changePath.getLength() > 1) {\n // We don't update incomplete nodes with updates intended for other listeners\n return oldViewCache;\n }\n var childChangePath = changePath.popFront();\n var childNode = oldServerSnap.getNode().getImmediateChild(childKey);\n var newChildNode = childNode.updateChild(childChangePath, changedSnap);\n if (childKey == '.priority') {\n newServerCache = serverFilter.updatePriority(oldServerSnap.getNode(), newChildNode);\n }\n else {\n newServerCache = serverFilter.updateChild(oldServerSnap.getNode(), childKey, newChildNode, childChangePath, CompleteChildSource_1.NO_COMPLETE_CHILD_SOURCE, null);\n }\n }\n var newViewCache = oldViewCache.updateServerSnap(newServerCache, oldServerSnap.isFullyInitialized() || changePath.isEmpty(), serverFilter.filtersNodes());\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, newViewCache, completeCache);\n return this.generateEventCacheAfterServerEvent_(newViewCache, changePath, writesCache, source, accumulator);\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Path} changePath\n * @param {!Node} changedSnap\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyUserOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, accumulator) {\n var oldEventSnap = oldViewCache.getEventCache();\n var newViewCache, newEventCache;\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, oldViewCache, completeCache);\n if (changePath.isEmpty()) {\n newEventCache = this.filter_.updateFullNode(oldViewCache.getEventCache().getNode(), changedSnap, accumulator);\n newViewCache = oldViewCache.updateEventSnap(newEventCache, true, this.filter_.filtersNodes());\n }\n else {\n var childKey = changePath.getFront();\n if (childKey === '.priority') {\n newEventCache = this.filter_.updatePriority(oldViewCache.getEventCache().getNode(), changedSnap);\n newViewCache = oldViewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized(), oldEventSnap.isFiltered());\n }\n else {\n var childChangePath = changePath.popFront();\n var oldChild = oldEventSnap.getNode().getImmediateChild(childKey);\n var newChild = void 0;\n if (childChangePath.isEmpty()) {\n // Child overwrite, we can replace the child\n newChild = changedSnap;\n }\n else {\n var childNode = source.getCompleteChild(childKey);\n if (childNode != null) {\n if (childChangePath.getBack() === '.priority' &&\n childNode.getChild(childChangePath.parent()).isEmpty()) {\n // This is a priority update on an empty node. If this node exists on the server, the\n // server will send down the priority in the update, so ignore for now\n newChild = childNode;\n }\n else {\n newChild = childNode.updateChild(childChangePath, changedSnap);\n }\n }\n else {\n // There is no complete child node available\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n }\n if (!oldChild.equals(newChild)) {\n var newEventSnap = this.filter_.updateChild(oldEventSnap.getNode(), childKey, newChild, childChangePath, source, accumulator);\n newViewCache = oldViewCache.updateEventSnap(newEventSnap, oldEventSnap.isFullyInitialized(), this.filter_.filtersNodes());\n }\n else {\n newViewCache = oldViewCache;\n }\n }\n }\n return newViewCache;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {string} childKey\n * @return {boolean}\n * @private\n */\n ViewProcessor.cacheHasChild_ = function (viewCache, childKey) {\n return viewCache.getEventCache().isCompleteForChild(childKey);\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {ImmutableTree.} changedChildren\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyUserMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, accumulator) {\n var _this = this;\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n var curViewCache = viewCache;\n changedChildren.foreach(function (relativePath, childNode) {\n var writePath = path.child(relativePath);\n if (ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n changedChildren.foreach(function (relativePath, childNode) {\n var writePath = path.child(relativePath);\n if (!ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n return curViewCache;\n };\n /**\n * @param {!Node} node\n * @param {ImmutableTree.} merge\n * @return {!Node}\n * @private\n */\n ViewProcessor.prototype.applyMerge_ = function (node, merge) {\n merge.foreach(function (relativePath, childNode) {\n node = node.updateChild(relativePath, childNode);\n });\n return node;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!ImmutableTree.} changedChildren\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache\n * @param {boolean} filterServerNode\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyServerMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, filterServerNode, accumulator) {\n var _this = this;\n // If we don't have a cache yet, this merge was intended for a previously listen in the same location. Ignore it and\n // wait for the complete data update coming soon.\n if (viewCache\n .getServerCache()\n .getNode()\n .isEmpty() &&\n !viewCache.getServerCache().isFullyInitialized()) {\n return viewCache;\n }\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n var curViewCache = viewCache;\n var viewMergeTree;\n if (path.isEmpty()) {\n viewMergeTree = changedChildren;\n }\n else {\n viewMergeTree = ImmutableTree_1.ImmutableTree.Empty.setTree(path, changedChildren);\n }\n var serverNode = viewCache.getServerCache().getNode();\n viewMergeTree.children.inorderTraversal(function (childKey, childTree) {\n if (serverNode.hasChild(childKey)) {\n var serverChild = viewCache\n .getServerCache()\n .getNode()\n .getImmediateChild(childKey);\n var newChild = _this.applyMerge_(serverChild, childTree);\n curViewCache = _this.applyServerOverwrite_(curViewCache, new Path_1.Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n viewMergeTree.children.inorderTraversal(function (childKey, childMergeTree) {\n var isUnknownDeepMerge = !viewCache.getServerCache().isCompleteForChild(childKey) &&\n childMergeTree.value == null;\n if (!serverNode.hasChild(childKey) && !isUnknownDeepMerge) {\n var serverChild = viewCache\n .getServerCache()\n .getNode()\n .getImmediateChild(childKey);\n var newChild = _this.applyMerge_(serverChild, childMergeTree);\n curViewCache = _this.applyServerOverwrite_(curViewCache, new Path_1.Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n return curViewCache;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} ackPath\n * @param {!ImmutableTree} affectedTree\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.ackUserWrite_ = function (viewCache, ackPath, affectedTree, writesCache, completeCache, accumulator) {\n if (writesCache.shadowingWrite(ackPath) != null) {\n return viewCache;\n }\n // Only filter server node if it is currently filtered\n var filterServerNode = viewCache.getServerCache().isFiltered();\n // Essentially we'll just get our existing server cache for the affected paths and re-apply it as a server update\n // now that it won't be shadowed.\n var serverCache = viewCache.getServerCache();\n if (affectedTree.value != null) {\n // This is an overwrite.\n if ((ackPath.isEmpty() && serverCache.isFullyInitialized()) ||\n serverCache.isCompleteForPath(ackPath)) {\n return this.applyServerOverwrite_(viewCache, ackPath, serverCache.getNode().getChild(ackPath), writesCache, completeCache, filterServerNode, accumulator);\n }\n else if (ackPath.isEmpty()) {\n // This is a goofy edge case where we are acking data at this location but don't have full data. We\n // should just re-apply whatever we have in our cache as a merge.\n var changedChildren_1 = ImmutableTree_1.ImmutableTree.Empty;\n serverCache.getNode().forEachChild(KeyIndex_1.KEY_INDEX, function (name, node) {\n changedChildren_1 = changedChildren_1.set(new Path_1.Path(name), node);\n });\n return this.applyServerMerge_(viewCache, ackPath, changedChildren_1, writesCache, completeCache, filterServerNode, accumulator);\n }\n else {\n return viewCache;\n }\n }\n else {\n // This is a merge.\n var changedChildren_2 = ImmutableTree_1.ImmutableTree.Empty;\n affectedTree.foreach(function (mergePath, value) {\n var serverCachePath = ackPath.child(mergePath);\n if (serverCache.isCompleteForPath(serverCachePath)) {\n changedChildren_2 = changedChildren_2.set(mergePath, serverCache.getNode().getChild(serverCachePath));\n }\n });\n return this.applyServerMerge_(viewCache, ackPath, changedChildren_2, writesCache, completeCache, filterServerNode, accumulator);\n }\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!WriteTreeRef} writesCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.listenComplete_ = function (viewCache, path, writesCache, accumulator) {\n var oldServerNode = viewCache.getServerCache();\n var newViewCache = viewCache.updateServerSnap(oldServerNode.getNode(), oldServerNode.isFullyInitialized() || path.isEmpty(), oldServerNode.isFiltered());\n return this.generateEventCacheAfterServerEvent_(newViewCache, path, writesCache, CompleteChildSource_1.NO_COMPLETE_CHILD_SOURCE, accumulator);\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeServerCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.revertUserWrite_ = function (viewCache, path, writesCache, completeServerCache, accumulator) {\n var complete;\n if (writesCache.shadowingWrite(path) != null) {\n return viewCache;\n }\n else {\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, viewCache, completeServerCache);\n var oldEventCache = viewCache.getEventCache().getNode();\n var newEventCache = void 0;\n if (path.isEmpty() || path.getFront() === '.priority') {\n var newNode = void 0;\n if (viewCache.getServerCache().isFullyInitialized()) {\n newNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n }\n else {\n var serverChildren = viewCache.getServerCache().getNode();\n util_1.assert(serverChildren instanceof ChildrenNode_1.ChildrenNode, 'serverChildren would be complete if leaf node');\n newNode = writesCache.calcCompleteEventChildren(serverChildren);\n }\n newNode = newNode;\n newEventCache = this.filter_.updateFullNode(oldEventCache, newNode, accumulator);\n }\n else {\n var childKey = path.getFront();\n var newChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\n if (newChild == null &&\n viewCache.getServerCache().isCompleteForChild(childKey)) {\n newChild = oldEventCache.getImmediateChild(childKey);\n }\n if (newChild != null) {\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, newChild, path.popFront(), source, accumulator);\n }\n else if (viewCache\n .getEventCache()\n .getNode()\n .hasChild(childKey)) {\n // No complete child available, delete the existing one, if any\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, ChildrenNode_1.ChildrenNode.EMPTY_NODE, path.popFront(), source, accumulator);\n }\n else {\n newEventCache = oldEventCache;\n }\n if (newEventCache.isEmpty() &&\n viewCache.getServerCache().isFullyInitialized()) {\n // We might have reverted all child writes. Maybe the old event was a leaf node\n complete = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n if (complete.isLeafNode()) {\n newEventCache = this.filter_.updateFullNode(newEventCache, complete, accumulator);\n }\n }\n }\n complete =\n viewCache.getServerCache().isFullyInitialized() ||\n writesCache.shadowingWrite(Path_1.Path.Empty) != null;\n return viewCache.updateEventSnap(newEventCache, complete, this.filter_.filtersNodes());\n }\n };\n return ViewProcessor;\n}());\nexports.ViewProcessor = ViewProcessor;\n\n//# sourceMappingURL=ViewProcessor.js.map\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar Change_1 = __webpack_require__(9);\nvar util_2 = __webpack_require__(0);\n/**\n * @constructor\n */\nvar ChildChangeAccumulator = /** @class */ (function () {\n function ChildChangeAccumulator() {\n this.changeMap_ = {};\n }\n /**\n * @param {!Change} change\n */\n ChildChangeAccumulator.prototype.trackChildChange = function (change) {\n var type = change.type;\n var childKey /** @type {!string} */ = change.childName;\n util_2.assert(type == Change_1.Change.CHILD_ADDED ||\n type == Change_1.Change.CHILD_CHANGED ||\n type == Change_1.Change.CHILD_REMOVED, 'Only child changes supported for tracking');\n util_2.assert(childKey !== '.priority', 'Only non-priority child changes can be tracked.');\n var oldChange = util_1.safeGet(this.changeMap_, childKey);\n if (oldChange) {\n var oldType = oldChange.type;\n if (type == Change_1.Change.CHILD_ADDED && oldType == Change_1.Change.CHILD_REMOVED) {\n this.changeMap_[childKey] = Change_1.Change.childChangedChange(childKey, change.snapshotNode, oldChange.snapshotNode);\n }\n else if (type == Change_1.Change.CHILD_REMOVED &&\n oldType == Change_1.Change.CHILD_ADDED) {\n delete this.changeMap_[childKey];\n }\n else if (type == Change_1.Change.CHILD_REMOVED &&\n oldType == Change_1.Change.CHILD_CHANGED) {\n this.changeMap_[childKey] = Change_1.Change.childRemovedChange(childKey, oldChange.oldSnap);\n }\n else if (type == Change_1.Change.CHILD_CHANGED &&\n oldType == Change_1.Change.CHILD_ADDED) {\n this.changeMap_[childKey] = Change_1.Change.childAddedChange(childKey, change.snapshotNode);\n }\n else if (type == Change_1.Change.CHILD_CHANGED &&\n oldType == Change_1.Change.CHILD_CHANGED) {\n this.changeMap_[childKey] = Change_1.Change.childChangedChange(childKey, change.snapshotNode, oldChange.oldSnap);\n }\n else {\n throw util_2.assertionError('Illegal combination of changes: ' +\n change +\n ' occurred after ' +\n oldChange);\n }\n }\n else {\n this.changeMap_[childKey] = change;\n }\n };\n /**\n * @return {!Array.}\n */\n ChildChangeAccumulator.prototype.getChanges = function () {\n return util_1.getValues(this.changeMap_);\n };\n return ChildChangeAccumulator;\n}());\nexports.ChildChangeAccumulator = ChildChangeAccumulator;\n\n//# sourceMappingURL=ChildChangeAccumulator.js.map\n\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CacheNode_1 = __webpack_require__(18);\n/**\n * An implementation of CompleteChildSource that never returns any additional children\n *\n * @private\n * @constructor\n * @implements CompleteChildSource\n */\nvar NoCompleteChildSource_ = /** @class */ (function () {\n function NoCompleteChildSource_() {\n }\n /**\n * @inheritDoc\n */\n NoCompleteChildSource_.prototype.getCompleteChild = function (childKey) {\n return null;\n };\n /**\n * @inheritDoc\n */\n NoCompleteChildSource_.prototype.getChildAfterChild = function (index, child, reverse) {\n return null;\n };\n return NoCompleteChildSource_;\n}());\nexports.NoCompleteChildSource_ = NoCompleteChildSource_;\n/**\n * Singleton instance.\n * @const\n * @type {!CompleteChildSource}\n */\nexports.NO_COMPLETE_CHILD_SOURCE = new NoCompleteChildSource_();\n/**\n * An implementation of CompleteChildSource that uses a WriteTree in addition to any other server data or\n * old event caches available to calculate complete children.\n *\n *\n * @implements CompleteChildSource\n */\nvar WriteTreeCompleteChildSource = /** @class */ (function () {\n /**\n * @param {!WriteTreeRef} writes_\n * @param {!ViewCache} viewCache_\n * @param {?Node} optCompleteServerCache_\n */\n function WriteTreeCompleteChildSource(writes_, viewCache_, optCompleteServerCache_) {\n if (optCompleteServerCache_ === void 0) { optCompleteServerCache_ = null; }\n this.writes_ = writes_;\n this.viewCache_ = viewCache_;\n this.optCompleteServerCache_ = optCompleteServerCache_;\n }\n /**\n * @inheritDoc\n */\n WriteTreeCompleteChildSource.prototype.getCompleteChild = function (childKey) {\n var node = this.viewCache_.getEventCache();\n if (node.isCompleteForChild(childKey)) {\n return node.getNode().getImmediateChild(childKey);\n }\n else {\n var serverNode = this.optCompleteServerCache_ != null\n ? new CacheNode_1.CacheNode(this.optCompleteServerCache_, true, false)\n : this.viewCache_.getServerCache();\n return this.writes_.calcCompleteChild(childKey, serverNode);\n }\n };\n /**\n * @inheritDoc\n */\n WriteTreeCompleteChildSource.prototype.getChildAfterChild = function (index, child, reverse) {\n var completeServerData = this.optCompleteServerCache_ != null\n ? this.optCompleteServerCache_\n : this.viewCache_.getCompleteServerSnap();\n var nodes = this.writes_.calcIndexedSlice(completeServerData, child, 1, reverse, index);\n if (nodes.length === 0) {\n return null;\n }\n else {\n return nodes[0];\n }\n };\n return WriteTreeCompleteChildSource;\n}());\nexports.WriteTreeCompleteChildSource = WriteTreeCompleteChildSource;\n\n//# sourceMappingURL=CompleteChildSource.js.map\n\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Node_1 = __webpack_require__(5);\nvar Change_1 = __webpack_require__(9);\nvar util_1 = __webpack_require__(0);\n/**\n * An EventGenerator is used to convert \"raw\" changes (Change) as computed by the\n * CacheDiffer into actual events (Event) that can be raised. See generateEventsForChanges()\n * for details.\n *\n * @constructor\n */\nvar EventGenerator = /** @class */ (function () {\n /**\n *\n * @param {!Query} query_\n */\n function EventGenerator(query_) {\n this.query_ = query_;\n /**\n * @private\n * @type {!Index}\n */\n this.index_ = this.query_.getQueryParams().getIndex();\n }\n /**\n * Given a set of raw changes (no moved events and prevName not specified yet), and a set of\n * EventRegistrations that should be notified of these changes, generate the actual events to be raised.\n *\n * Notes:\n * - child_moved events will be synthesized at this time for any child_changed events that affect\n * our index.\n * - prevName will be calculated based on the index ordering.\n *\n * @param {!Array.} changes\n * @param {!Node} eventCache\n * @param {!Array.} eventRegistrations\n * @return {!Array.}\n */\n EventGenerator.prototype.generateEventsForChanges = function (changes, eventCache, eventRegistrations) {\n var _this = this;\n var events = [];\n var moves = [];\n changes.forEach(function (change) {\n if (change.type === Change_1.Change.CHILD_CHANGED &&\n _this.index_.indexedValueChanged(change.oldSnap, change.snapshotNode)) {\n moves.push(Change_1.Change.childMovedChange(change.childName, change.snapshotNode));\n }\n });\n this.generateEventsForType_(events, Change_1.Change.CHILD_REMOVED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_ADDED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_MOVED, moves, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_CHANGED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.VALUE, changes, eventRegistrations, eventCache);\n return events;\n };\n /**\n * Given changes of a single change type, generate the corresponding events.\n *\n * @param {!Array.} events\n * @param {!string} eventType\n * @param {!Array.} changes\n * @param {!Array.} registrations\n * @param {!Node} eventCache\n * @private\n */\n EventGenerator.prototype.generateEventsForType_ = function (events, eventType, changes, registrations, eventCache) {\n var _this = this;\n var filteredChanges = changes.filter(function (change) { return change.type === eventType; });\n filteredChanges.sort(this.compareChanges_.bind(this));\n filteredChanges.forEach(function (change) {\n var materializedChange = _this.materializeSingleChange_(change, eventCache);\n registrations.forEach(function (registration) {\n if (registration.respondsTo(change.type)) {\n events.push(registration.createEvent(materializedChange, _this.query_));\n }\n });\n });\n };\n /**\n * @param {!Change} change\n * @param {!Node} eventCache\n * @return {!Change}\n * @private\n */\n EventGenerator.prototype.materializeSingleChange_ = function (change, eventCache) {\n if (change.type === 'value' || change.type === 'child_removed') {\n return change;\n }\n else {\n change.prevName = eventCache.getPredecessorChildName(\n /** @type {!string} */\n change.childName, change.snapshotNode, this.index_);\n return change;\n }\n };\n /**\n * @param {!Change} a\n * @param {!Change} b\n * @return {number}\n * @private\n */\n EventGenerator.prototype.compareChanges_ = function (a, b) {\n if (a.childName == null || b.childName == null) {\n throw util_1.assertionError('Should only compare child_ events.');\n }\n var aWrapped = new Node_1.NamedNode(a.childName, a.snapshotNode);\n var bWrapped = new Node_1.NamedNode(b.childName, b.snapshotNode);\n return this.index_.compare(aWrapped, bWrapped);\n };\n return EventGenerator;\n}());\nexports.EventGenerator = EventGenerator;\n\n//# sourceMappingURL=EventGenerator.js.map\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(0);\nvar Path_1 = __webpack_require__(2);\nvar CompoundWrite_1 = __webpack_require__(96);\nvar PriorityIndex_1 = __webpack_require__(3);\nvar ChildrenNode_1 = __webpack_require__(4);\n/**\n * WriteTree tracks all pending user-initiated writes and has methods to calculate the result of merging them\n * with underlying server data (to create \"event cache\" data). Pending writes are added with addOverwrite()\n * and addMerge(), and removed with removeWrite().\n *\n * @constructor\n */\nvar WriteTree = /** @class */ (function () {\n function WriteTree() {\n /**\n * A tree tracking the result of applying all visible writes. This does not include transactions with\n * applyLocally=false or writes that are completely shadowed by other writes.\n *\n * @type {!CompoundWrite}\n * @private\n */\n this.visibleWrites_ = CompoundWrite_1.CompoundWrite.Empty;\n /**\n * A list of all pending writes, regardless of visibility and shadowed-ness. Used to calculate arbitrary\n * sets of the changed data, such as hidden writes (from transactions) or changes with certain writes excluded (also\n * used by transactions).\n *\n * @type {!Array.}\n * @private\n */\n this.allWrites_ = [];\n this.lastWriteId_ = -1;\n }\n /**\n * Create a new WriteTreeRef for the given path. For use with a new sync point at the given path.\n *\n * @param {!Path} path\n * @return {!WriteTreeRef}\n */\n WriteTree.prototype.childWrites = function (path) {\n return new WriteTreeRef(path, this);\n };\n /**\n * Record a new overwrite from user code.\n *\n * @param {!Path} path\n * @param {!Node} snap\n * @param {!number} writeId\n * @param {boolean=} visible This is set to false by some transactions. It should be excluded from event caches\n */\n WriteTree.prototype.addOverwrite = function (path, snap, writeId, visible) {\n util_2.assert(writeId > this.lastWriteId_, 'Stacking an older write on top of newer ones');\n if (visible === undefined) {\n visible = true;\n }\n this.allWrites_.push({\n path: path,\n snap: snap,\n writeId: writeId,\n visible: visible\n });\n if (visible) {\n this.visibleWrites_ = this.visibleWrites_.addWrite(path, snap);\n }\n this.lastWriteId_ = writeId;\n };\n /**\n * Record a new merge from user code.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} writeId\n */\n WriteTree.prototype.addMerge = function (path, changedChildren, writeId) {\n util_2.assert(writeId > this.lastWriteId_, 'Stacking an older merge on top of newer ones');\n this.allWrites_.push({\n path: path,\n children: changedChildren,\n writeId: writeId,\n visible: true\n });\n this.visibleWrites_ = this.visibleWrites_.addWrites(path, changedChildren);\n this.lastWriteId_ = writeId;\n };\n /**\n * @param {!number} writeId\n * @return {?WriteRecord}\n */\n WriteTree.prototype.getWrite = function (writeId) {\n for (var i = 0; i < this.allWrites_.length; i++) {\n var record = this.allWrites_[i];\n if (record.writeId === writeId) {\n return record;\n }\n }\n return null;\n };\n /**\n * Remove a write (either an overwrite or merge) that has been successfully acknowledge by the server. Recalculates\n * the tree if necessary. We return true if it may have been visible, meaning views need to reevaluate.\n *\n * @param {!number} writeId\n * @return {boolean} true if the write may have been visible (meaning we'll need to reevaluate / raise\n * events as a result).\n */\n WriteTree.prototype.removeWrite = function (writeId) {\n // Note: disabling this check. It could be a transaction that preempted another transaction, and thus was applied\n // out of order.\n //const validClear = revert || this.allWrites_.length === 0 || writeId <= this.allWrites_[0].writeId;\n //assert(validClear, \"Either we don't have this write, or it's the first one in the queue\");\n var _this = this;\n var idx = this.allWrites_.findIndex(function (s) {\n return s.writeId === writeId;\n });\n util_2.assert(idx >= 0, 'removeWrite called with nonexistent writeId.');\n var writeToRemove = this.allWrites_[idx];\n this.allWrites_.splice(idx, 1);\n var removedWriteWasVisible = writeToRemove.visible;\n var removedWriteOverlapsWithOtherWrites = false;\n var i = this.allWrites_.length - 1;\n while (removedWriteWasVisible && i >= 0) {\n var currentWrite = this.allWrites_[i];\n if (currentWrite.visible) {\n if (i >= idx &&\n this.recordContainsPath_(currentWrite, writeToRemove.path)) {\n // The removed write was completely shadowed by a subsequent write.\n removedWriteWasVisible = false;\n }\n else if (writeToRemove.path.contains(currentWrite.path)) {\n // Either we're covering some writes or they're covering part of us (depending on which came first).\n removedWriteOverlapsWithOtherWrites = true;\n }\n }\n i--;\n }\n if (!removedWriteWasVisible) {\n return false;\n }\n else if (removedWriteOverlapsWithOtherWrites) {\n // There's some shadowing going on. Just rebuild the visible writes from scratch.\n this.resetTree_();\n return true;\n }\n else {\n // There's no shadowing. We can safely just remove the write(s) from visibleWrites.\n if (writeToRemove.snap) {\n this.visibleWrites_ = this.visibleWrites_.removeWrite(writeToRemove.path);\n }\n else {\n var children = writeToRemove.children;\n util_1.forEach(children, function (childName) {\n _this.visibleWrites_ = _this.visibleWrites_.removeWrite(writeToRemove.path.child(childName));\n });\n }\n return true;\n }\n };\n /**\n * Return a complete snapshot for the given path if there's visible write data at that path, else null.\n * No server data is considered.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTree.prototype.getCompleteWriteData = function (path) {\n return this.visibleWrites_.getCompleteNode(path);\n };\n /**\n * Given optional, underlying server data, and an optional set of constraints (exclude some sets, include hidden\n * writes), attempt to calculate a complete snapshot for the given path\n *\n * @param {!Path} treePath\n * @param {?Node} completeServerCache\n * @param {Array.=} writeIdsToExclude An optional set to be excluded\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\n * @return {?Node}\n */\n WriteTree.prototype.calcCompleteEventCache = function (treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n if (!writeIdsToExclude && !includeHiddenWrites) {\n var shadowingNode = this.visibleWrites_.getCompleteNode(treePath);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n var subMerge = this.visibleWrites_.childCompoundWrite(treePath);\n if (subMerge.isEmpty()) {\n return completeServerCache;\n }\n else if (completeServerCache == null &&\n !subMerge.hasCompleteWrite(Path_1.Path.Empty)) {\n // We wouldn't have a complete snapshot, since there's no underlying data and no complete shadow\n return null;\n }\n else {\n var layeredCache = completeServerCache || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return subMerge.apply(layeredCache);\n }\n }\n }\n else {\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n if (!includeHiddenWrites && merge.isEmpty()) {\n return completeServerCache;\n }\n else {\n // If the server cache is null, and we don't have a complete cache, we need to return null\n if (!includeHiddenWrites &&\n completeServerCache == null &&\n !merge.hasCompleteWrite(Path_1.Path.Empty)) {\n return null;\n }\n else {\n var filter = function (write) {\n return ((write.visible || includeHiddenWrites) &&\n (!writeIdsToExclude ||\n !~writeIdsToExclude.indexOf(write.writeId)) &&\n (write.path.contains(treePath) || treePath.contains(write.path)));\n };\n var mergeAtPath = WriteTree.layerTree_(this.allWrites_, filter, treePath);\n var layeredCache = completeServerCache || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return mergeAtPath.apply(layeredCache);\n }\n }\n }\n };\n /**\n * With optional, underlying server data, attempt to return a children node of children that we have complete data for.\n * Used when creating new views, to pre-fill their complete event children snapshot.\n *\n * @param {!Path} treePath\n * @param {?ChildrenNode} completeServerChildren\n * @return {!ChildrenNode}\n */\n WriteTree.prototype.calcCompleteEventChildren = function (treePath, completeServerChildren) {\n var completeChildren = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var topLevelSet = this.visibleWrites_.getCompleteNode(treePath);\n if (topLevelSet) {\n if (!topLevelSet.isLeafNode()) {\n // we're shadowing everything. Return the children.\n topLevelSet.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childSnap) {\n completeChildren = completeChildren.updateImmediateChild(childName, childSnap);\n });\n }\n return completeChildren;\n }\n else if (completeServerChildren) {\n // Layer any children we have on top of this\n // We know we don't have a top-level set, so just enumerate existing children\n var merge_1 = this.visibleWrites_.childCompoundWrite(treePath);\n completeServerChildren.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n var node = merge_1\n .childCompoundWrite(new Path_1.Path(childName))\n .apply(childNode);\n completeChildren = completeChildren.updateImmediateChild(childName, node);\n });\n // Add any complete children we have from the set\n merge_1.getCompleteChildren().forEach(function (namedNode) {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n else {\n // We don't have anything to layer on top of. Layer on any children we have\n // Note that we can return an empty snap if we have a defined delete\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n merge.getCompleteChildren().forEach(function (namedNode) {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n };\n /**\n * Given that the underlying server data has updated, determine what, if anything, needs to be\n * applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events\n *\n * Either existingEventSnap or existingServerSnap must exist\n *\n * @param {!Path} treePath\n * @param {!Path} childPath\n * @param {?Node} existingEventSnap\n * @param {?Node} existingServerSnap\n * @return {?Node}\n */\n WriteTree.prototype.calcEventCacheAfterServerOverwrite = function (treePath, childPath, existingEventSnap, existingServerSnap) {\n util_2.assert(existingEventSnap || existingServerSnap, 'Either existingEventSnap or existingServerSnap must exist');\n var path = treePath.child(childPath);\n if (this.visibleWrites_.hasCompleteWrite(path)) {\n // At this point we can probably guarantee that we're in case 2, meaning no events\n // May need to check visibility while doing the findRootMostValueAndPath call\n return null;\n }\n else {\n // No complete shadowing. We're either partially shadowing or not shadowing at all.\n var childMerge = this.visibleWrites_.childCompoundWrite(path);\n if (childMerge.isEmpty()) {\n // We're not shadowing at all. Case 1\n return existingServerSnap.getChild(childPath);\n }\n else {\n // This could be more efficient if the serverNode + updates doesn't change the eventSnap\n // However this is tricky to find out, since user updates don't necessary change the server\n // snap, e.g. priority updates on empty nodes, or deep deletes. Another special case is if the server\n // adds nodes, but doesn't change any existing writes. It is therefore not enough to\n // only check if the updates change the serverNode.\n // Maybe check if the merge tree contains these special cases and only do a full overwrite in that case?\n return childMerge.apply(existingServerSnap.getChild(childPath));\n }\n }\n };\n /**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n *\n * @param {!Path} treePath\n * @param {!string} childKey\n * @param {!CacheNode} existingServerSnap\n * @return {?Node}\n */\n WriteTree.prototype.calcCompleteChild = function (treePath, childKey, existingServerSnap) {\n var path = treePath.child(childKey);\n var shadowingNode = this.visibleWrites_.getCompleteNode(path);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n if (existingServerSnap.isCompleteForChild(childKey)) {\n var childMerge = this.visibleWrites_.childCompoundWrite(path);\n return childMerge.apply(existingServerSnap.getNode().getImmediateChild(childKey));\n }\n else {\n return null;\n }\n }\n };\n /**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTree.prototype.shadowingWrite = function (path) {\n return this.visibleWrites_.getCompleteNode(path);\n };\n /**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window.\n *\n * @param {!Path} treePath\n * @param {?Node} completeServerData\n * @param {!NamedNode} startPost\n * @param {!number} count\n * @param {boolean} reverse\n * @param {!Index} index\n * @return {!Array.}\n */\n WriteTree.prototype.calcIndexedSlice = function (treePath, completeServerData, startPost, count, reverse, index) {\n var toIterate;\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n var shadowingNode = merge.getCompleteNode(Path_1.Path.Empty);\n if (shadowingNode != null) {\n toIterate = shadowingNode;\n }\n else if (completeServerData != null) {\n toIterate = merge.apply(completeServerData);\n }\n else {\n // no children to iterate on\n return [];\n }\n toIterate = toIterate.withIndex(index);\n if (!toIterate.isEmpty() && !toIterate.isLeafNode()) {\n var nodes = [];\n var cmp = index.getCompare();\n var iter = reverse\n ? toIterate.getReverseIteratorFrom(startPost, index)\n : toIterate.getIteratorFrom(startPost, index);\n var next = iter.getNext();\n while (next && nodes.length < count) {\n if (cmp(next, startPost) !== 0) {\n nodes.push(next);\n }\n next = iter.getNext();\n }\n return nodes;\n }\n else {\n return [];\n }\n };\n /**\n * @param {!WriteRecord} writeRecord\n * @param {!Path} path\n * @return {boolean}\n * @private\n */\n WriteTree.prototype.recordContainsPath_ = function (writeRecord, path) {\n if (writeRecord.snap) {\n return writeRecord.path.contains(path);\n }\n else {\n // findKey can return undefined, so use !! to coerce to boolean\n return !!util_1.findKey(writeRecord.children, function (childSnap, childName) {\n return writeRecord.path.child(childName).contains(path);\n });\n }\n };\n /**\n * Re-layer the writes and merges into a tree so we can efficiently calculate event snapshots\n * @private\n */\n WriteTree.prototype.resetTree_ = function () {\n this.visibleWrites_ = WriteTree.layerTree_(this.allWrites_, WriteTree.DefaultFilter_, Path_1.Path.Empty);\n if (this.allWrites_.length > 0) {\n this.lastWriteId_ = this.allWrites_[this.allWrites_.length - 1].writeId;\n }\n else {\n this.lastWriteId_ = -1;\n }\n };\n /**\n * The default filter used when constructing the tree. Keep everything that's visible.\n *\n * @param {!WriteRecord} write\n * @return {boolean}\n * @private\n */\n WriteTree.DefaultFilter_ = function (write) {\n return write.visible;\n };\n /**\n * Static method. Given an array of WriteRecords, a filter for which ones to include, and a path, construct the tree of\n * event data at that path.\n *\n * @param {!Array.} writes\n * @param {!function(!WriteRecord):boolean} filter\n * @param {!Path} treeRoot\n * @return {!CompoundWrite}\n * @private\n */\n WriteTree.layerTree_ = function (writes, filter, treeRoot) {\n var compoundWrite = CompoundWrite_1.CompoundWrite.Empty;\n for (var i = 0; i < writes.length; ++i) {\n var write = writes[i];\n // Theory, a later set will either:\n // a) abort a relevant transaction, so no need to worry about excluding it from calculating that transaction\n // b) not be relevant to a transaction (separate branch), so again will not affect the data for that transaction\n if (filter(write)) {\n var writePath = write.path;\n var relativePath = void 0;\n if (write.snap) {\n if (treeRoot.contains(writePath)) {\n relativePath = Path_1.Path.relativePath(treeRoot, writePath);\n compoundWrite = compoundWrite.addWrite(relativePath, write.snap);\n }\n else if (writePath.contains(treeRoot)) {\n relativePath = Path_1.Path.relativePath(writePath, treeRoot);\n compoundWrite = compoundWrite.addWrite(Path_1.Path.Empty, write.snap.getChild(relativePath));\n }\n else {\n // There is no overlap between root path and write path, ignore write\n }\n }\n else if (write.children) {\n if (treeRoot.contains(writePath)) {\n relativePath = Path_1.Path.relativePath(treeRoot, writePath);\n compoundWrite = compoundWrite.addWrites(relativePath, write.children);\n }\n else if (writePath.contains(treeRoot)) {\n relativePath = Path_1.Path.relativePath(writePath, treeRoot);\n if (relativePath.isEmpty()) {\n compoundWrite = compoundWrite.addWrites(Path_1.Path.Empty, write.children);\n }\n else {\n var child = util_1.safeGet(write.children, relativePath.getFront());\n if (child) {\n // There exists a child in this node that matches the root path\n var deepNode = child.getChild(relativePath.popFront());\n compoundWrite = compoundWrite.addWrite(Path_1.Path.Empty, deepNode);\n }\n }\n }\n else {\n // There is no overlap between root path and write path, ignore write\n }\n }\n else {\n throw util_2.assertionError('WriteRecord should have .snap or .children');\n }\n }\n }\n return compoundWrite;\n };\n return WriteTree;\n}());\nexports.WriteTree = WriteTree;\n/**\n * A WriteTreeRef wraps a WriteTree and a path, for convenient access to a particular subtree. All of the methods\n * just proxy to the underlying WriteTree.\n *\n * @constructor\n */\nvar WriteTreeRef = /** @class */ (function () {\n /**\n * @param {!Path} path\n * @param {!WriteTree} writeTree\n */\n function WriteTreeRef(path, writeTree) {\n this.treePath_ = path;\n this.writeTree_ = writeTree;\n }\n /**\n * If possible, returns a complete event cache, using the underlying server data if possible. In addition, can be used\n * to get a cache that includes hidden writes, and excludes arbitrary writes. Note that customizing the returned node\n * can lead to a more expensive calculation.\n *\n * @param {?Node} completeServerCache\n * @param {Array.=} writeIdsToExclude Optional writes to exclude.\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcCompleteEventCache = function (completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n return this.writeTree_.calcCompleteEventCache(this.treePath_, completeServerCache, writeIdsToExclude, includeHiddenWrites);\n };\n /**\n * If possible, returns a children node containing all of the complete children we have data for. The returned data is a\n * mix of the given server data and write data.\n *\n * @param {?ChildrenNode} completeServerChildren\n * @return {!ChildrenNode}\n */\n WriteTreeRef.prototype.calcCompleteEventChildren = function (completeServerChildren) {\n return this.writeTree_.calcCompleteEventChildren(this.treePath_, completeServerChildren);\n };\n /**\n * Given that either the underlying server data has updated or the outstanding writes have updated, determine what,\n * if anything, needs to be applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events should be raised\n *\n * Either existingEventSnap or existingServerSnap must exist, this is validated via an assert\n *\n * @param {!Path} path\n * @param {?Node} existingEventSnap\n * @param {?Node} existingServerSnap\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcEventCacheAfterServerOverwrite = function (path, existingEventSnap, existingServerSnap) {\n return this.writeTree_.calcEventCacheAfterServerOverwrite(this.treePath_, path, existingEventSnap, existingServerSnap);\n };\n /**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTreeRef.prototype.shadowingWrite = function (path) {\n return this.writeTree_.shadowingWrite(this.treePath_.child(path));\n };\n /**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window\n *\n * @param {?Node} completeServerData\n * @param {!NamedNode} startPost\n * @param {!number} count\n * @param {boolean} reverse\n * @param {!Index} index\n * @return {!Array.}\n */\n WriteTreeRef.prototype.calcIndexedSlice = function (completeServerData, startPost, count, reverse, index) {\n return this.writeTree_.calcIndexedSlice(this.treePath_, completeServerData, startPost, count, reverse, index);\n };\n /**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n *\n * @param {!string} childKey\n * @param {!CacheNode} existingServerCache\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcCompleteChild = function (childKey, existingServerCache) {\n return this.writeTree_.calcCompleteChild(this.treePath_, childKey, existingServerCache);\n };\n /**\n * Return a WriteTreeRef for a child.\n *\n * @param {string} childName\n * @return {!WriteTreeRef}\n */\n WriteTreeRef.prototype.child = function (childName) {\n return new WriteTreeRef(this.treePath_.child(childName), this.writeTree_);\n };\n return WriteTreeRef;\n}());\nexports.WriteTreeRef = WriteTreeRef;\n\n//# sourceMappingURL=WriteTree.js.map\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ImmutableTree_1 = __webpack_require__(22);\nvar Path_1 = __webpack_require__(2);\nvar util_1 = __webpack_require__(0);\nvar Node_1 = __webpack_require__(5);\nvar PriorityIndex_1 = __webpack_require__(3);\nvar util_2 = __webpack_require__(0);\n/**\n * This class holds a collection of writes that can be applied to nodes in unison. It abstracts away the logic with\n * dealing with priority writes and multiple nested writes. At any given path there is only allowed to be one write\n * modifying that path. Any write to an existing path or shadowing an existing path will modify that existing write\n * to reflect the write added.\n *\n * @constructor\n * @param {!ImmutableTree.} writeTree\n */\nvar CompoundWrite = /** @class */ (function () {\n function CompoundWrite(writeTree_) {\n this.writeTree_ = writeTree_;\n }\n /**\n * @param {!Path} path\n * @param {!Node} node\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.addWrite = function (path, node) {\n if (path.isEmpty()) {\n return new CompoundWrite(new ImmutableTree_1.ImmutableTree(node));\n }\n else {\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n var rootMostPath = rootmost.path;\n var value = rootmost.value;\n var relativePath = Path_1.Path.relativePath(rootMostPath, path);\n value = value.updateChild(relativePath, node);\n return new CompoundWrite(this.writeTree_.set(rootMostPath, value));\n }\n else {\n var subtree = new ImmutableTree_1.ImmutableTree(node);\n var newWriteTree = this.writeTree_.setTree(path, subtree);\n return new CompoundWrite(newWriteTree);\n }\n }\n };\n /**\n * @param {!Path} path\n * @param {!Object.} updates\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.addWrites = function (path, updates) {\n var newWrite = this;\n util_1.forEach(updates, function (childKey, node) {\n newWrite = newWrite.addWrite(path.child(childKey), node);\n });\n return newWrite;\n };\n /**\n * Will remove a write at the given path and deeper paths. This will not modify a write at a higher\n * location, which must be removed by calling this method with that path.\n *\n * @param {!Path} path The path at which a write and all deeper writes should be removed\n * @return {!CompoundWrite} The new CompoundWrite with the removed path\n */\n CompoundWrite.prototype.removeWrite = function (path) {\n if (path.isEmpty()) {\n return CompoundWrite.Empty;\n }\n else {\n var newWriteTree = this.writeTree_.setTree(path, ImmutableTree_1.ImmutableTree.Empty);\n return new CompoundWrite(newWriteTree);\n }\n };\n /**\n * Returns whether this CompoundWrite will fully overwrite a node at a given location and can therefore be\n * considered \"complete\".\n *\n * @param {!Path} path The path to check for\n * @return {boolean} Whether there is a complete write at that path\n */\n CompoundWrite.prototype.hasCompleteWrite = function (path) {\n return this.getCompleteNode(path) != null;\n };\n /**\n * Returns a node for a path if and only if the node is a \"complete\" overwrite at that path. This will not aggregate\n * writes from deeper paths, but will return child nodes from a more shallow path.\n *\n * @param {!Path} path The path to get a complete write\n * @return {?Node} The node if complete at that path, or null otherwise.\n */\n CompoundWrite.prototype.getCompleteNode = function (path) {\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n return this.writeTree_\n .get(rootmost.path)\n .getChild(Path_1.Path.relativePath(rootmost.path, path));\n }\n else {\n return null;\n }\n };\n /**\n * Returns all children that are guaranteed to be a complete overwrite.\n *\n * @return {!Array.} A list of all complete children.\n */\n CompoundWrite.prototype.getCompleteChildren = function () {\n var children = [];\n var node = this.writeTree_.value;\n if (node != null) {\n // If it's a leaf node, it has no children; so nothing to do.\n if (!node.isLeafNode()) {\n node.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n children.push(new Node_1.NamedNode(childName, childNode));\n });\n }\n }\n else {\n this.writeTree_.children.inorderTraversal(function (childName, childTree) {\n if (childTree.value != null) {\n children.push(new Node_1.NamedNode(childName, childTree.value));\n }\n });\n }\n return children;\n };\n /**\n * @param {!Path} path\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.childCompoundWrite = function (path) {\n if (path.isEmpty()) {\n return this;\n }\n else {\n var shadowingNode = this.getCompleteNode(path);\n if (shadowingNode != null) {\n return new CompoundWrite(new ImmutableTree_1.ImmutableTree(shadowingNode));\n }\n else {\n return new CompoundWrite(this.writeTree_.subtree(path));\n }\n }\n };\n /**\n * Returns true if this CompoundWrite is empty and therefore does not modify any nodes.\n * @return {boolean} Whether this CompoundWrite is empty\n */\n CompoundWrite.prototype.isEmpty = function () {\n return this.writeTree_.isEmpty();\n };\n /**\n * Applies this CompoundWrite to a node. The node is returned with all writes from this CompoundWrite applied to the\n * node\n * @param {!Node} node The node to apply this CompoundWrite to\n * @return {!Node} The node with all writes applied\n */\n CompoundWrite.prototype.apply = function (node) {\n return CompoundWrite.applySubtreeWrite_(Path_1.Path.Empty, this.writeTree_, node);\n };\n /**\n * @type {!CompoundWrite}\n */\n CompoundWrite.Empty = new CompoundWrite(new ImmutableTree_1.ImmutableTree(null));\n /**\n * @param {!Path} relativePath\n * @param {!ImmutableTree.} writeTree\n * @param {!Node} node\n * @return {!Node}\n * @private\n */\n CompoundWrite.applySubtreeWrite_ = function (relativePath, writeTree, node) {\n if (writeTree.value != null) {\n // Since there a write is always a leaf, we're done here\n return node.updateChild(relativePath, writeTree.value);\n }\n else {\n var priorityWrite_1 = null;\n writeTree.children.inorderTraversal(function (childKey, childTree) {\n if (childKey === '.priority') {\n // Apply priorities at the end so we don't update priorities for either empty nodes or forget\n // to apply priorities to empty nodes that are later filled\n util_2.assert(childTree.value !== null, 'Priority writes must always be leaf nodes');\n priorityWrite_1 = childTree.value;\n }\n else {\n node = CompoundWrite.applySubtreeWrite_(relativePath.child(childKey), childTree, node);\n }\n });\n // If there was a priority write, we only apply it if the node is not empty\n if (!node.getChild(relativePath).isEmpty() && priorityWrite_1 !== null) {\n node = node.updateChild(relativePath.child('.priority'), priorityWrite_1);\n }\n return node;\n }\n };\n return CompoundWrite;\n}());\nexports.CompoundWrite = CompoundWrite;\n\n//# sourceMappingURL=CompoundWrite.js.map\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChildrenNode_1 = __webpack_require__(4);\n/**\n * Mutable object which basically just stores a reference to the \"latest\" immutable snapshot.\n *\n * @constructor\n */\nvar SnapshotHolder = /** @class */ (function () {\n function SnapshotHolder() {\n this.rootNode_ = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n SnapshotHolder.prototype.getNode = function (path) {\n return this.rootNode_.getChild(path);\n };\n SnapshotHolder.prototype.updateSnapshot = function (path, newSnapshotNode) {\n this.rootNode_ = this.rootNode_.updateChild(path, newSnapshotNode);\n };\n return SnapshotHolder;\n}());\nexports.SnapshotHolder = SnapshotHolder;\n\n//# sourceMappingURL=SnapshotHolder.js.map\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(1);\n/**\n * Abstraction around FirebaseApp's token fetching capabilities.\n */\nvar AuthTokenProvider = /** @class */ (function () {\n /**\n * @param {!FirebaseApp} app_\n */\n function AuthTokenProvider(app_) {\n this.app_ = app_;\n }\n /**\n * @param {boolean} forceRefresh\n * @return {!Promise}\n */\n AuthTokenProvider.prototype.getToken = function (forceRefresh) {\n return this.app_['INTERNAL']['getToken'](forceRefresh).then(null, \n // .catch\n function (error) {\n // TODO: Need to figure out all the cases this is raised and whether\n // this makes sense.\n if (error && error.code === 'auth/token-not-initialized') {\n util_1.log('Got auth/token-not-initialized error. Treating as null token.');\n return null;\n }\n else {\n return Promise.reject(error);\n }\n });\n };\n AuthTokenProvider.prototype.addTokenChangeListener = function (listener) {\n // TODO: We might want to wrap the listener and call it with no args to\n // avoid a leaky abstraction, but that makes removing the listener harder.\n this.app_['INTERNAL']['addAuthTokenListener'](listener);\n };\n AuthTokenProvider.prototype.removeTokenChangeListener = function (listener) {\n this.app_['INTERNAL']['removeAuthTokenListener'](listener);\n };\n AuthTokenProvider.prototype.notifyForInvalidToken = function () {\n var errorMessage = 'Provided authentication credentials for the app named \"' +\n this.app_.name +\n '\" are invalid. This usually indicates your app was not ' +\n 'initialized correctly. ';\n if ('credential' in this.app_.options) {\n errorMessage +=\n 'Make sure the \"credential\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else if ('serviceAccount' in this.app_.options) {\n errorMessage +=\n 'Make sure the \"serviceAccount\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else {\n errorMessage +=\n 'Make sure the \"apiKey\" and \"databaseURL\" properties provided to ' +\n 'initializeApp() match the values provided for your app at ' +\n 'https://console.firebase.google.com/.';\n }\n util_1.warn(errorMessage);\n };\n return AuthTokenProvider;\n}());\nexports.AuthTokenProvider = AuthTokenProvider;\n\n//# sourceMappingURL=AuthTokenProvider.js.map\n\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(0);\n/**\n * Tracks a collection of stats.\n *\n * @constructor\n */\nvar StatsCollection = /** @class */ (function () {\n function StatsCollection() {\n this.counters_ = {};\n }\n StatsCollection.prototype.incrementCounter = function (name, amount) {\n if (amount === void 0) { amount = 1; }\n if (!util_2.contains(this.counters_, name))\n this.counters_[name] = 0;\n this.counters_[name] += amount;\n };\n StatsCollection.prototype.get = function () {\n return util_1.deepCopy(this.counters_);\n };\n return StatsCollection;\n}());\nexports.StatsCollection = StatsCollection;\n\n//# sourceMappingURL=StatsCollection.js.map\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar StatsListener_1 = __webpack_require__(48);\n// Assuming some apps may have a short amount of time on page, and a bulk of firebase operations probably\n// happen on page load, we try to report our first set of stats pretty quickly, but we wait at least 10\n// seconds to try to ensure the Firebase connection is established / settled.\nvar FIRST_STATS_MIN_TIME = 10 * 1000;\nvar FIRST_STATS_MAX_TIME = 30 * 1000;\n// We'll continue to report stats on average every 5 minutes.\nvar REPORT_STATS_INTERVAL = 5 * 60 * 1000;\n/**\n * @constructor\n */\nvar StatsReporter = /** @class */ (function () {\n /**\n * @param collection\n * @param server_\n */\n function StatsReporter(collection, server_) {\n this.server_ = server_;\n this.statsToReport_ = {};\n this.statsListener_ = new StatsListener_1.StatsListener(collection);\n var timeout = FIRST_STATS_MIN_TIME +\n (FIRST_STATS_MAX_TIME - FIRST_STATS_MIN_TIME) * Math.random();\n util_2.setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(timeout));\n }\n StatsReporter.prototype.includeStat = function (stat) {\n this.statsToReport_[stat] = true;\n };\n StatsReporter.prototype.reportStats_ = function () {\n var _this = this;\n var stats = this.statsListener_.get();\n var reportedStats = {};\n var haveStatsToReport = false;\n util_1.forEach(stats, function (stat, value) {\n if (value > 0 && util_1.contains(_this.statsToReport_, stat)) {\n reportedStats[stat] = value;\n haveStatsToReport = true;\n }\n });\n if (haveStatsToReport) {\n this.server_.reportStats(reportedStats);\n }\n // queue our next run.\n util_2.setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(Math.random() * 2 * REPORT_STATS_INTERVAL));\n };\n return StatsReporter;\n}());\nexports.StatsReporter = StatsReporter;\n\n//# sourceMappingURL=StatsReporter.js.map\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(1);\n/**\n * The event queue serves a few purposes:\n * 1. It ensures we maintain event order in the face of event callbacks doing operations that result in more\n * events being queued.\n * 2. raiseQueuedEvents() handles being called reentrantly nicely. That is, if in the course of raising events,\n * raiseQueuedEvents() is called again, the \"inner\" call will pick up raising events where the \"outer\" call\n * left off, ensuring that the events are still raised synchronously and in order.\n * 3. You can use raiseEventsAtPath and raiseEventsForChangedPath to ensure only relevant previously-queued\n * events are raised synchronously.\n *\n * NOTE: This can all go away if/when we move to async events.\n *\n * @constructor\n */\nvar EventQueue = /** @class */ (function () {\n function EventQueue() {\n /**\n * @private\n * @type {!Array.}\n */\n this.eventLists_ = [];\n /**\n * Tracks recursion depth of raiseQueuedEvents_, for debugging purposes.\n * @private\n * @type {!number}\n */\n this.recursionDepth_ = 0;\n }\n /**\n * @param {!Array.} eventDataList The new events to queue.\n */\n EventQueue.prototype.queueEvents = function (eventDataList) {\n // We group events by path, storing them in a single EventList, to make it easier to skip over them quickly.\n var currList = null;\n for (var i = 0; i < eventDataList.length; i++) {\n var eventData = eventDataList[i];\n var eventPath = eventData.getPath();\n if (currList !== null && !eventPath.equals(currList.getPath())) {\n this.eventLists_.push(currList);\n currList = null;\n }\n if (currList === null) {\n currList = new EventList(eventPath);\n }\n currList.add(eventData);\n }\n if (currList) {\n this.eventLists_.push(currList);\n }\n };\n /**\n * Queues the specified events and synchronously raises all events (including previously queued ones)\n * for the specified path.\n *\n * It is assumed that the new events are all for the specified path.\n *\n * @param {!Path} path The path to raise events for.\n * @param {!Array.} eventDataList The new events to raise.\n */\n EventQueue.prototype.raiseEventsAtPath = function (path, eventDataList) {\n this.queueEvents(eventDataList);\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\n return eventPath.equals(path);\n });\n };\n /**\n * Queues the specified events and synchronously raises all events (including previously queued ones) for\n * locations related to the specified change path (i.e. all ancestors and descendants).\n *\n * It is assumed that the new events are all related (ancestor or descendant) to the specified path.\n *\n * @param {!Path} changedPath The path to raise events for.\n * @param {!Array.} eventDataList The events to raise\n */\n EventQueue.prototype.raiseEventsForChangedPath = function (changedPath, eventDataList) {\n this.queueEvents(eventDataList);\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\n return eventPath.contains(changedPath) || changedPath.contains(eventPath);\n });\n };\n /**\n * @param {!function(!Path):boolean} predicate\n * @private\n */\n EventQueue.prototype.raiseQueuedEventsMatchingPredicate_ = function (predicate) {\n this.recursionDepth_++;\n var sentAll = true;\n for (var i = 0; i < this.eventLists_.length; i++) {\n var eventList = this.eventLists_[i];\n if (eventList) {\n var eventPath = eventList.getPath();\n if (predicate(eventPath)) {\n this.eventLists_[i].raise();\n this.eventLists_[i] = null;\n }\n else {\n sentAll = false;\n }\n }\n }\n if (sentAll) {\n this.eventLists_ = [];\n }\n this.recursionDepth_--;\n };\n return EventQueue;\n}());\nexports.EventQueue = EventQueue;\n/**\n * @param {!Path} path\n * @constructor\n */\nvar EventList = /** @class */ (function () {\n function EventList(path_) {\n this.path_ = path_;\n /**\n * @type {!Array.}\n * @private\n */\n this.events_ = [];\n }\n /**\n * @param {!Event} eventData\n */\n EventList.prototype.add = function (eventData) {\n this.events_.push(eventData);\n };\n /**\n * Iterates through the list and raises each event\n */\n EventList.prototype.raise = function () {\n for (var i = 0; i < this.events_.length; i++) {\n var eventData = this.events_[i];\n if (eventData !== null) {\n this.events_[i] = null;\n var eventFn = eventData.getEventRunner();\n if (util_1.logger) {\n util_1.log('event: ' + eventData.toString());\n }\n util_1.exceptionGuard(eventFn);\n }\n }\n };\n /**\n * @return {!Path}\n */\n EventList.prototype.getPath = function () {\n return this.path_;\n };\n return EventList;\n}());\nexports.EventList = EventList;\n\n//# sourceMappingURL=EventQueue.js.map\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EventEmitter_1 = __webpack_require__(50);\nvar util_1 = __webpack_require__(0);\n/**\n * @extends {EventEmitter}\n */\nvar VisibilityMonitor = /** @class */ (function (_super) {\n __extends(VisibilityMonitor, _super);\n function VisibilityMonitor() {\n var _this = _super.call(this, ['visible']) || this;\n var hidden;\n var visibilityChange;\n if (typeof document !== 'undefined' &&\n typeof document.addEventListener !== 'undefined') {\n if (typeof document['hidden'] !== 'undefined') {\n // Opera 12.10 and Firefox 18 and later support\n visibilityChange = 'visibilitychange';\n hidden = 'hidden';\n }\n else if (typeof document['mozHidden'] !== 'undefined') {\n visibilityChange = 'mozvisibilitychange';\n hidden = 'mozHidden';\n }\n else if (typeof document['msHidden'] !== 'undefined') {\n visibilityChange = 'msvisibilitychange';\n hidden = 'msHidden';\n }\n else if (typeof document['webkitHidden'] !== 'undefined') {\n visibilityChange = 'webkitvisibilitychange';\n hidden = 'webkitHidden';\n }\n }\n // Initially, we always assume we are visible. This ensures that in browsers\n // without page visibility support or in cases where we are never visible\n // (e.g. chrome extension), we act as if we are visible, i.e. don't delay\n // reconnects\n _this.visible_ = true;\n if (visibilityChange) {\n document.addEventListener(visibilityChange, function () {\n var visible = !document[hidden];\n if (visible !== _this.visible_) {\n _this.visible_ = visible;\n _this.trigger('visible', visible);\n }\n }, false);\n }\n return _this;\n }\n VisibilityMonitor.getInstance = function () {\n return new VisibilityMonitor();\n };\n /**\n * @param {!string} eventType\n * @return {Array.}\n */\n VisibilityMonitor.prototype.getInitialEvent = function (eventType) {\n util_1.assert(eventType === 'visible', 'Unknown event type: ' + eventType);\n return [this.visible_];\n };\n return VisibilityMonitor;\n}(EventEmitter_1.EventEmitter));\nexports.VisibilityMonitor = VisibilityMonitor;\n\n//# sourceMappingURL=VisibilityMonitor.js.map\n\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar EventEmitter_1 = __webpack_require__(50);\nvar util_2 = __webpack_require__(0);\n/**\n * Monitors online state (as reported by window.online/offline events).\n *\n * The expectation is that this could have many false positives (thinks we are online\n * when we're not), but no false negatives. So we can safely use it to determine when\n * we definitely cannot reach the internet.\n *\n * @extends {EventEmitter}\n */\nvar OnlineMonitor = /** @class */ (function (_super) {\n __extends(OnlineMonitor, _super);\n function OnlineMonitor() {\n var _this = _super.call(this, ['online']) || this;\n _this.online_ = true;\n // We've had repeated complaints that Cordova apps can get stuck \"offline\", e.g.\n // https://forum.ionicframework.com/t/firebase-connection-is-lost-and-never-come-back/43810\n // It would seem that the 'online' event does not always fire consistently. So we disable it\n // for Cordova.\n if (typeof window !== 'undefined' &&\n typeof window.addEventListener !== 'undefined' &&\n !util_2.isMobileCordova()) {\n window.addEventListener('online', function () {\n if (!_this.online_) {\n _this.online_ = true;\n _this.trigger('online', true);\n }\n }, false);\n window.addEventListener('offline', function () {\n if (_this.online_) {\n _this.online_ = false;\n _this.trigger('online', false);\n }\n }, false);\n }\n return _this;\n }\n OnlineMonitor.getInstance = function () {\n return new OnlineMonitor();\n };\n /**\n * @param {!string} eventType\n * @return {Array.}\n */\n OnlineMonitor.prototype.getInitialEvent = function (eventType) {\n util_1.assert(eventType === 'online', 'Unknown event type: ' + eventType);\n return [this.online_];\n };\n /**\n * @return {boolean}\n */\n OnlineMonitor.prototype.currentlyOnline = function () {\n return this.online_;\n };\n return OnlineMonitor;\n}(EventEmitter_1.EventEmitter));\nexports.OnlineMonitor = OnlineMonitor;\n\n//# sourceMappingURL=OnlineMonitor.js.map\n\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BrowserPollConnection_1 = __webpack_require__(52);\nvar WebSocketConnection_1 = __webpack_require__(53);\nvar util_1 = __webpack_require__(1);\n/**\n * Currently simplistic, this class manages what transport a Connection should use at various stages of its\n * lifecycle.\n *\n * It starts with longpolling in a browser, and httppolling on node. It then upgrades to websockets if\n * they are available.\n * @constructor\n */\nvar TransportManager = /** @class */ (function () {\n /**\n * @param {!RepoInfo} repoInfo Metadata around the namespace we're connecting to\n */\n function TransportManager(repoInfo) {\n this.initTransports_(repoInfo);\n }\n Object.defineProperty(TransportManager, \"ALL_TRANSPORTS\", {\n /**\n * @const\n * @type {!Array.}\n */\n get: function () {\n return [BrowserPollConnection_1.BrowserPollConnection, WebSocketConnection_1.WebSocketConnection];\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {!RepoInfo} repoInfo\n * @private\n */\n TransportManager.prototype.initTransports_ = function (repoInfo) {\n var isWebSocketsAvailable = WebSocketConnection_1.WebSocketConnection && WebSocketConnection_1.WebSocketConnection['isAvailable']();\n var isSkipPollConnection = isWebSocketsAvailable && !WebSocketConnection_1.WebSocketConnection.previouslyFailed();\n if (repoInfo.webSocketOnly) {\n if (!isWebSocketsAvailable)\n util_1.warn(\"wss:// URL used, but browser isn't known to support websockets. Trying anyway.\");\n isSkipPollConnection = true;\n }\n if (isSkipPollConnection) {\n this.transports_ = [WebSocketConnection_1.WebSocketConnection];\n }\n else {\n var transports_1 = (this.transports_ = []);\n util_1.each(TransportManager.ALL_TRANSPORTS, function (i, transport) {\n if (transport && transport['isAvailable']()) {\n transports_1.push(transport);\n }\n });\n }\n };\n /**\n * @return {function(new:Transport, !string, !RepoInfo, string=, string=)} The constructor for the\n * initial transport to use\n */\n TransportManager.prototype.initialTransport = function () {\n if (this.transports_.length > 0) {\n return this.transports_[0];\n }\n else {\n throw new Error('No transports available');\n }\n };\n /**\n * @return {?function(new:Transport, function(),function(), string=)} The constructor for the next\n * transport, or null\n */\n TransportManager.prototype.upgradeTransport = function () {\n if (this.transports_.length > 1) {\n return this.transports_[1];\n }\n else {\n return null;\n }\n };\n return TransportManager;\n}());\nexports.TransportManager = TransportManager;\n\n//# sourceMappingURL=TransportManager.js.map\n\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(1);\n/**\n * This class ensures the packets from the server arrive in order\n * This class takes data from the server and ensures it gets passed into the callbacks in order.\n * @constructor\n */\nvar PacketReceiver = /** @class */ (function () {\n /**\n * @param onMessage_\n */\n function PacketReceiver(onMessage_) {\n this.onMessage_ = onMessage_;\n this.pendingResponses = [];\n this.currentResponseNum = 0;\n this.closeAfterResponse = -1;\n this.onClose = null;\n }\n PacketReceiver.prototype.closeAfter = function (responseNum, callback) {\n this.closeAfterResponse = responseNum;\n this.onClose = callback;\n if (this.closeAfterResponse < this.currentResponseNum) {\n this.onClose();\n this.onClose = null;\n }\n };\n /**\n * Each message from the server comes with a response number, and an array of data. The responseNumber\n * allows us to ensure that we process them in the right order, since we can't be guaranteed that all\n * browsers will respond in the same order as the requests we sent\n * @param {number} requestNum\n * @param {Array} data\n */\n PacketReceiver.prototype.handleResponse = function (requestNum, data) {\n var _this = this;\n this.pendingResponses[requestNum] = data;\n var _loop_1 = function () {\n var toProcess = this_1.pendingResponses[this_1.currentResponseNum];\n delete this_1.pendingResponses[this_1.currentResponseNum];\n var _loop_2 = function (i) {\n if (toProcess[i]) {\n util_1.exceptionGuard(function () {\n _this.onMessage_(toProcess[i]);\n });\n }\n };\n for (var i = 0; i < toProcess.length; ++i) {\n _loop_2(i);\n }\n if (this_1.currentResponseNum === this_1.closeAfterResponse) {\n if (this_1.onClose) {\n this_1.onClose();\n this_1.onClose = null;\n }\n return \"break\";\n }\n this_1.currentResponseNum++;\n };\n var this_1 = this;\n while (this.pendingResponses[this.currentResponseNum]) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n };\n return PacketReceiver;\n}());\nexports.PacketReceiver = PacketReceiver;\n\n//# sourceMappingURL=PacketReceiver.js.map\n\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar util_3 = __webpack_require__(0);\nvar util_4 = __webpack_require__(0);\nvar util_5 = __webpack_require__(0);\nvar ServerActions_1 = __webpack_require__(54);\n/**\n * An implementation of ServerActions that communicates with the server via REST requests.\n * This is mostly useful for compatibility with crawlers, where we don't want to spin up a full\n * persistent connection (using WebSockets or long-polling)\n */\nvar ReadonlyRestClient = /** @class */ (function (_super) {\n __extends(ReadonlyRestClient, _super);\n /**\n * @param {!RepoInfo} repoInfo_ Data about the namespace we are connecting to\n * @param {function(string, *, boolean, ?number)} onDataUpdate_ A callback for new data from the server\n * @param {AuthTokenProvider} authTokenProvider_\n * @implements {ServerActions}\n */\n function ReadonlyRestClient(repoInfo_, onDataUpdate_, authTokenProvider_) {\n var _this = _super.call(this) || this;\n _this.repoInfo_ = repoInfo_;\n _this.onDataUpdate_ = onDataUpdate_;\n _this.authTokenProvider_ = authTokenProvider_;\n /** @private {function(...[*])} */\n _this.log_ = util_2.logWrapper('p:rest:');\n /**\n * We don't actually need to track listens, except to prevent us calling an onComplete for a listen\n * that's been removed. :-/\n *\n * @private {!Object.}\n */\n _this.listens_ = {};\n return _this;\n }\n ReadonlyRestClient.prototype.reportStats = function (stats) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {!Query} query\n * @param {?number=} tag\n * @return {string}\n * @private\n */\n ReadonlyRestClient.getListenId_ = function (query, tag) {\n if (tag !== undefined) {\n return 'tag$' + tag;\n }\n else {\n util_1.assert(query.getQueryParams().isDefault(), \"should have a tag if it's not a default query.\");\n return query.path.toString();\n }\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.listen = function (query, currentHashFn, tag, onComplete) {\n var _this = this;\n var pathString = query.path.toString();\n this.log_('Listen called for ' + pathString + ' ' + query.queryIdentifier());\n // Mark this listener so we can tell if it's removed.\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\n var thisListen = {};\n this.listens_[listenId] = thisListen;\n var queryStringParamaters = query\n .getQueryParams()\n .toRestQueryStringParameters();\n this.restRequest_(pathString + '.json', queryStringParamaters, function (error, result) {\n var data = result;\n if (error === 404) {\n data = null;\n error = null;\n }\n if (error === null) {\n _this.onDataUpdate_(pathString, data, /*isMerge=*/ false, tag);\n }\n if (util_4.safeGet(_this.listens_, listenId) === thisListen) {\n var status_1;\n if (!error) {\n status_1 = 'ok';\n }\n else if (error == 401) {\n status_1 = 'permission_denied';\n }\n else {\n status_1 = 'rest_error:' + error;\n }\n onComplete(status_1, null);\n }\n });\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.unlisten = function (query, tag) {\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\n delete this.listens_[listenId];\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.refreshAuthToken = function (token) {\n // no-op since we just always call getToken.\n };\n /**\n * Performs a REST request to the given path, with the provided query string parameters,\n * and any auth credentials we have.\n *\n * @param {!string} pathString\n * @param {!Object.} queryStringParameters\n * @param {?function(?number, *=)} callback\n * @private\n */\n ReadonlyRestClient.prototype.restRequest_ = function (pathString, queryStringParameters, callback) {\n var _this = this;\n if (queryStringParameters === void 0) { queryStringParameters = {}; }\n queryStringParameters['format'] = 'export';\n this.authTokenProvider_\n .getToken(/*forceRefresh=*/ false)\n .then(function (authTokenData) {\n var authToken = authTokenData && authTokenData.accessToken;\n if (authToken) {\n queryStringParameters['auth'] = authToken;\n }\n var url = (_this.repoInfo_.secure ? 'https://' : 'http://') +\n _this.repoInfo_.host +\n pathString +\n '?' +\n util_5.querystring(queryStringParameters);\n _this.log_('Sending REST request for ' + url);\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (callback && xhr.readyState === 4) {\n _this.log_('REST Response for ' + url + ' received. status:', xhr.status, 'response:', xhr.responseText);\n var res = null;\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n res = util_3.jsonEval(xhr.responseText);\n }\n catch (e) {\n util_2.warn('Failed to parse JSON response for ' +\n url +\n ': ' +\n xhr.responseText);\n }\n callback(null, res);\n }\n else {\n // 401 and 404 are expected.\n if (xhr.status !== 401 && xhr.status !== 404) {\n util_2.warn('Got unsuccessful REST response for ' +\n url +\n ' Status: ' +\n xhr.status);\n }\n callback(xhr.status);\n }\n callback = null;\n }\n };\n xhr.open('GET', url, /*asynchronous=*/ true);\n xhr.send();\n });\n };\n return ReadonlyRestClient;\n}(ServerActions_1.ServerActions));\nexports.ReadonlyRestClient = ReadonlyRestClient;\n\n//# sourceMappingURL=ReadonlyRestClient.js.map\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar KeyIndex_1 = __webpack_require__(10);\nvar PriorityIndex_1 = __webpack_require__(3);\nvar ValueIndex_1 = __webpack_require__(36);\nvar PathIndex_1 = __webpack_require__(40);\nvar IndexedFilter_1 = __webpack_require__(23);\nvar LimitedFilter_1 = __webpack_require__(108);\nvar RangedFilter_1 = __webpack_require__(55);\nvar util_3 = __webpack_require__(0);\n/**\n * This class is an immutable-from-the-public-api struct containing a set of query parameters defining a\n * range to be returned for a particular location. It is assumed that validation of parameters is done at the\n * user-facing API level, so it is not done here.\n * @constructor\n */\nvar QueryParams = /** @class */ (function () {\n function QueryParams() {\n this.limitSet_ = false;\n this.startSet_ = false;\n this.startNameSet_ = false;\n this.endSet_ = false;\n this.endNameSet_ = false;\n this.limit_ = 0;\n this.viewFrom_ = '';\n this.indexStartValue_ = null;\n this.indexStartName_ = '';\n this.indexEndValue_ = null;\n this.indexEndName_ = '';\n this.index_ = PriorityIndex_1.PRIORITY_INDEX;\n }\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasStart = function () {\n return this.startSet_;\n };\n /**\n * @return {boolean} True if it would return from left.\n */\n QueryParams.prototype.isViewFromLeft = function () {\n if (this.viewFrom_ === '') {\n // limit(), rather than limitToFirst or limitToLast was called.\n // This means that only one of startSet_ and endSet_ is true. Use them\n // to calculate which side of the view to anchor to. If neither is set,\n // anchor to the end.\n return this.startSet_;\n }\n else {\n return (this.viewFrom_ === QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT);\n }\n };\n /**\n * Only valid to call if hasStart() returns true\n * @return {*}\n */\n QueryParams.prototype.getIndexStartValue = function () {\n util_1.assert(this.startSet_, 'Only valid if start has been set');\n return this.indexStartValue_;\n };\n /**\n * Only valid to call if hasStart() returns true.\n * Returns the starting key name for the range defined by these query parameters\n * @return {!string}\n */\n QueryParams.prototype.getIndexStartName = function () {\n util_1.assert(this.startSet_, 'Only valid if start has been set');\n if (this.startNameSet_) {\n return this.indexStartName_;\n }\n else {\n return util_2.MIN_NAME;\n }\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasEnd = function () {\n return this.endSet_;\n };\n /**\n * Only valid to call if hasEnd() returns true.\n * @return {*}\n */\n QueryParams.prototype.getIndexEndValue = function () {\n util_1.assert(this.endSet_, 'Only valid if end has been set');\n return this.indexEndValue_;\n };\n /**\n * Only valid to call if hasEnd() returns true.\n * Returns the end key name for the range defined by these query parameters\n * @return {!string}\n */\n QueryParams.prototype.getIndexEndName = function () {\n util_1.assert(this.endSet_, 'Only valid if end has been set');\n if (this.endNameSet_) {\n return this.indexEndName_;\n }\n else {\n return util_2.MAX_NAME;\n }\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasLimit = function () {\n return this.limitSet_;\n };\n /**\n * @return {boolean} True if a limit has been set and it has been explicitly anchored\n */\n QueryParams.prototype.hasAnchoredLimit = function () {\n return this.limitSet_ && this.viewFrom_ !== '';\n };\n /**\n * Only valid to call if hasLimit() returns true\n * @return {!number}\n */\n QueryParams.prototype.getLimit = function () {\n util_1.assert(this.limitSet_, 'Only valid if limit has been set');\n return this.limit_;\n };\n /**\n * @return {!Index}\n */\n QueryParams.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @return {!QueryParams}\n * @private\n */\n QueryParams.prototype.copy_ = function () {\n var copy = new QueryParams();\n copy.limitSet_ = this.limitSet_;\n copy.limit_ = this.limit_;\n copy.startSet_ = this.startSet_;\n copy.indexStartValue_ = this.indexStartValue_;\n copy.startNameSet_ = this.startNameSet_;\n copy.indexStartName_ = this.indexStartName_;\n copy.endSet_ = this.endSet_;\n copy.indexEndValue_ = this.indexEndValue_;\n copy.endNameSet_ = this.endNameSet_;\n copy.indexEndName_ = this.indexEndName_;\n copy.index_ = this.index_;\n copy.viewFrom_ = this.viewFrom_;\n return copy;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limit = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = '';\n return newParams;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limitToFirst = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT;\n return newParams;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limitToLast = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_RIGHT;\n return newParams;\n };\n /**\n * @param {*} indexValue\n * @param {?string=} key\n * @return {!QueryParams}\n */\n QueryParams.prototype.startAt = function (indexValue, key) {\n var newParams = this.copy_();\n newParams.startSet_ = true;\n if (!(indexValue !== undefined)) {\n indexValue = null;\n }\n newParams.indexStartValue_ = indexValue;\n if (key != null) {\n newParams.startNameSet_ = true;\n newParams.indexStartName_ = key;\n }\n else {\n newParams.startNameSet_ = false;\n newParams.indexStartName_ = '';\n }\n return newParams;\n };\n /**\n * @param {*} indexValue\n * @param {?string=} key\n * @return {!QueryParams}\n */\n QueryParams.prototype.endAt = function (indexValue, key) {\n var newParams = this.copy_();\n newParams.endSet_ = true;\n if (!(indexValue !== undefined)) {\n indexValue = null;\n }\n newParams.indexEndValue_ = indexValue;\n if (key !== undefined) {\n newParams.endNameSet_ = true;\n newParams.indexEndName_ = key;\n }\n else {\n newParams.endNameSet_ = false;\n newParams.indexEndName_ = '';\n }\n return newParams;\n };\n /**\n * @param {!Index} index\n * @return {!QueryParams}\n */\n QueryParams.prototype.orderBy = function (index) {\n var newParams = this.copy_();\n newParams.index_ = index;\n return newParams;\n };\n /**\n * @return {!Object}\n */\n QueryParams.prototype.getQueryObject = function () {\n var WIRE_PROTOCOL_CONSTANTS = QueryParams.WIRE_PROTOCOL_CONSTANTS_;\n var obj = {};\n if (this.startSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_VALUE] = this.indexStartValue_;\n if (this.startNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_NAME] = this.indexStartName_;\n }\n }\n if (this.endSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_VALUE] = this.indexEndValue_;\n if (this.endNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_NAME] = this.indexEndName_;\n }\n }\n if (this.limitSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.LIMIT] = this.limit_;\n var viewFrom = this.viewFrom_;\n if (viewFrom === '') {\n if (this.isViewFromLeft()) {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT;\n }\n else {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT;\n }\n }\n obj[WIRE_PROTOCOL_CONSTANTS.VIEW_FROM] = viewFrom;\n }\n // For now, priority index is the default, so we only specify if it's some other index\n if (this.index_ !== PriorityIndex_1.PRIORITY_INDEX) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX] = this.index_.toString();\n }\n return obj;\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.loadsAllData = function () {\n return !(this.startSet_ || this.endSet_ || this.limitSet_);\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.isDefault = function () {\n return this.loadsAllData() && this.index_ == PriorityIndex_1.PRIORITY_INDEX;\n };\n /**\n * @return {!NodeFilter}\n */\n QueryParams.prototype.getNodeFilter = function () {\n if (this.loadsAllData()) {\n return new IndexedFilter_1.IndexedFilter(this.getIndex());\n }\n else if (this.hasLimit()) {\n return new LimitedFilter_1.LimitedFilter(this);\n }\n else {\n return new RangedFilter_1.RangedFilter(this);\n }\n };\n /**\n * Returns a set of REST query string parameters representing this query.\n *\n * @return {!Object.} query string parameters\n */\n QueryParams.prototype.toRestQueryStringParameters = function () {\n var REST_CONSTANTS = QueryParams.REST_QUERY_CONSTANTS_;\n var qs = {};\n if (this.isDefault()) {\n return qs;\n }\n var orderBy;\n if (this.index_ === PriorityIndex_1.PRIORITY_INDEX) {\n orderBy = REST_CONSTANTS.PRIORITY_INDEX;\n }\n else if (this.index_ === ValueIndex_1.VALUE_INDEX) {\n orderBy = REST_CONSTANTS.VALUE_INDEX;\n }\n else if (this.index_ === KeyIndex_1.KEY_INDEX) {\n orderBy = REST_CONSTANTS.KEY_INDEX;\n }\n else {\n util_1.assert(this.index_ instanceof PathIndex_1.PathIndex, 'Unrecognized index type!');\n orderBy = this.index_.toString();\n }\n qs[REST_CONSTANTS.ORDER_BY] = util_3.stringify(orderBy);\n if (this.startSet_) {\n qs[REST_CONSTANTS.START_AT] = util_3.stringify(this.indexStartValue_);\n if (this.startNameSet_) {\n qs[REST_CONSTANTS.START_AT] += ',' + util_3.stringify(this.indexStartName_);\n }\n }\n if (this.endSet_) {\n qs[REST_CONSTANTS.END_AT] = util_3.stringify(this.indexEndValue_);\n if (this.endNameSet_) {\n qs[REST_CONSTANTS.END_AT] += ',' + util_3.stringify(this.indexEndName_);\n }\n }\n if (this.limitSet_) {\n if (this.isViewFromLeft()) {\n qs[REST_CONSTANTS.LIMIT_TO_FIRST] = this.limit_;\n }\n else {\n qs[REST_CONSTANTS.LIMIT_TO_LAST] = this.limit_;\n }\n }\n return qs;\n };\n /**\n * Wire Protocol Constants\n * @const\n * @enum {string}\n * @private\n */\n QueryParams.WIRE_PROTOCOL_CONSTANTS_ = {\n INDEX_START_VALUE: 'sp',\n INDEX_START_NAME: 'sn',\n INDEX_END_VALUE: 'ep',\n INDEX_END_NAME: 'en',\n LIMIT: 'l',\n VIEW_FROM: 'vf',\n VIEW_FROM_LEFT: 'l',\n VIEW_FROM_RIGHT: 'r',\n INDEX: 'i'\n };\n /**\n * REST Query Constants\n * @const\n * @enum {string}\n * @private\n */\n QueryParams.REST_QUERY_CONSTANTS_ = {\n ORDER_BY: 'orderBy',\n PRIORITY_INDEX: '$priority',\n VALUE_INDEX: '$value',\n KEY_INDEX: '$key',\n START_AT: 'startAt',\n END_AT: 'endAt',\n LIMIT_TO_FIRST: 'limitToFirst',\n LIMIT_TO_LAST: 'limitToLast'\n };\n /**\n * Default, empty query parameters\n * @type {!QueryParams}\n * @const\n */\n QueryParams.DEFAULT = new QueryParams();\n return QueryParams;\n}());\nexports.QueryParams = QueryParams;\n\n//# sourceMappingURL=QueryParams.js.map\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RangedFilter_1 = __webpack_require__(55);\nvar ChildrenNode_1 = __webpack_require__(4);\nvar Node_1 = __webpack_require__(5);\nvar util_1 = __webpack_require__(0);\nvar Change_1 = __webpack_require__(9);\n/**\n * Applies a limit and a range to a node and uses RangedFilter to do the heavy lifting where possible\n *\n * @constructor\n * @implements {NodeFilter}\n */\nvar LimitedFilter = /** @class */ (function () {\n /**\n * @param {!QueryParams} params\n */\n function LimitedFilter(params) {\n this.rangedFilter_ = new RangedFilter_1.RangedFilter(params);\n this.index_ = params.getIndex();\n this.limit_ = params.getLimit();\n this.reverse_ = !params.isViewFromLeft();\n }\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.rangedFilter_.matches(new Node_1.NamedNode(key, newChild))) {\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n if (snap.getImmediateChild(key).equals(newChild)) {\n // No change\n return snap;\n }\n else if (snap.numChildren() < this.limit_) {\n return this.rangedFilter_\n .getIndexedFilter()\n .updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n }\n else {\n return this.fullLimitUpdateChild_(snap, key, newChild, source, optChangeAccumulator);\n }\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n var filtered;\n if (newSnap.isLeafNode() || newSnap.isEmpty()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n filtered = ChildrenNode_1.ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n }\n else {\n if (this.limit_ * 2 < newSnap.numChildren() &&\n newSnap.isIndexed(this.index_)) {\n // Easier to build up a snapshot, since what we're given has more than twice the elements we want\n filtered = ChildrenNode_1.ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n // anchor to the startPost, endPost, or last element as appropriate\n var iterator = void 0;\n if (this.reverse_) {\n iterator = newSnap.getReverseIteratorFrom(this.rangedFilter_.getEndPost(), this.index_);\n }\n else {\n iterator = newSnap.getIteratorFrom(this.rangedFilter_.getStartPost(), this.index_);\n }\n var count = 0;\n while (iterator.hasNext() && count < this.limit_) {\n var next = iterator.getNext();\n var inRange = void 0;\n if (this.reverse_) {\n inRange =\n this.index_.compare(this.rangedFilter_.getStartPost(), next) <= 0;\n }\n else {\n inRange =\n this.index_.compare(next, this.rangedFilter_.getEndPost()) <= 0;\n }\n if (inRange) {\n filtered = filtered.updateImmediateChild(next.name, next.node);\n count++;\n }\n else {\n // if we have reached the end post, we cannot keep adding elemments\n break;\n }\n }\n }\n else {\n // The snap contains less than twice the limit. Faster to delete from the snap than build up a new one\n filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var startPost = void 0;\n var endPost = void 0;\n var cmp = void 0;\n var iterator = void 0;\n if (this.reverse_) {\n iterator = filtered.getReverseIterator(this.index_);\n startPost = this.rangedFilter_.getEndPost();\n endPost = this.rangedFilter_.getStartPost();\n var indexCompare_1 = this.index_.getCompare();\n cmp = function (a, b) { return indexCompare_1(b, a); };\n }\n else {\n iterator = filtered.getIterator(this.index_);\n startPost = this.rangedFilter_.getStartPost();\n endPost = this.rangedFilter_.getEndPost();\n cmp = this.index_.getCompare();\n }\n var count = 0;\n var foundStartPost = false;\n while (iterator.hasNext()) {\n var next = iterator.getNext();\n if (!foundStartPost && cmp(startPost, next) <= 0) {\n // start adding\n foundStartPost = true;\n }\n var inRange = foundStartPost && count < this.limit_ && cmp(next, endPost) <= 0;\n if (inRange) {\n count++;\n }\n else {\n filtered = filtered.updateImmediateChild(next.name, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n }\n }\n }\n return this.rangedFilter_\n .getIndexedFilter()\n .updateFullNode(oldSnap, filtered, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.filtersNodes = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.getIndexedFilter = function () {\n return this.rangedFilter_.getIndexedFilter();\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @param {!Node} snap\n * @param {string} childKey\n * @param {!Node} childSnap\n * @param {!CompleteChildSource} source\n * @param {?ChildChangeAccumulator} changeAccumulator\n * @return {!Node}\n * @private\n */\n LimitedFilter.prototype.fullLimitUpdateChild_ = function (snap, childKey, childSnap, source, changeAccumulator) {\n // TODO: rename all cache stuff etc to general snap terminology\n var cmp;\n if (this.reverse_) {\n var indexCmp_1 = this.index_.getCompare();\n cmp = function (a, b) { return indexCmp_1(b, a); };\n }\n else {\n cmp = this.index_.getCompare();\n }\n var oldEventCache = snap;\n util_1.assert(oldEventCache.numChildren() == this.limit_, '');\n var newChildNamedNode = new Node_1.NamedNode(childKey, childSnap);\n var windowBoundary = this.reverse_\n ? oldEventCache.getFirstChild(this.index_)\n : oldEventCache.getLastChild(this.index_);\n var inRange = this.rangedFilter_.matches(newChildNamedNode);\n if (oldEventCache.hasChild(childKey)) {\n var oldChildSnap = oldEventCache.getImmediateChild(childKey);\n var nextChild = source.getChildAfterChild(this.index_, windowBoundary, this.reverse_);\n while (nextChild != null &&\n (nextChild.name == childKey || oldEventCache.hasChild(nextChild.name))) {\n // There is a weird edge case where a node is updated as part of a merge in the write tree, but hasn't\n // been applied to the limited filter yet. Ignore this next child which will be updated later in\n // the limited filter...\n nextChild = source.getChildAfterChild(this.index_, nextChild, this.reverse_);\n }\n var compareNext = nextChild == null ? 1 : cmp(nextChild, newChildNamedNode);\n var remainsInWindow = inRange && !childSnap.isEmpty() && compareNext >= 0;\n if (remainsInWindow) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childChangedChange(childKey, childSnap, oldChildSnap));\n }\n return oldEventCache.updateImmediateChild(childKey, childSnap);\n }\n else {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(childKey, oldChildSnap));\n }\n var newEventCache = oldEventCache.updateImmediateChild(childKey, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var nextChildInRange = nextChild != null && this.rangedFilter_.matches(nextChild);\n if (nextChildInRange) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childAddedChange(nextChild.name, nextChild.node));\n }\n return newEventCache.updateImmediateChild(nextChild.name, nextChild.node);\n }\n else {\n return newEventCache;\n }\n }\n }\n else if (childSnap.isEmpty()) {\n // we're deleting a node, but it was not in the window, so ignore it\n return snap;\n }\n else if (inRange) {\n if (cmp(windowBoundary, newChildNamedNode) >= 0) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(windowBoundary.name, windowBoundary.node));\n changeAccumulator.trackChildChange(Change_1.Change.childAddedChange(childKey, childSnap));\n }\n return oldEventCache\n .updateImmediateChild(childKey, childSnap)\n .updateImmediateChild(windowBoundary.name, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n else {\n return snap;\n }\n }\n else {\n return snap;\n }\n };\n return LimitedFilter;\n}());\nexports.LimitedFilter = LimitedFilter;\n\n//# sourceMappingURL=LimitedFilter.js.map\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar Reference_1 = __webpack_require__(21);\nvar DataSnapshot_1 = __webpack_require__(41);\nvar Path_1 = __webpack_require__(2);\nvar Tree_1 = __webpack_require__(110);\nvar PriorityIndex_1 = __webpack_require__(3);\nvar util_2 = __webpack_require__(1);\nvar ServerValues_1 = __webpack_require__(42);\nvar validation_1 = __webpack_require__(7);\nvar util_3 = __webpack_require__(0);\nvar nodeFromJSON_1 = __webpack_require__(11);\nvar ChildrenNode_1 = __webpack_require__(4);\nvar Repo_1 = __webpack_require__(17);\n// TODO: This is pretty messy. Ideally, a lot of this would move into FirebaseData, or a transaction-specific\n// component used by FirebaseData, but it has ties to user callbacks (transaction update and onComplete) as well\n// as the realtime connection (to send transactions to the server). So that all needs to be decoupled first.\n// For now it's part of Repo, but in its own file.\n/**\n * @enum {number}\n */\nvar TransactionStatus;\n(function (TransactionStatus) {\n // We've run the transaction and updated transactionResultData_ with the result, but it isn't currently sent to the\n // server. A transaction will go from RUN -> SENT -> RUN if it comes back from the server as rejected due to\n // mismatched hash.\n TransactionStatus[TransactionStatus[\"RUN\"] = 0] = \"RUN\";\n // We've run the transaction and sent it to the server and it's currently outstanding (hasn't come back as accepted\n // or rejected yet).\n TransactionStatus[TransactionStatus[\"SENT\"] = 1] = \"SENT\";\n // Temporary state used to mark completed transactions (whether successful or aborted). The transaction will be\n // removed when we get a chance to prune completed ones.\n TransactionStatus[TransactionStatus[\"COMPLETED\"] = 2] = \"COMPLETED\";\n // Used when an already-sent transaction needs to be aborted (e.g. due to a conflicting set() call that was made).\n // If it comes back as unsuccessful, we'll abort it.\n TransactionStatus[TransactionStatus[\"SENT_NEEDS_ABORT\"] = 3] = \"SENT_NEEDS_ABORT\";\n // Temporary state used to mark transactions that need to be aborted.\n TransactionStatus[TransactionStatus[\"NEEDS_ABORT\"] = 4] = \"NEEDS_ABORT\";\n})(TransactionStatus = exports.TransactionStatus || (exports.TransactionStatus = {}));\n/**\n * If a transaction does not succeed after 25 retries, we abort it. Among other things this ensure that if there's\n * ever a bug causing a mismatch between client / server hashes for some data, we won't retry indefinitely.\n * @type {number}\n * @const\n * @private\n */\nRepo_1.Repo.MAX_TRANSACTION_RETRIES_ = 25;\n/**\n * Setup the transaction data structures\n * @private\n */\nRepo_1.Repo.prototype.transactions_init_ = function () {\n /**\n * Stores queues of outstanding transactions for Firebase locations.\n *\n * @type {!Tree.>}\n * @private\n */\n this.transactionQueueTree_ = new Tree_1.Tree();\n};\n/**\n * Creates a new transaction, adds it to the transactions we're tracking, and sends it to the server if possible.\n *\n * @param {!Path} path Path at which to do transaction.\n * @param {function(*):*} transactionUpdate Update callback.\n * @param {?function(?Error, boolean, ?DataSnapshot)} onComplete Completion callback.\n * @param {boolean} applyLocally Whether or not to make intermediate results visible\n */\nRepo_1.Repo.prototype.startTransaction = function (path, transactionUpdate, onComplete, applyLocally) {\n this.log_('transaction on ' + path);\n // Add a watch to make sure we get server updates.\n var valueCallback = function () { };\n var watchRef = new Reference_1.Reference(this, path);\n watchRef.on('value', valueCallback);\n var unwatcher = function () {\n watchRef.off('value', valueCallback);\n };\n // Initialize transaction.\n var transaction = {\n path: path,\n update: transactionUpdate,\n onComplete: onComplete,\n // One of TransactionStatus enums.\n status: null,\n // Used when combining transactions at different locations to figure out which one goes first.\n order: util_2.LUIDGenerator(),\n // Whether to raise local events for this transaction.\n applyLocally: applyLocally,\n // Count of how many times we've retried the transaction.\n retryCount: 0,\n // Function to call to clean up our .on() listener.\n unwatcher: unwatcher,\n // Stores why a transaction was aborted.\n abortReason: null,\n currentWriteId: null,\n currentInputSnapshot: null,\n currentOutputSnapshotRaw: null,\n currentOutputSnapshotResolved: null\n };\n // Run transaction initially.\n var currentState = this.getLatestState_(path);\n transaction.currentInputSnapshot = currentState;\n var newVal = transaction.update(currentState.val());\n if (newVal === undefined) {\n // Abort transaction.\n transaction.unwatcher();\n transaction.currentOutputSnapshotRaw = null;\n transaction.currentOutputSnapshotResolved = null;\n if (transaction.onComplete) {\n // We just set the input snapshot, so this cast should be safe\n var snapshot = new DataSnapshot_1.DataSnapshot(transaction.currentInputSnapshot, new Reference_1.Reference(this, transaction.path), PriorityIndex_1.PRIORITY_INDEX);\n transaction.onComplete(null, false, snapshot);\n }\n }\n else {\n validation_1.validateFirebaseData('transaction failed: Data returned ', newVal, transaction.path);\n // Mark as run and add to our queue.\n transaction.status = TransactionStatus.RUN;\n var queueNode = this.transactionQueueTree_.subTree(path);\n var nodeQueue = queueNode.getValue() || [];\n nodeQueue.push(transaction);\n queueNode.setValue(nodeQueue);\n // Update visibleData and raise events\n // Note: We intentionally raise events after updating all of our transaction state, since the user could\n // start new transactions from the event callbacks.\n var priorityForNode = void 0;\n if (typeof newVal === 'object' &&\n newVal !== null &&\n util_3.contains(newVal, '.priority')) {\n priorityForNode = util_3.safeGet(newVal, '.priority');\n util_1.assert(validation_1.isValidPriority(priorityForNode), 'Invalid priority returned by transaction. ' +\n 'Priority must be a valid string, finite number, server value, or null.');\n }\n else {\n var currentNode = this.serverSyncTree_.calcCompleteEventCache(path) ||\n ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n priorityForNode = currentNode.getPriority().val();\n }\n priorityForNode /** @type {null|number|string} */ = priorityForNode;\n var serverValues = this.generateServerValues();\n var newNodeUnresolved = nodeFromJSON_1.nodeFromJSON(newVal, priorityForNode);\n var newNode = ServerValues_1.resolveDeferredValueSnapshot(newNodeUnresolved, serverValues);\n transaction.currentOutputSnapshotRaw = newNodeUnresolved;\n transaction.currentOutputSnapshotResolved = newNode;\n transaction.currentWriteId = this.getNextWriteId_();\n var events = this.serverSyncTree_.applyUserOverwrite(path, newNode, transaction.currentWriteId, transaction.applyLocally);\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n this.sendReadyTransactions_();\n }\n};\n/**\n * @param {!Path} path\n * @param {Array.=} excludeSets A specific set to exclude\n * @return {Node}\n * @private\n */\nRepo_1.Repo.prototype.getLatestState_ = function (path, excludeSets) {\n return (this.serverSyncTree_.calcCompleteEventCache(path, excludeSets) ||\n ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n};\n/**\n * Sends any already-run transactions that aren't waiting for outstanding transactions to\n * complete.\n *\n * Externally it's called with no arguments, but it calls itself recursively with a particular\n * transactionQueueTree node to recurse through the tree.\n *\n * @param {Tree.>=} node transactionQueueTree node to start at.\n * @private\n */\nRepo_1.Repo.prototype.sendReadyTransactions_ = function (node) {\n var _this = this;\n if (node === void 0) { node = this.transactionQueueTree_; }\n // Before recursing, make sure any completed transactions are removed.\n if (!node) {\n this.pruneCompletedTransactionsBelowNode_(node);\n }\n if (node.getValue() !== null) {\n var queue = this.buildTransactionQueue_(node);\n util_1.assert(queue.length > 0, 'Sending zero length transaction queue');\n var allRun = queue.every(function (transaction) { return transaction.status === TransactionStatus.RUN; });\n // If they're all run (and not sent), we can send them. Else, we must wait.\n if (allRun) {\n this.sendTransactionQueue_(node.path(), queue);\n }\n }\n else if (node.hasChildren()) {\n node.forEachChild(function (childNode) {\n _this.sendReadyTransactions_(childNode);\n });\n }\n};\n/**\n * Given a list of run transactions, send them to the server and then handle the result (success or failure).\n *\n * @param {!Path} path The location of the queue.\n * @param {!Array.} queue Queue of transactions under the specified location.\n * @private\n */\nRepo_1.Repo.prototype.sendTransactionQueue_ = function (path, queue) {\n var _this = this;\n // Mark transactions as sent and increment retry count!\n var setsToIgnore = queue.map(function (txn) {\n return txn.currentWriteId;\n });\n var latestState = this.getLatestState_(path, setsToIgnore);\n var snapToSend = latestState;\n var latestHash = latestState.hash();\n for (var i = 0; i < queue.length; i++) {\n var txn = queue[i];\n util_1.assert(txn.status === TransactionStatus.RUN, 'tryToSendTransactionQueue_: items in queue should all be run.');\n txn.status = TransactionStatus.SENT;\n txn.retryCount++;\n var relativePath = Path_1.Path.relativePath(path, txn.path);\n // If we've gotten to this point, the output snapshot must be defined.\n snapToSend = snapToSend.updateChild(relativePath /**@type {!Node} */, txn.currentOutputSnapshotRaw);\n }\n var dataToSend = snapToSend.val(true);\n var pathToSend = path;\n // Send the put.\n this.server_.put(pathToSend.toString(), dataToSend, function (status) {\n _this.log_('transaction put response', {\n path: pathToSend.toString(),\n status: status\n });\n var events = [];\n if (status === 'ok') {\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n for (var i = 0; i < queue.length; i++) {\n queue[i].status = TransactionStatus.COMPLETED;\n events = events.concat(_this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId));\n if (queue[i].onComplete) {\n // We never unset the output snapshot, and given that this transaction is complete, it should be set\n var node = queue[i].currentOutputSnapshotResolved;\n var ref = new Reference_1.Reference(_this, queue[i].path);\n var snapshot = new DataSnapshot_1.DataSnapshot(node, ref, PriorityIndex_1.PRIORITY_INDEX);\n callbacks.push(queue[i].onComplete.bind(null, null, true, snapshot));\n }\n queue[i].unwatcher();\n }\n // Now remove the completed transactions.\n _this.pruneCompletedTransactionsBelowNode_(_this.transactionQueueTree_.subTree(path));\n // There may be pending transactions that we can now send.\n _this.sendReadyTransactions_();\n _this.eventQueue_.raiseEventsForChangedPath(path, events);\n // Finally, trigger onComplete callbacks.\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n }\n else {\n // transactions are no longer sent. Update their status appropriately.\n if (status === 'datastale') {\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT)\n queue[i].status = TransactionStatus.NEEDS_ABORT;\n else\n queue[i].status = TransactionStatus.RUN;\n }\n }\n else {\n util_2.warn('transaction at ' + pathToSend.toString() + ' failed: ' + status);\n for (var i = 0; i < queue.length; i++) {\n queue[i].status = TransactionStatus.NEEDS_ABORT;\n queue[i].abortReason = status;\n }\n }\n _this.rerunTransactions_(path);\n }\n }, latestHash);\n};\n/**\n * Finds all transactions dependent on the data at changedPath and reruns them.\n *\n * Should be called any time cached data changes.\n *\n * Return the highest path that was affected by rerunning transactions. This is the path at which events need to\n * be raised for.\n *\n * @param {!Path} changedPath The path in mergedData that changed.\n * @return {!Path} The rootmost path that was affected by rerunning transactions.\n * @private\n */\nRepo_1.Repo.prototype.rerunTransactions_ = function (changedPath) {\n var rootMostTransactionNode = this.getAncestorTransactionNode_(changedPath);\n var path = rootMostTransactionNode.path();\n var queue = this.buildTransactionQueue_(rootMostTransactionNode);\n this.rerunTransactionQueue_(queue, path);\n return path;\n};\n/**\n * Does all the work of rerunning transactions (as well as cleans up aborted transactions and whatnot).\n *\n * @param {Array.} queue The queue of transactions to run.\n * @param {!Path} path The path the queue is for.\n * @private\n */\nRepo_1.Repo.prototype.rerunTransactionQueue_ = function (queue, path) {\n if (queue.length === 0) {\n return; // Nothing to do!\n }\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n var events = [];\n // Ignore all of the sets we're going to re-run.\n var txnsToRerun = queue.filter(function (q) {\n return q.status === TransactionStatus.RUN;\n });\n var setsToIgnore = txnsToRerun.map(function (q) {\n return q.currentWriteId;\n });\n for (var i = 0; i < queue.length; i++) {\n var transaction = queue[i];\n var relativePath = Path_1.Path.relativePath(path, transaction.path);\n var abortTransaction = false, abortReason = void 0;\n util_1.assert(relativePath !== null, 'rerunTransactionsUnderNode_: relativePath should not be null.');\n if (transaction.status === TransactionStatus.NEEDS_ABORT) {\n abortTransaction = true;\n abortReason = transaction.abortReason;\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n else if (transaction.status === TransactionStatus.RUN) {\n if (transaction.retryCount >= Repo_1.Repo.MAX_TRANSACTION_RETRIES_) {\n abortTransaction = true;\n abortReason = 'maxretry';\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n else {\n // This code reruns a transaction\n var currentNode = this.getLatestState_(transaction.path, setsToIgnore);\n transaction.currentInputSnapshot = currentNode;\n var newData = queue[i].update(currentNode.val());\n if (newData !== undefined) {\n validation_1.validateFirebaseData('transaction failed: Data returned ', newData, transaction.path);\n var newDataNode = nodeFromJSON_1.nodeFromJSON(newData);\n var hasExplicitPriority = typeof newData === 'object' &&\n newData != null &&\n util_3.contains(newData, '.priority');\n if (!hasExplicitPriority) {\n // Keep the old priority if there wasn't a priority explicitly specified.\n newDataNode = newDataNode.updatePriority(currentNode.getPriority());\n }\n var oldWriteId = transaction.currentWriteId;\n var serverValues = this.generateServerValues();\n var newNodeResolved = ServerValues_1.resolveDeferredValueSnapshot(newDataNode, serverValues);\n transaction.currentOutputSnapshotRaw = newDataNode;\n transaction.currentOutputSnapshotResolved = newNodeResolved;\n transaction.currentWriteId = this.getNextWriteId_();\n // Mutates setsToIgnore in place\n setsToIgnore.splice(setsToIgnore.indexOf(oldWriteId), 1);\n events = events.concat(this.serverSyncTree_.applyUserOverwrite(transaction.path, newNodeResolved, transaction.currentWriteId, transaction.applyLocally));\n events = events.concat(this.serverSyncTree_.ackUserWrite(oldWriteId, true));\n }\n else {\n abortTransaction = true;\n abortReason = 'nodata';\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n }\n }\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n events = [];\n if (abortTransaction) {\n // Abort.\n queue[i].status = TransactionStatus.COMPLETED;\n // Removing a listener can trigger pruning which can muck with mergedData/visibleData (as it prunes data).\n // So defer the unwatcher until we're done.\n (function (unwatcher) {\n setTimeout(unwatcher, Math.floor(0));\n })(queue[i].unwatcher);\n if (queue[i].onComplete) {\n if (abortReason === 'nodata') {\n var ref = new Reference_1.Reference(this, queue[i].path);\n // We set this field immediately, so it's safe to cast to an actual snapshot\n var lastInput /** @type {!Node} */ = queue[i].currentInputSnapshot;\n var snapshot = new DataSnapshot_1.DataSnapshot(lastInput, ref, PriorityIndex_1.PRIORITY_INDEX);\n callbacks.push(queue[i].onComplete.bind(null, null, false, snapshot));\n }\n else {\n callbacks.push(queue[i].onComplete.bind(null, new Error(abortReason), false, null));\n }\n }\n }\n }\n // Clean up completed transactions.\n this.pruneCompletedTransactionsBelowNode_(this.transactionQueueTree_);\n // Now fire callbacks, now that we're in a good, known state.\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n // Try to send the transaction result to the server.\n this.sendReadyTransactions_();\n};\n/**\n * Returns the rootmost ancestor node of the specified path that has a pending transaction on it, or just returns\n * the node for the given path if there are no pending transactions on any ancestor.\n *\n * @param {!Path} path The location to start at.\n * @return {!Tree.>} The rootmost node with a transaction.\n * @private\n */\nRepo_1.Repo.prototype.getAncestorTransactionNode_ = function (path) {\n var front;\n // Start at the root and walk deeper into the tree towards path until we find a node with pending transactions.\n var transactionNode = this.transactionQueueTree_;\n while ((front = path.getFront()) !== null &&\n transactionNode.getValue() === null) {\n transactionNode = transactionNode.subTree(front);\n path = path.popFront();\n }\n return transactionNode;\n};\n/**\n * Builds the queue of all transactions at or below the specified transactionNode.\n *\n * @param {!Tree.>} transactionNode\n * @return {Array.} The generated queue.\n * @private\n */\nRepo_1.Repo.prototype.buildTransactionQueue_ = function (transactionNode) {\n // Walk any child transaction queues and aggregate them into a single queue.\n var transactionQueue = [];\n this.aggregateTransactionQueuesForNode_(transactionNode, transactionQueue);\n // Sort them by the order the transactions were created.\n transactionQueue.sort(function (a, b) {\n return a.order - b.order;\n });\n return transactionQueue;\n};\n/**\n * @param {!Tree.>} node\n * @param {Array.} queue\n * @private\n */\nRepo_1.Repo.prototype.aggregateTransactionQueuesForNode_ = function (node, queue) {\n var _this = this;\n var nodeQueue = node.getValue();\n if (nodeQueue !== null) {\n for (var i = 0; i < nodeQueue.length; i++) {\n queue.push(nodeQueue[i]);\n }\n }\n node.forEachChild(function (child) {\n _this.aggregateTransactionQueuesForNode_(child, queue);\n });\n};\n/**\n * Remove COMPLETED transactions at or below this node in the transactionQueueTree_.\n *\n * @param {!Tree.>} node\n * @private\n */\nRepo_1.Repo.prototype.pruneCompletedTransactionsBelowNode_ = function (node) {\n var _this = this;\n var queue = node.getValue();\n if (queue) {\n var to = 0;\n for (var from = 0; from < queue.length; from++) {\n if (queue[from].status !== TransactionStatus.COMPLETED) {\n queue[to] = queue[from];\n to++;\n }\n }\n queue.length = to;\n node.setValue(queue.length > 0 ? queue : null);\n }\n node.forEachChild(function (childNode) {\n _this.pruneCompletedTransactionsBelowNode_(childNode);\n });\n};\n/**\n * Aborts all transactions on ancestors or descendants of the specified path. Called when doing a set() or update()\n * since we consider them incompatible with transactions.\n *\n * @param {!Path} path Path for which we want to abort related transactions.\n * @return {!Path}\n * @private\n */\nRepo_1.Repo.prototype.abortTransactions_ = function (path) {\n var _this = this;\n var affectedPath = this.getAncestorTransactionNode_(path).path();\n var transactionNode = this.transactionQueueTree_.subTree(path);\n transactionNode.forEachAncestor(function (node) {\n _this.abortTransactionsOnNode_(node);\n });\n this.abortTransactionsOnNode_(transactionNode);\n transactionNode.forEachDescendant(function (node) {\n _this.abortTransactionsOnNode_(node);\n });\n return affectedPath;\n};\n/**\n * Abort transactions stored in this transaction queue node.\n *\n * @param {!Tree.>} node Node to abort transactions for.\n * @private\n */\nRepo_1.Repo.prototype.abortTransactionsOnNode_ = function (node) {\n var queue = node.getValue();\n if (queue !== null) {\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n // Go through queue. Any already-sent transactions must be marked for abort, while the unsent ones\n // can be immediately aborted and removed.\n var events = [];\n var lastSent = -1;\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT) {\n // Already marked. No action needed.\n }\n else if (queue[i].status === TransactionStatus.SENT) {\n util_1.assert(lastSent === i - 1, 'All SENT items should be at beginning of queue.');\n lastSent = i;\n // Mark transaction for abort when it comes back.\n queue[i].status = TransactionStatus.SENT_NEEDS_ABORT;\n queue[i].abortReason = 'set';\n }\n else {\n util_1.assert(queue[i].status === TransactionStatus.RUN, 'Unexpected transaction status in abort');\n // We can abort it immediately.\n queue[i].unwatcher();\n events = events.concat(this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId, true));\n if (queue[i].onComplete) {\n var snapshot = null;\n callbacks.push(queue[i].onComplete.bind(null, new Error('set'), false, snapshot));\n }\n }\n }\n if (lastSent === -1) {\n // We're not waiting for any sent transactions. We can clear the queue.\n node.setValue(null);\n }\n else {\n // Remove the transactions we aborted.\n queue.length = lastSent + 1;\n }\n // Now fire the callbacks.\n this.eventQueue_.raiseEventsForChangedPath(node.path(), events);\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n }\n};\n\n//# sourceMappingURL=Repo_transaction.js.map\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar Path_1 = __webpack_require__(2);\nvar util_2 = __webpack_require__(0);\n/**\n * Node in a Tree.\n */\nvar TreeNode = /** @class */ (function () {\n function TreeNode() {\n // TODO: Consider making accessors that create children and value lazily or\n // separate Internal / Leaf 'types'.\n this.children = {};\n this.childCount = 0;\n this.value = null;\n }\n return TreeNode;\n}());\nexports.TreeNode = TreeNode;\n/**\n * A light-weight tree, traversable by path. Nodes can have both values and children.\n * Nodes are not enumerated (by forEachChild) unless they have a value or non-empty\n * children.\n */\nvar Tree = /** @class */ (function () {\n /**\n * @template T\n * @param {string=} name_ Optional name of the node.\n * @param {Tree=} parent_ Optional parent node.\n * @param {TreeNode=} node_ Optional node to wrap.\n */\n function Tree(name_, parent_, node_) {\n if (name_ === void 0) { name_ = ''; }\n if (parent_ === void 0) { parent_ = null; }\n if (node_ === void 0) { node_ = new TreeNode(); }\n this.name_ = name_;\n this.parent_ = parent_;\n this.node_ = node_;\n }\n /**\n * Returns a sub-Tree for the given path.\n *\n * @param {!(string|Path)} pathObj Path to look up.\n * @return {!Tree.} Tree for path.\n */\n Tree.prototype.subTree = function (pathObj) {\n // TODO: Require pathObj to be Path?\n var path = pathObj instanceof Path_1.Path ? pathObj : new Path_1.Path(pathObj);\n var child = this, next;\n while ((next = path.getFront()) !== null) {\n var childNode = util_2.safeGet(child.node_.children, next) || new TreeNode();\n child = new Tree(next, child, childNode);\n path = path.popFront();\n }\n return child;\n };\n /**\n * Returns the data associated with this tree node.\n *\n * @return {?T} The data or null if no data exists.\n */\n Tree.prototype.getValue = function () {\n return this.node_.value;\n };\n /**\n * Sets data to this tree node.\n *\n * @param {!T} value Value to set.\n */\n Tree.prototype.setValue = function (value) {\n util_1.assert(typeof value !== 'undefined', 'Cannot set value to undefined');\n this.node_.value = value;\n this.updateParents_();\n };\n /**\n * Clears the contents of the tree node (its value and all children).\n */\n Tree.prototype.clear = function () {\n this.node_.value = null;\n this.node_.children = {};\n this.node_.childCount = 0;\n this.updateParents_();\n };\n /**\n * @return {boolean} Whether the tree has any children.\n */\n Tree.prototype.hasChildren = function () {\n return this.node_.childCount > 0;\n };\n /**\n * @return {boolean} Whether the tree is empty (no value or children).\n */\n Tree.prototype.isEmpty = function () {\n return this.getValue() === null && !this.hasChildren();\n };\n /**\n * Calls action for each child of this tree node.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n */\n Tree.prototype.forEachChild = function (action) {\n var _this = this;\n util_2.forEach(this.node_.children, function (child, childTree) {\n action(new Tree(child, _this, childTree));\n });\n };\n /**\n * Does a depth-first traversal of this node's descendants, calling action for each one.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n * @param {boolean=} includeSelf Whether to call action on this node as well. Defaults to\n * false.\n * @param {boolean=} childrenFirst Whether to call action on children before calling it on\n * parent.\n */\n Tree.prototype.forEachDescendant = function (action, includeSelf, childrenFirst) {\n if (includeSelf && !childrenFirst)\n action(this);\n this.forEachChild(function (child) {\n child.forEachDescendant(action, /*includeSelf=*/ true, childrenFirst);\n });\n if (includeSelf && childrenFirst)\n action(this);\n };\n /**\n * Calls action on each ancestor node.\n *\n * @param {function(!Tree.)} action Action to be called on each parent; return\n * true to abort.\n * @param {boolean=} includeSelf Whether to call action on this node as well.\n * @return {boolean} true if the action callback returned true.\n */\n Tree.prototype.forEachAncestor = function (action, includeSelf) {\n var node = includeSelf ? this : this.parent();\n while (node !== null) {\n if (action(node)) {\n return true;\n }\n node = node.parent();\n }\n return false;\n };\n /**\n * Does a depth-first traversal of this node's descendants. When a descendant with a value\n * is found, action is called on it and traversal does not continue inside the node.\n * Action is *not* called on this node.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n */\n Tree.prototype.forEachImmediateDescendantWithValue = function (action) {\n this.forEachChild(function (child) {\n if (child.getValue() !== null)\n action(child);\n else\n child.forEachImmediateDescendantWithValue(action);\n });\n };\n /**\n * @return {!Path} The path of this tree node, as a Path.\n */\n Tree.prototype.path = function () {\n return new Path_1.Path(this.parent_ === null\n ? this.name_\n : this.parent_.path() + '/' + this.name_);\n };\n /**\n * @return {string} The name of the tree node.\n */\n Tree.prototype.name = function () {\n return this.name_;\n };\n /**\n * @return {?Tree} The parent tree node, or null if this is the root of the tree.\n */\n Tree.prototype.parent = function () {\n return this.parent_;\n };\n /**\n * Adds or removes this child from its parent based on whether it's empty or not.\n *\n * @private\n */\n Tree.prototype.updateParents_ = function () {\n if (this.parent_ !== null)\n this.parent_.updateChild_(this.name_, this);\n };\n /**\n * Adds or removes the passed child to this tree node, depending on whether it's empty.\n *\n * @param {string} childName The name of the child to update.\n * @param {!Tree.} child The child to update.\n * @private\n */\n Tree.prototype.updateChild_ = function (childName, child) {\n var childEmpty = child.isEmpty();\n var childExists = util_2.contains(this.node_.children, childName);\n if (childEmpty && childExists) {\n delete this.node_.children[childName];\n this.node_.childCount--;\n this.updateParents_();\n }\n else if (!childEmpty && !childExists) {\n this.node_.children[childName] = child.node_;\n this.node_.childCount++;\n this.updateParents_();\n }\n };\n return Tree;\n}());\nexports.Tree = Tree;\n\n//# sourceMappingURL=Tree.js.map\n\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar WebSocketConnection_1 = __webpack_require__(53);\nvar BrowserPollConnection_1 = __webpack_require__(52);\n/**\n * INTERNAL methods for internal-use only (tests, etc.).\n *\n * Customers shouldn't use these or else should be aware that they could break at any time.\n *\n * @const\n */\nexports.forceLongPolling = function () {\n WebSocketConnection_1.WebSocketConnection.forceDisallow();\n BrowserPollConnection_1.BrowserPollConnection.forceAllow();\n};\nexports.forceWebSockets = function () {\n BrowserPollConnection_1.BrowserPollConnection.forceDisallow();\n};\n/* Used by App Manager */\nexports.isWebSocketsAvailable = function () {\n return WebSocketConnection_1.WebSocketConnection['isAvailable']();\n};\nexports.setSecurityDebugCallback = function (ref, callback) {\n ref.repo.persistentConnection_.securityDebugCallback_ = callback;\n};\nexports.stats = function (ref, showDelta) {\n ref.repo.stats(showDelta);\n};\nexports.statsIncrementCounter = function (ref, metric) {\n ref.repo.statsIncrementCounter(metric);\n};\nexports.dataUpdateCount = function (ref) {\n return ref.repo.dataUpdateCount;\n};\nexports.interceptServerData = function (ref, callback) {\n return ref.repo.interceptServerData_(callback);\n};\n\n//# sourceMappingURL=internal.js.map\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RepoInfo_1 = __webpack_require__(33);\nvar PersistentConnection_1 = __webpack_require__(49);\nvar RepoManager_1 = __webpack_require__(25);\nvar Connection_1 = __webpack_require__(51);\nexports.DataConnection = PersistentConnection_1.PersistentConnection;\n/**\n * @param {!string} pathString\n * @param {function(*)} onComplete\n */\nPersistentConnection_1.PersistentConnection.prototype.simpleListen = function (pathString, onComplete) {\n this.sendRequest('q', { p: pathString }, onComplete);\n};\n/**\n * @param {*} data\n * @param {function(*)} onEcho\n */\nPersistentConnection_1.PersistentConnection.prototype.echo = function (data, onEcho) {\n this.sendRequest('echo', { d: data }, onEcho);\n};\n// RealTimeConnection properties that we use in tests.\nexports.RealTimeConnection = Connection_1.Connection;\n/**\n * @param {function(): string} newHash\n * @return {function()}\n */\nexports.hijackHash = function (newHash) {\n var oldPut = PersistentConnection_1.PersistentConnection.prototype.put;\n PersistentConnection_1.PersistentConnection.prototype.put = function (pathString, data, opt_onComplete, opt_hash) {\n if (opt_hash !== undefined) {\n opt_hash = newHash();\n }\n oldPut.call(this, pathString, data, opt_onComplete, opt_hash);\n };\n return function () {\n PersistentConnection_1.PersistentConnection.prototype.put = oldPut;\n };\n};\n/**\n * @type {function(new:RepoInfo, !string, boolean, !string, boolean): undefined}\n */\nexports.ConnectionTarget = RepoInfo_1.RepoInfo;\n/**\n * @param {!Query} query\n * @return {!string}\n */\nexports.queryIdentifier = function (query) {\n return query.queryIdentifier();\n};\n/**\n * @param {!Query} firebaseRef\n * @return {!Object}\n */\nexports.listens = function (firebaseRef) {\n return firebaseRef.repo.persistentConnection_.listens_;\n};\n/**\n * Forces the RepoManager to create Repos that use ReadonlyRestClient instead of PersistentConnection.\n *\n * @param {boolean} forceRestClient\n */\nexports.forceRestClient = function (forceRestClient) {\n RepoManager_1.RepoManager.getInstance().forceRestClient(forceRestClient);\n};\n\n//# sourceMappingURL=test_access.js.map\n\n\n/***/ })\n],[77]);\n } catch(error) {\n throw new Error(\n 'Cannot instantiate firebase-database.js - ' +\n 'be sure to load firebase-app.js first.'\n )\n }\n\n\n// WEBPACK FOOTER //\n// firebase-database.js","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar util_3 = require(\"@firebase/util\");\nvar util_4 = require(\"@firebase/util\");\nvar util_5 = require(\"@firebase/util\");\nvar util_6 = require(\"@firebase/util\");\nvar storage_1 = require(\"../storage/storage\");\nvar util_7 = require(\"@firebase/util\");\n/**\n * Returns a locally-unique ID (generated by just incrementing up from 0 each time its called).\n * @type {function(): number} Generated ID.\n */\nexports.LUIDGenerator = (function () {\n var id = 1;\n return function () {\n return id++;\n };\n})();\n/**\n * Sha1 hash of the input string\n * @param {!string} str The string to hash\n * @return {!string} The resulting hash\n */\nexports.sha1 = function (str) {\n var utf8Bytes = util_5.stringToByteArray(str);\n var sha1 = new util_4.Sha1();\n sha1.update(utf8Bytes);\n var sha1Bytes = sha1.digest();\n return util_3.base64.encodeByteArray(sha1Bytes);\n};\n/**\n * @param {...*} var_args\n * @return {string}\n * @private\n */\nvar buildLogMessage_ = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var message = '';\n for (var i = 0; i < var_args.length; i++) {\n if (Array.isArray(var_args[i]) ||\n (var_args[i] &&\n typeof var_args[i] === 'object' &&\n typeof var_args[i].length === 'number')) {\n message += buildLogMessage_.apply(null, var_args[i]);\n }\n else if (typeof var_args[i] === 'object') {\n message += util_6.stringify(var_args[i]);\n }\n else {\n message += var_args[i];\n }\n message += ' ';\n }\n return message;\n};\n/**\n * Use this for all debug messages in Firebase.\n * @type {?function(string)}\n */\nexports.logger = null;\n/**\n * Flag to check for log availability on first log message\n * @type {boolean}\n * @private\n */\nvar firstLog_ = true;\n/**\n * The implementation of Firebase.enableLogging (defined here to break dependencies)\n * @param {boolean|?function(string)} logger_ A flag to turn on logging, or a custom logger\n * @param {boolean=} persistent Whether or not to persist logging settings across refreshes\n */\nexports.enableLogging = function (logger_, persistent) {\n util_1.assert(!persistent || (logger_ === true || logger_ === false), \"Can't turn on custom loggers persistently.\");\n if (logger_ === true) {\n if (typeof console !== 'undefined') {\n if (typeof console.log === 'function') {\n exports.logger = console.log.bind(console);\n }\n else if (typeof console.log === 'object') {\n // IE does this.\n exports.logger = function (message) {\n console.log(message);\n };\n }\n }\n if (persistent)\n storage_1.SessionStorage.set('logging_enabled', true);\n }\n else if (typeof logger_ === 'function') {\n exports.logger = logger_;\n }\n else {\n exports.logger = null;\n storage_1.SessionStorage.remove('logging_enabled');\n }\n};\n/**\n *\n * @param {...(string|Arguments)} var_args\n */\nexports.log = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n if (firstLog_ === true) {\n firstLog_ = false;\n if (exports.logger === null && storage_1.SessionStorage.get('logging_enabled') === true)\n exports.enableLogging(true);\n }\n if (exports.logger) {\n var message = buildLogMessage_.apply(null, var_args);\n exports.logger(message);\n }\n};\n/**\n * @param {!string} prefix\n * @return {function(...[*])}\n */\nexports.logWrapper = function (prefix) {\n return function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n exports.log.apply(void 0, [prefix].concat(var_args));\n };\n};\n/**\n * @param {...string} var_args\n */\nexports.error = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n if (typeof console !== 'undefined') {\n var message = 'FIREBASE INTERNAL ERROR: ' + buildLogMessage_.apply(void 0, var_args);\n if (typeof console.error !== 'undefined') {\n console.error(message);\n }\n else {\n console.log(message);\n }\n }\n};\n/**\n * @param {...string} var_args\n */\nexports.fatal = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var message = buildLogMessage_.apply(void 0, var_args);\n throw new Error('FIREBASE FATAL ERROR: ' + message);\n};\n/**\n * @param {...*} var_args\n */\nexports.warn = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n if (typeof console !== 'undefined') {\n var message = 'FIREBASE WARNING: ' + buildLogMessage_.apply(void 0, var_args);\n if (typeof console.warn !== 'undefined') {\n console.warn(message);\n }\n else {\n console.log(message);\n }\n }\n};\n/**\n * Logs a warning if the containing page uses https. Called when a call to new Firebase\n * does not use https.\n */\nexports.warnIfPageIsSecure = function () {\n // Be very careful accessing browser globals. Who knows what may or may not exist.\n if (typeof window !== 'undefined' &&\n window.location &&\n window.location.protocol &&\n window.location.protocol.indexOf('https:') !== -1) {\n exports.warn('Insecure Firebase access from a secure page. ' +\n 'Please use https in calls to new Firebase().');\n }\n};\n/**\n * @param {!String} methodName\n */\nexports.warnAboutUnsupportedMethod = function (methodName) {\n exports.warn(methodName +\n ' is unsupported and will likely change soon. ' +\n 'Please do not use.');\n};\n/**\n * Returns true if data is NaN, or +/- Infinity.\n * @param {*} data\n * @return {boolean}\n */\nexports.isInvalidJSONNumber = function (data) {\n return (typeof data === 'number' &&\n (data != data || // NaN\n data == Number.POSITIVE_INFINITY ||\n data == Number.NEGATIVE_INFINITY));\n};\n/**\n * @param {function()} fn\n */\nexports.executeWhenDOMReady = function (fn) {\n if (util_7.isNodeSdk() || document.readyState === 'complete') {\n fn();\n }\n else {\n // Modeled after jQuery. Try DOMContentLoaded and onreadystatechange (which\n // fire before onload), but fall back to onload.\n var called_1 = false;\n var wrappedFn_1 = function () {\n if (!document.body) {\n setTimeout(wrappedFn_1, Math.floor(10));\n return;\n }\n if (!called_1) {\n called_1 = true;\n fn();\n }\n };\n if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', wrappedFn_1, false);\n // fallback to onload.\n window.addEventListener('load', wrappedFn_1, false);\n }\n else if (document.attachEvent) {\n // IE.\n document.attachEvent('onreadystatechange', function () {\n if (document.readyState === 'complete')\n wrappedFn_1();\n });\n // fallback to onload.\n window.attachEvent('onload', wrappedFn_1);\n // jQuery has an extra hack for IE that we could employ (based on\n // http://javascript.nwbox.com/IEContentLoaded/) But it looks really old.\n // I'm hoping we don't need it.\n }\n }\n};\n/**\n * Minimum key name. Invalid for actual data, used as a marker to sort before any valid names\n * @type {!string}\n */\nexports.MIN_NAME = '[MIN_NAME]';\n/**\n * Maximum key name. Invalid for actual data, used as a marker to sort above any valid names\n * @type {!string}\n */\nexports.MAX_NAME = '[MAX_NAME]';\n/**\n * Compares valid Firebase key names, plus min and max name\n * @param {!string} a\n * @param {!string} b\n * @return {!number}\n */\nexports.nameCompare = function (a, b) {\n if (a === b) {\n return 0;\n }\n else if (a === exports.MIN_NAME || b === exports.MAX_NAME) {\n return -1;\n }\n else if (b === exports.MIN_NAME || a === exports.MAX_NAME) {\n return 1;\n }\n else {\n var aAsInt = exports.tryParseInt(a), bAsInt = exports.tryParseInt(b);\n if (aAsInt !== null) {\n if (bAsInt !== null) {\n return aAsInt - bAsInt == 0 ? a.length - b.length : aAsInt - bAsInt;\n }\n else {\n return -1;\n }\n }\n else if (bAsInt !== null) {\n return 1;\n }\n else {\n return a < b ? -1 : 1;\n }\n }\n};\n/**\n * @param {!string} a\n * @param {!string} b\n * @return {!number} comparison result.\n */\nexports.stringCompare = function (a, b) {\n if (a === b) {\n return 0;\n }\n else if (a < b) {\n return -1;\n }\n else {\n return 1;\n }\n};\n/**\n * @param {string} key\n * @param {Object} obj\n * @return {*}\n */\nexports.requireKey = function (key, obj) {\n if (obj && key in obj) {\n return obj[key];\n }\n else {\n throw new Error('Missing required key (' + key + ') in object: ' + util_6.stringify(obj));\n }\n};\n/**\n * @param {*} obj\n * @return {string}\n */\nexports.ObjectToUniqueKey = function (obj) {\n if (typeof obj !== 'object' || obj === null)\n return util_6.stringify(obj);\n var keys = [];\n for (var k in obj) {\n keys.push(k);\n }\n // Export as json, but with the keys sorted.\n keys.sort();\n var key = '{';\n for (var i = 0; i < keys.length; i++) {\n if (i !== 0)\n key += ',';\n key += util_6.stringify(keys[i]);\n key += ':';\n key += exports.ObjectToUniqueKey(obj[keys[i]]);\n }\n key += '}';\n return key;\n};\n/**\n * Splits a string into a number of smaller segments of maximum size\n * @param {!string} str The string\n * @param {!number} segsize The maximum number of chars in the string.\n * @return {Array.} The string, split into appropriately-sized chunks\n */\nexports.splitStringBySize = function (str, segsize) {\n var len = str.length;\n if (len <= segsize) {\n return [str];\n }\n var dataSegs = [];\n for (var c = 0; c < len; c += segsize) {\n if (c + segsize > len) {\n dataSegs.push(str.substring(c, len));\n }\n else {\n dataSegs.push(str.substring(c, c + segsize));\n }\n }\n return dataSegs;\n};\n/**\n * Apply a function to each (key, value) pair in an object or\n * apply a function to each (index, value) pair in an array\n * @param {!(Object|Array)} obj The object or array to iterate over\n * @param {function(?, ?)} fn The function to apply\n */\nexports.each = function (obj, fn) {\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; ++i) {\n fn(i, obj[i]);\n }\n }\n else {\n /**\n * in the conversion of code we removed the goog.object.forEach\n * function which did a value,key callback. We standardized on\n * a single impl that does a key, value callback. So we invert\n * to not have to touch the `each` code points\n */\n util_2.forEach(obj, function (key, val) { return fn(val, key); });\n }\n};\n/**\n * Like goog.bind, but doesn't bother to create a closure if opt_context is null/undefined.\n * @param {function(*)} callback Callback function.\n * @param {?Object=} context Optional context to bind to.\n * @return {function(*)}\n */\nexports.bindCallback = function (callback, context) {\n return context ? callback.bind(context) : callback;\n};\n/**\n * Borrowed from http://hg.secondlife.com/llsd/src/tip/js/typedarray.js (MIT License)\n * I made one modification at the end and removed the NaN / Infinity\n * handling (since it seemed broken [caused an overflow] and we don't need it). See MJL comments.\n * @param {!number} v A double\n * @return {string}\n */\nexports.doubleToIEEE754String = function (v) {\n util_1.assert(!exports.isInvalidJSONNumber(v), 'Invalid JSON number'); // MJL\n var ebits = 11, fbits = 52;\n var bias = (1 << (ebits - 1)) - 1, s, e, f, ln, i, bits, str;\n // Compute sign, exponent, fraction\n // Skip NaN / Infinity handling --MJL.\n if (v === 0) {\n e = 0;\n f = 0;\n s = 1 / v === -Infinity ? 1 : 0;\n }\n else {\n s = v < 0;\n v = Math.abs(v);\n if (v >= Math.pow(2, 1 - bias)) {\n // Normalized\n ln = Math.min(Math.floor(Math.log(v) / Math.LN2), bias);\n e = ln + bias;\n f = Math.round(v * Math.pow(2, fbits - ln) - Math.pow(2, fbits));\n }\n else {\n // Denormalized\n e = 0;\n f = Math.round(v / Math.pow(2, 1 - bias - fbits));\n }\n }\n // Pack sign, exponent, fraction\n bits = [];\n for (i = fbits; i; i -= 1) {\n bits.push(f % 2 ? 1 : 0);\n f = Math.floor(f / 2);\n }\n for (i = ebits; i; i -= 1) {\n bits.push(e % 2 ? 1 : 0);\n e = Math.floor(e / 2);\n }\n bits.push(s ? 1 : 0);\n bits.reverse();\n str = bits.join('');\n // Return the data as a hex string. --MJL\n var hexByteString = '';\n for (i = 0; i < 64; i += 8) {\n var hexByte = parseInt(str.substr(i, 8), 2).toString(16);\n if (hexByte.length === 1)\n hexByte = '0' + hexByte;\n hexByteString = hexByteString + hexByte;\n }\n return hexByteString.toLowerCase();\n};\n/**\n * Used to detect if we're in a Chrome content script (which executes in an\n * isolated environment where long-polling doesn't work).\n * @return {boolean}\n */\nexports.isChromeExtensionContentScript = function () {\n return !!(typeof window === 'object' &&\n window['chrome'] &&\n window['chrome']['extension'] &&\n !/^chrome/.test(window.location.href));\n};\n/**\n * Used to detect if we're in a Windows 8 Store app.\n * @return {boolean}\n */\nexports.isWindowsStoreApp = function () {\n // Check for the presence of a couple WinRT globals\n return typeof Windows === 'object' && typeof Windows.UI === 'object';\n};\n/**\n * Converts a server error code to a Javascript Error\n * @param {!string} code\n * @param {!Query} query\n * @return {Error}\n */\nexports.errorForServerCode = function (code, query) {\n var reason = 'Unknown Error';\n if (code === 'too_big') {\n reason =\n 'The data requested exceeds the maximum size ' +\n 'that can be accessed with a single request.';\n }\n else if (code == 'permission_denied') {\n reason = \"Client doesn't have permission to access the desired data.\";\n }\n else if (code == 'unavailable') {\n reason = 'The service is unavailable';\n }\n var error = new Error(code + ' at ' + query.path.toString() + ': ' + reason);\n error.code = code.toUpperCase();\n return error;\n};\n/**\n * Used to test for integer-looking strings\n * @type {RegExp}\n * @private\n */\nexports.INTEGER_REGEXP_ = new RegExp('^-?\\\\d{1,10}$');\n/**\n * If the string contains a 32-bit integer, return it. Else return null.\n * @param {!string} str\n * @return {?number}\n */\nexports.tryParseInt = function (str) {\n if (exports.INTEGER_REGEXP_.test(str)) {\n var intVal = Number(str);\n if (intVal >= -2147483648 && intVal <= 2147483647) {\n return intVal;\n }\n }\n return null;\n};\n/**\n * Helper to run some code but catch any exceptions and re-throw them later.\n * Useful for preventing user callbacks from breaking internal code.\n *\n * Re-throwing the exception from a setTimeout is a little evil, but it's very\n * convenient (we don't have to try to figure out when is a safe point to\n * re-throw it), and the behavior seems reasonable:\n *\n * * If you aren't pausing on exceptions, you get an error in the console with\n * the correct stack trace.\n * * If you're pausing on all exceptions, the debugger will pause on your\n * exception and then again when we rethrow it.\n * * If you're only pausing on uncaught exceptions, the debugger will only pause\n * on us re-throwing it.\n *\n * @param {!function()} fn The code to guard.\n */\nexports.exceptionGuard = function (fn) {\n try {\n fn();\n }\n catch (e) {\n // Re-throw exception when it's safe.\n setTimeout(function () {\n // It used to be that \"throw e\" would result in a good console error with\n // relevant context, but as of Chrome 39, you just get the firebase.js\n // file/line number where we re-throw it, which is useless. So we log\n // e.stack explicitly.\n var stack = e.stack || '';\n exports.warn('Exception was thrown by user callback.', stack);\n throw e;\n }, Math.floor(0));\n }\n};\n/**\n * Helper function to safely call opt_callback with the specified arguments. It:\n * 1. Turns into a no-op if opt_callback is null or undefined.\n * 2. Wraps the call inside exceptionGuard to prevent exceptions from breaking our state.\n *\n * @param {?Function=} callback Optional onComplete callback.\n * @param {...*} var_args Arbitrary args to be passed to opt_onComplete\n */\nexports.callUserCallback = function (callback) {\n var var_args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n var_args[_i - 1] = arguments[_i];\n }\n if (typeof callback === 'function') {\n exports.exceptionGuard(function () {\n callback.apply(void 0, var_args);\n });\n }\n};\n/**\n * @return {boolean} true if we think we're currently being crawled.\n */\nexports.beingCrawled = function () {\n var userAgent = (typeof window === 'object' &&\n window['navigator'] &&\n window['navigator']['userAgent']) ||\n '';\n // For now we whitelist the most popular crawlers. We should refine this to be the set of crawlers we\n // believe to support JavaScript/AJAX rendering.\n // NOTE: Google Webmaster Tools doesn't really belong, but their \"This is how a visitor to your website\n // would have seen the page\" is flaky if we don't treat it as a crawler.\n return (userAgent.search(/googlebot|google webmaster tools|bingbot|yahoo! slurp|baiduspider|yandexbot|duckduckbot/i) >= 0);\n};\n/**\n * Export a property of an object using a getter function.\n *\n * @param {!Object} object\n * @param {string} name\n * @param {!function(): *} fnGet\n */\nexports.exportPropGetter = function (object, name, fnGet) {\n Object.defineProperty(object, name, { get: fnGet });\n};\n/**\n * Same as setTimeout() except on Node.JS it will /not/ prevent the process from exiting.\n *\n * It is removed with clearTimeout() as normal.\n *\n * @param {Function} fn Function to run.\n * @param {number} time Milliseconds to wait before running.\n * @return {number|Object} The setTimeout() return value.\n */\nexports.setTimeoutNonBlocking = function (fn, time) {\n var timeout = setTimeout(fn, time);\n if (typeof timeout === 'object' && timeout['unref']) {\n timeout['unref']();\n }\n return timeout;\n};\n\n//# sourceMappingURL=util.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/util.js\n// module id = 1\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"./util\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * An immutable object representing a parsed path. It's immutable so that you\n * can pass them around to other functions without worrying about them changing\n * it.\n */\nvar Path = /** @class */ (function () {\n /**\n * @param {string|Array.} pathOrString Path string to parse,\n * or another path, or the raw tokens array\n * @param {number=} pieceNum\n */\n function Path(pathOrString, pieceNum) {\n if (pieceNum === void 0) {\n this.pieces_ = pathOrString.split('/');\n // Remove empty pieces.\n var copyTo = 0;\n for (var i = 0; i < this.pieces_.length; i++) {\n if (this.pieces_[i].length > 0) {\n this.pieces_[copyTo] = this.pieces_[i];\n copyTo++;\n }\n }\n this.pieces_.length = copyTo;\n this.pieceNum_ = 0;\n }\n else {\n this.pieces_ = pathOrString;\n this.pieceNum_ = pieceNum;\n }\n }\n Object.defineProperty(Path, \"Empty\", {\n /**\n * Singleton to represent an empty path\n *\n * @const\n */\n get: function () {\n return new Path('');\n },\n enumerable: true,\n configurable: true\n });\n Path.prototype.getFront = function () {\n if (this.pieceNum_ >= this.pieces_.length)\n return null;\n return this.pieces_[this.pieceNum_];\n };\n /**\n * @return {number} The number of segments in this path\n */\n Path.prototype.getLength = function () {\n return this.pieces_.length - this.pieceNum_;\n };\n /**\n * @return {!Path}\n */\n Path.prototype.popFront = function () {\n var pieceNum = this.pieceNum_;\n if (pieceNum < this.pieces_.length) {\n pieceNum++;\n }\n return new Path(this.pieces_, pieceNum);\n };\n /**\n * @return {?string}\n */\n Path.prototype.getBack = function () {\n if (this.pieceNum_ < this.pieces_.length)\n return this.pieces_[this.pieces_.length - 1];\n return null;\n };\n Path.prototype.toString = function () {\n var pathString = '';\n for (var i = this.pieceNum_; i < this.pieces_.length; i++) {\n if (this.pieces_[i] !== '')\n pathString += '/' + this.pieces_[i];\n }\n return pathString || '/';\n };\n Path.prototype.toUrlEncodedString = function () {\n var pathString = '';\n for (var i = this.pieceNum_; i < this.pieces_.length; i++) {\n if (this.pieces_[i] !== '')\n pathString += '/' + encodeURIComponent(String(this.pieces_[i]));\n }\n return pathString || '/';\n };\n /**\n * Shallow copy of the parts of the path.\n *\n * @param {number=} begin\n * @return {!Array}\n */\n Path.prototype.slice = function (begin) {\n if (begin === void 0) { begin = 0; }\n return this.pieces_.slice(this.pieceNum_ + begin);\n };\n /**\n * @return {?Path}\n */\n Path.prototype.parent = function () {\n if (this.pieceNum_ >= this.pieces_.length)\n return null;\n var pieces = [];\n for (var i = this.pieceNum_; i < this.pieces_.length - 1; i++)\n pieces.push(this.pieces_[i]);\n return new Path(pieces, 0);\n };\n /**\n * @param {string|!Path} childPathObj\n * @return {!Path}\n */\n Path.prototype.child = function (childPathObj) {\n var pieces = [];\n for (var i = this.pieceNum_; i < this.pieces_.length; i++)\n pieces.push(this.pieces_[i]);\n if (childPathObj instanceof Path) {\n for (var i = childPathObj.pieceNum_; i < childPathObj.pieces_.length; i++) {\n pieces.push(childPathObj.pieces_[i]);\n }\n }\n else {\n var childPieces = childPathObj.split('/');\n for (var i = 0; i < childPieces.length; i++) {\n if (childPieces[i].length > 0)\n pieces.push(childPieces[i]);\n }\n }\n return new Path(pieces, 0);\n };\n /**\n * @return {boolean} True if there are no segments in this path\n */\n Path.prototype.isEmpty = function () {\n return this.pieceNum_ >= this.pieces_.length;\n };\n /**\n * @param {!Path} outerPath\n * @param {!Path} innerPath\n * @return {!Path} The path from outerPath to innerPath\n */\n Path.relativePath = function (outerPath, innerPath) {\n var outer = outerPath.getFront(), inner = innerPath.getFront();\n if (outer === null) {\n return innerPath;\n }\n else if (outer === inner) {\n return Path.relativePath(outerPath.popFront(), innerPath.popFront());\n }\n else {\n throw new Error('INTERNAL ERROR: innerPath (' +\n innerPath +\n ') is not within ' +\n 'outerPath (' +\n outerPath +\n ')');\n }\n };\n /**\n * @param {!Path} left\n * @param {!Path} right\n * @return {number} -1, 0, 1 if left is less, equal, or greater than the right.\n */\n Path.comparePaths = function (left, right) {\n var leftKeys = left.slice();\n var rightKeys = right.slice();\n for (var i = 0; i < leftKeys.length && i < rightKeys.length; i++) {\n var cmp = util_1.nameCompare(leftKeys[i], rightKeys[i]);\n if (cmp !== 0)\n return cmp;\n }\n if (leftKeys.length === rightKeys.length)\n return 0;\n return leftKeys.length < rightKeys.length ? -1 : 1;\n };\n /**\n *\n * @param {Path} other\n * @return {boolean} true if paths are the same.\n */\n Path.prototype.equals = function (other) {\n if (this.getLength() !== other.getLength()) {\n return false;\n }\n for (var i = this.pieceNum_, j = other.pieceNum_; i <= this.pieces_.length; i++, j++) {\n if (this.pieces_[i] !== other.pieces_[j]) {\n return false;\n }\n }\n return true;\n };\n /**\n *\n * @param {!Path} other\n * @return {boolean} True if this path is a parent (or the same as) other\n */\n Path.prototype.contains = function (other) {\n var i = this.pieceNum_;\n var j = other.pieceNum_;\n if (this.getLength() > other.getLength()) {\n return false;\n }\n while (i < this.pieces_.length) {\n if (this.pieces_[i] !== other.pieces_[j]) {\n return false;\n }\n ++i;\n ++j;\n }\n return true;\n };\n return Path;\n}()); // end Path\nexports.Path = Path;\n/**\n * Dynamic (mutable) path used to count path lengths.\n *\n * This class is used to efficiently check paths for valid\n * length (in UTF8 bytes) and depth (used in path validation).\n *\n * Throws Error exception if path is ever invalid.\n *\n * The definition of a path always begins with '/'.\n */\nvar ValidationPath = /** @class */ (function () {\n /**\n * @param {!Path} path Initial Path.\n * @param {string} errorPrefix_ Prefix for any error messages.\n */\n function ValidationPath(path, errorPrefix_) {\n this.errorPrefix_ = errorPrefix_;\n /** @type {!Array} */\n this.parts_ = path.slice();\n /** @type {number} Initialize to number of '/' chars needed in path. */\n this.byteLength_ = Math.max(1, this.parts_.length);\n for (var i = 0; i < this.parts_.length; i++) {\n this.byteLength_ += util_2.stringLength(this.parts_[i]);\n }\n this.checkValid_();\n }\n Object.defineProperty(ValidationPath, \"MAX_PATH_DEPTH\", {\n /** @const {number} Maximum key depth. */\n get: function () {\n return 32;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValidationPath, \"MAX_PATH_LENGTH_BYTES\", {\n /** @const {number} Maximum number of (UTF8) bytes in a Firebase path. */\n get: function () {\n return 768;\n },\n enumerable: true,\n configurable: true\n });\n /** @param {string} child */\n ValidationPath.prototype.push = function (child) {\n // Count the needed '/'\n if (this.parts_.length > 0) {\n this.byteLength_ += 1;\n }\n this.parts_.push(child);\n this.byteLength_ += util_2.stringLength(child);\n this.checkValid_();\n };\n ValidationPath.prototype.pop = function () {\n var last = this.parts_.pop();\n this.byteLength_ -= util_2.stringLength(last);\n // Un-count the previous '/'\n if (this.parts_.length > 0) {\n this.byteLength_ -= 1;\n }\n };\n ValidationPath.prototype.checkValid_ = function () {\n if (this.byteLength_ > ValidationPath.MAX_PATH_LENGTH_BYTES) {\n throw new Error(this.errorPrefix_ +\n 'has a key path longer than ' +\n ValidationPath.MAX_PATH_LENGTH_BYTES +\n ' bytes (' +\n this.byteLength_ +\n ').');\n }\n if (this.parts_.length > ValidationPath.MAX_PATH_DEPTH) {\n throw new Error(this.errorPrefix_ +\n 'path specified exceeds the maximum depth that can be written (' +\n ValidationPath.MAX_PATH_DEPTH +\n ') or object contains a cycle ' +\n this.toErrorString());\n }\n };\n /**\n * String for use in error messages - uses '.' notation for path.\n *\n * @return {string}\n */\n ValidationPath.prototype.toErrorString = function () {\n if (this.parts_.length == 0) {\n return '';\n }\n return \"in property '\" + this.parts_.join('.') + \"'\";\n };\n return ValidationPath;\n}());\nexports.ValidationPath = ValidationPath;\n\n//# sourceMappingURL=Path.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/Path.js\n// module id = 2\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Index_1 = require(\"./Index\");\nvar util_1 = require(\"../../util/util\");\nvar Node_1 = require(\"../Node\");\nvar LeafNode_1 = require(\"../LeafNode\");\nvar nodeFromJSON;\nvar MAX_NODE;\nfunction setNodeFromJSON(val) {\n nodeFromJSON = val;\n}\nexports.setNodeFromJSON = setNodeFromJSON;\nfunction setMaxNode(val) {\n MAX_NODE = val;\n}\nexports.setMaxNode = setMaxNode;\n/**\n * @constructor\n * @extends {Index}\n * @private\n */\nvar PriorityIndex = /** @class */ (function (_super) {\n __extends(PriorityIndex, _super);\n function PriorityIndex() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.compare = function (a, b) {\n var aPriority = a.node.getPriority();\n var bPriority = b.node.getPriority();\n var indexCmp = aPriority.compareTo(bPriority);\n if (indexCmp === 0) {\n return util_1.nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n };\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.isDefinedOn = function (node) {\n return !node.getPriority().isEmpty();\n };\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\n return !oldNode.getPriority().equals(newNode.getPriority());\n };\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.minPost = function () {\n return Node_1.NamedNode.MIN;\n };\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.maxPost = function () {\n return new Node_1.NamedNode(util_1.MAX_NAME, new LeafNode_1.LeafNode('[PRIORITY-POST]', MAX_NODE));\n };\n /**\n * @param {*} indexValue\n * @param {string} name\n * @return {!NamedNode}\n */\n PriorityIndex.prototype.makePost = function (indexValue, name) {\n var priorityNode = nodeFromJSON(indexValue);\n return new Node_1.NamedNode(name, new LeafNode_1.LeafNode('[PRIORITY-POST]', priorityNode));\n };\n /**\n * @return {!string} String representation for inclusion in a query spec\n */\n PriorityIndex.prototype.toString = function () {\n return '.priority';\n };\n return PriorityIndex;\n}(Index_1.Index));\nexports.PriorityIndex = PriorityIndex;\nexports.PRIORITY_INDEX = new PriorityIndex();\n\n//# sourceMappingURL=PriorityIndex.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/PriorityIndex.js\n// module id = 3\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar SortedMap_1 = require(\"../util/SortedMap\");\nvar Node_1 = require(\"./Node\");\nvar snap_1 = require(\"./snap\");\nvar PriorityIndex_1 = require(\"./indexes/PriorityIndex\");\nvar KeyIndex_1 = require(\"./indexes/KeyIndex\");\nvar IndexMap_1 = require(\"./IndexMap\");\nvar LeafNode_1 = require(\"./LeafNode\");\nvar comparators_1 = require(\"./comparators\");\n// TODO: For memory savings, don't store priorityNode_ if it's empty.\nvar EMPTY_NODE;\n/**\n * ChildrenNode is a class for storing internal nodes in a DataSnapshot\n * (i.e. nodes with children). It implements Node and stores the\n * list of children in the children property, sorted by child name.\n *\n * @constructor\n * @implements {Node}\n */\nvar ChildrenNode = /** @class */ (function () {\n /**\n *\n * @param {!SortedMap.} children_ List of children\n * of this node..\n * @param {?Node} priorityNode_ The priority of this node (as a snapshot node).\n * @param {!IndexMap} indexMap_\n */\n function ChildrenNode(children_, priorityNode_, indexMap_) {\n this.children_ = children_;\n this.priorityNode_ = priorityNode_;\n this.indexMap_ = indexMap_;\n this.lazyHash_ = null;\n /**\n * Note: The only reason we allow null priority is for EMPTY_NODE, since we can't use\n * EMPTY_NODE as the priority of EMPTY_NODE. We might want to consider making EMPTY_NODE its own\n * class instead of an empty ChildrenNode.\n */\n if (this.priorityNode_) {\n snap_1.validatePriorityNode(this.priorityNode_);\n }\n if (this.children_.isEmpty()) {\n util_1.assert(!this.priorityNode_ || this.priorityNode_.isEmpty(), 'An empty node cannot have a priority');\n }\n }\n Object.defineProperty(ChildrenNode, \"EMPTY_NODE\", {\n get: function () {\n return (EMPTY_NODE ||\n (EMPTY_NODE = new ChildrenNode(new SortedMap_1.SortedMap(comparators_1.NAME_COMPARATOR), null, IndexMap_1.IndexMap.Default)));\n },\n enumerable: true,\n configurable: true\n });\n /** @inheritDoc */\n ChildrenNode.prototype.isLeafNode = function () {\n return false;\n };\n /** @inheritDoc */\n ChildrenNode.prototype.getPriority = function () {\n return this.priorityNode_ || EMPTY_NODE;\n };\n /** @inheritDoc */\n ChildrenNode.prototype.updatePriority = function (newPriorityNode) {\n if (this.children_.isEmpty()) {\n // Don't allow priorities on empty nodes\n return this;\n }\n else {\n return new ChildrenNode(this.children_, newPriorityNode, this.indexMap_);\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.getImmediateChild = function (childName) {\n // Hack to treat priority as a regular child\n if (childName === '.priority') {\n return this.getPriority();\n }\n else {\n var child = this.children_.get(childName);\n return child === null ? EMPTY_NODE : child;\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.getChild = function (path) {\n var front = path.getFront();\n if (front === null)\n return this;\n return this.getImmediateChild(front).getChild(path.popFront());\n };\n /** @inheritDoc */\n ChildrenNode.prototype.hasChild = function (childName) {\n return this.children_.get(childName) !== null;\n };\n /** @inheritDoc */\n ChildrenNode.prototype.updateImmediateChild = function (childName, newChildNode) {\n util_1.assert(newChildNode, 'We should always be passing snapshot nodes');\n if (childName === '.priority') {\n return this.updatePriority(newChildNode);\n }\n else {\n var namedNode = new Node_1.NamedNode(childName, newChildNode);\n var newChildren = void 0, newIndexMap = void 0, newPriority = void 0;\n if (newChildNode.isEmpty()) {\n newChildren = this.children_.remove(childName);\n newIndexMap = this.indexMap_.removeFromIndexes(namedNode, this.children_);\n }\n else {\n newChildren = this.children_.insert(childName, newChildNode);\n newIndexMap = this.indexMap_.addToIndexes(namedNode, this.children_);\n }\n newPriority = newChildren.isEmpty() ? EMPTY_NODE : this.priorityNode_;\n return new ChildrenNode(newChildren, newPriority, newIndexMap);\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.updateChild = function (path, newChildNode) {\n var front = path.getFront();\n if (front === null) {\n return newChildNode;\n }\n else {\n util_1.assert(path.getFront() !== '.priority' || path.getLength() === 1, '.priority must be the last token in a path');\n var newImmediateChild = this.getImmediateChild(front).updateChild(path.popFront(), newChildNode);\n return this.updateImmediateChild(front, newImmediateChild);\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.isEmpty = function () {\n return this.children_.isEmpty();\n };\n /** @inheritDoc */\n ChildrenNode.prototype.numChildren = function () {\n return this.children_.count();\n };\n /** @inheritDoc */\n ChildrenNode.prototype.val = function (exportFormat) {\n if (this.isEmpty())\n return null;\n var obj = {};\n var numKeys = 0, maxKey = 0, allIntegerKeys = true;\n this.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n obj[key] = childNode.val(exportFormat);\n numKeys++;\n if (allIntegerKeys && ChildrenNode.INTEGER_REGEXP_.test(key)) {\n maxKey = Math.max(maxKey, Number(key));\n }\n else {\n allIntegerKeys = false;\n }\n });\n if (!exportFormat && allIntegerKeys && maxKey < 2 * numKeys) {\n // convert to array.\n var array = [];\n for (var key in obj)\n array[key] = obj[key];\n return array;\n }\n else {\n if (exportFormat && !this.getPriority().isEmpty()) {\n obj['.priority'] = this.getPriority().val();\n }\n return obj;\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.hash = function () {\n if (this.lazyHash_ === null) {\n var toHash_1 = '';\n if (!this.getPriority().isEmpty())\n toHash_1 +=\n 'priority:' +\n snap_1.priorityHashText(this.getPriority().val()) +\n ':';\n this.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n var childHash = childNode.hash();\n if (childHash !== '')\n toHash_1 += ':' + key + ':' + childHash;\n });\n this.lazyHash_ = toHash_1 === '' ? '' : util_2.sha1(toHash_1);\n }\n return this.lazyHash_;\n };\n /** @inheritDoc */\n ChildrenNode.prototype.getPredecessorChildName = function (childName, childNode, index) {\n var idx = this.resolveIndex_(index);\n if (idx) {\n var predecessor = idx.getPredecessorKey(new Node_1.NamedNode(childName, childNode));\n return predecessor ? predecessor.name : null;\n }\n else {\n return this.children_.getPredecessorKey(childName);\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {?string}\n */\n ChildrenNode.prototype.getFirstChildName = function (indexDefinition) {\n var idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n var minKey = idx.minKey();\n return minKey && minKey.name;\n }\n else {\n return this.children_.minKey();\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {?NamedNode}\n */\n ChildrenNode.prototype.getFirstChild = function (indexDefinition) {\n var minKey = this.getFirstChildName(indexDefinition);\n if (minKey) {\n return new Node_1.NamedNode(minKey, this.children_.get(minKey));\n }\n else {\n return null;\n }\n };\n /**\n * Given an index, return the key name of the largest value we have, according to that index\n * @param {!Index} indexDefinition\n * @return {?string}\n */\n ChildrenNode.prototype.getLastChildName = function (indexDefinition) {\n var idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n var maxKey = idx.maxKey();\n return maxKey && maxKey.name;\n }\n else {\n return this.children_.maxKey();\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {?NamedNode}\n */\n ChildrenNode.prototype.getLastChild = function (indexDefinition) {\n var maxKey = this.getLastChildName(indexDefinition);\n if (maxKey) {\n return new Node_1.NamedNode(maxKey, this.children_.get(maxKey));\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.forEachChild = function (index, action) {\n var idx = this.resolveIndex_(index);\n if (idx) {\n return idx.inorderTraversal(function (wrappedNode) {\n return action(wrappedNode.name, wrappedNode.node);\n });\n }\n else {\n return this.children_.inorderTraversal(action);\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {SortedMapIterator}\n */\n ChildrenNode.prototype.getIterator = function (indexDefinition) {\n return this.getIteratorFrom(indexDefinition.minPost(), indexDefinition);\n };\n /**\n *\n * @param {!NamedNode} startPost\n * @param {!Index} indexDefinition\n * @return {!SortedMapIterator}\n */\n ChildrenNode.prototype.getIteratorFrom = function (startPost, indexDefinition) {\n var idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n return idx.getIteratorFrom(startPost, function (key) { return key; });\n }\n else {\n var iterator = this.children_.getIteratorFrom(startPost.name, Node_1.NamedNode.Wrap);\n var next = iterator.peek();\n while (next != null && indexDefinition.compare(next, startPost) < 0) {\n iterator.getNext();\n next = iterator.peek();\n }\n return iterator;\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {!SortedMapIterator}\n */\n ChildrenNode.prototype.getReverseIterator = function (indexDefinition) {\n return this.getReverseIteratorFrom(indexDefinition.maxPost(), indexDefinition);\n };\n /**\n * @param {!NamedNode} endPost\n * @param {!Index} indexDefinition\n * @return {!SortedMapIterator}\n */\n ChildrenNode.prototype.getReverseIteratorFrom = function (endPost, indexDefinition) {\n var idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n return idx.getReverseIteratorFrom(endPost, function (key) {\n return key;\n });\n }\n else {\n var iterator = this.children_.getReverseIteratorFrom(endPost.name, Node_1.NamedNode.Wrap);\n var next = iterator.peek();\n while (next != null && indexDefinition.compare(next, endPost) > 0) {\n iterator.getNext();\n next = iterator.peek();\n }\n return iterator;\n }\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.compareTo = function (other) {\n if (this.isEmpty()) {\n if (other.isEmpty()) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (other.isLeafNode() || other.isEmpty()) {\n return 1;\n }\n else if (other === exports.MAX_NODE) {\n return -1;\n }\n else {\n // Must be another node with children.\n return 0;\n }\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.withIndex = function (indexDefinition) {\n if (indexDefinition === KeyIndex_1.KEY_INDEX ||\n this.indexMap_.hasIndex(indexDefinition)) {\n return this;\n }\n else {\n var newIndexMap = this.indexMap_.addIndex(indexDefinition, this.children_);\n return new ChildrenNode(this.children_, this.priorityNode_, newIndexMap);\n }\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.isIndexed = function (index) {\n return index === KeyIndex_1.KEY_INDEX || this.indexMap_.hasIndex(index);\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.equals = function (other) {\n if (other === this) {\n return true;\n }\n else if (other.isLeafNode()) {\n return false;\n }\n else {\n var otherChildrenNode = other;\n if (!this.getPriority().equals(otherChildrenNode.getPriority())) {\n return false;\n }\n else if (this.children_.count() === otherChildrenNode.children_.count()) {\n var thisIter = this.getIterator(PriorityIndex_1.PRIORITY_INDEX);\n var otherIter = otherChildrenNode.getIterator(PriorityIndex_1.PRIORITY_INDEX);\n var thisCurrent = thisIter.getNext();\n var otherCurrent = otherIter.getNext();\n while (thisCurrent && otherCurrent) {\n if (thisCurrent.name !== otherCurrent.name ||\n !thisCurrent.node.equals(otherCurrent.node)) {\n return false;\n }\n thisCurrent = thisIter.getNext();\n otherCurrent = otherIter.getNext();\n }\n return thisCurrent === null && otherCurrent === null;\n }\n else {\n return false;\n }\n }\n };\n /**\n * Returns a SortedMap ordered by index, or null if the default (by-key) ordering can be used\n * instead.\n *\n * @private\n * @param {!Index} indexDefinition\n * @return {?SortedMap.}\n */\n ChildrenNode.prototype.resolveIndex_ = function (indexDefinition) {\n if (indexDefinition === KeyIndex_1.KEY_INDEX) {\n return null;\n }\n else {\n return this.indexMap_.get(indexDefinition.toString());\n }\n };\n /**\n * @private\n * @type {RegExp}\n */\n ChildrenNode.INTEGER_REGEXP_ = /^(0|[1-9]\\d*)$/;\n return ChildrenNode;\n}());\nexports.ChildrenNode = ChildrenNode;\n/**\n * @constructor\n * @extends {ChildrenNode}\n * @private\n */\nvar MaxNode = /** @class */ (function (_super) {\n __extends(MaxNode, _super);\n function MaxNode() {\n return _super.call(this, new SortedMap_1.SortedMap(comparators_1.NAME_COMPARATOR), ChildrenNode.EMPTY_NODE, IndexMap_1.IndexMap.Default) || this;\n }\n MaxNode.prototype.compareTo = function (other) {\n if (other === this) {\n return 0;\n }\n else {\n return 1;\n }\n };\n MaxNode.prototype.equals = function (other) {\n // Not that we every compare it, but MAX_NODE is only ever equal to itself\n return other === this;\n };\n MaxNode.prototype.getPriority = function () {\n return this;\n };\n MaxNode.prototype.getImmediateChild = function (childName) {\n return ChildrenNode.EMPTY_NODE;\n };\n MaxNode.prototype.isEmpty = function () {\n return false;\n };\n return MaxNode;\n}(ChildrenNode));\nexports.MaxNode = MaxNode;\n/**\n * Marker that will sort higher than any other snapshot.\n * @type {!MAX_NODE}\n * @const\n */\nexports.MAX_NODE = new MaxNode();\nObject.defineProperties(Node_1.NamedNode, {\n MIN: {\n value: new Node_1.NamedNode(util_2.MIN_NAME, ChildrenNode.EMPTY_NODE)\n },\n MAX: {\n value: new Node_1.NamedNode(util_2.MAX_NAME, exports.MAX_NODE)\n }\n});\n/**\n * Reference Extensions\n */\nKeyIndex_1.KeyIndex.__EMPTY_NODE = ChildrenNode.EMPTY_NODE;\nLeafNode_1.LeafNode.__childrenNodeConstructor = ChildrenNode;\nsnap_1.setMaxNode(exports.MAX_NODE);\nPriorityIndex_1.setMaxNode(exports.MAX_NODE);\n\n//# sourceMappingURL=ChildrenNode.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/ChildrenNode.js\n// module id = 4\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n *\n * @param {!string} name\n * @param {!Node} node\n * @constructor\n * @struct\n */\nvar NamedNode = /** @class */ (function () {\n function NamedNode(name, node) {\n this.name = name;\n this.node = node;\n }\n /**\n *\n * @param {!string} name\n * @param {!Node} node\n * @return {NamedNode}\n */\n NamedNode.Wrap = function (name, node) {\n return new NamedNode(name, node);\n };\n return NamedNode;\n}());\nexports.NamedNode = NamedNode;\n\n//# sourceMappingURL=Node.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/Node.js\n// module id = 5\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = require(\"./Path\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"./util\");\nvar util_3 = require(\"@firebase/util\");\nvar util_4 = require(\"@firebase/util\");\n/**\n * True for invalid Firebase keys\n * @type {RegExp}\n * @private\n */\nexports.INVALID_KEY_REGEX_ = /[\\[\\].#$\\/\\u0000-\\u001F\\u007F]/;\n/**\n * True for invalid Firebase paths.\n * Allows '/' in paths.\n * @type {RegExp}\n * @private\n */\nexports.INVALID_PATH_REGEX_ = /[\\[\\].#$\\u0000-\\u001F\\u007F]/;\n/**\n * Maximum number of characters to allow in leaf value\n * @type {number}\n * @private\n */\nexports.MAX_LEAF_SIZE_ = 10 * 1024 * 1024;\n/**\n * @param {*} key\n * @return {boolean}\n */\nexports.isValidKey = function (key) {\n return (typeof key === 'string' && key.length !== 0 && !exports.INVALID_KEY_REGEX_.test(key));\n};\n/**\n * @param {string} pathString\n * @return {boolean}\n */\nexports.isValidPathString = function (pathString) {\n return (typeof pathString === 'string' &&\n pathString.length !== 0 &&\n !exports.INVALID_PATH_REGEX_.test(pathString));\n};\n/**\n * @param {string} pathString\n * @return {boolean}\n */\nexports.isValidRootPathString = function (pathString) {\n if (pathString) {\n // Allow '/.info/' at the beginning.\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\n }\n return exports.isValidPathString(pathString);\n};\n/**\n * @param {*} priority\n * @return {boolean}\n */\nexports.isValidPriority = function (priority) {\n return (priority === null ||\n typeof priority === 'string' ||\n (typeof priority === 'number' && !util_2.isInvalidJSONNumber(priority)) ||\n (priority && typeof priority === 'object' && util_1.contains(priority, '.sv')));\n};\n/**\n * Pre-validate a datum passed as an argument to Firebase function.\n *\n * @param {string} fnName\n * @param {number} argumentNumber\n * @param {*} data\n * @param {!Path} path\n * @param {boolean} optional\n */\nexports.validateFirebaseDataArg = function (fnName, argumentNumber, data, path, optional) {\n if (optional && data === undefined)\n return;\n exports.validateFirebaseData(util_3.errorPrefix(fnName, argumentNumber, optional), data, path);\n};\n/**\n * Validate a data object client-side before sending to server.\n *\n * @param {string} errorPrefix\n * @param {*} data\n * @param {!Path|!ValidationPath} path_\n */\nexports.validateFirebaseData = function (errorPrefix, data, path_) {\n var path = path_ instanceof Path_1.Path ? new Path_1.ValidationPath(path_, errorPrefix) : path_;\n if (data === undefined) {\n throw new Error(errorPrefix + 'contains undefined ' + path.toErrorString());\n }\n if (typeof data === 'function') {\n throw new Error(errorPrefix +\n 'contains a function ' +\n path.toErrorString() +\n ' with contents = ' +\n data.toString());\n }\n if (util_2.isInvalidJSONNumber(data)) {\n throw new Error(errorPrefix + 'contains ' + data.toString() + ' ' + path.toErrorString());\n }\n // Check max leaf size, but try to avoid the utf8 conversion if we can.\n if (typeof data === 'string' &&\n data.length > exports.MAX_LEAF_SIZE_ / 3 &&\n util_4.stringLength(data) > exports.MAX_LEAF_SIZE_) {\n throw new Error(errorPrefix +\n 'contains a string greater than ' +\n exports.MAX_LEAF_SIZE_ +\n ' utf8 bytes ' +\n path.toErrorString() +\n \" ('\" +\n data.substring(0, 50) +\n \"...')\");\n }\n // TODO = Perf = Consider combining the recursive validation of keys into NodeFromJSON\n // to save extra walking of large objects.\n if (data && typeof data === 'object') {\n var hasDotValue_1 = false, hasActualChild_1 = false;\n util_1.forEach(data, function (key, value) {\n if (key === '.value') {\n hasDotValue_1 = true;\n }\n else if (key !== '.priority' && key !== '.sv') {\n hasActualChild_1 = true;\n if (!exports.isValidKey(key)) {\n throw new Error(errorPrefix +\n ' contains an invalid key (' +\n key +\n ') ' +\n path.toErrorString() +\n '. Keys must be non-empty strings ' +\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\n }\n }\n path.push(key);\n exports.validateFirebaseData(errorPrefix, value, path);\n path.pop();\n });\n if (hasDotValue_1 && hasActualChild_1) {\n throw new Error(errorPrefix +\n ' contains \".value\" child ' +\n path.toErrorString() +\n ' in addition to actual children.');\n }\n }\n};\n/**\n * Pre-validate paths passed in the firebase function.\n *\n * @param {string} errorPrefix\n * @param {Array} mergePaths\n */\nexports.validateFirebaseMergePaths = function (errorPrefix, mergePaths) {\n var i, curPath;\n for (i = 0; i < mergePaths.length; i++) {\n curPath = mergePaths[i];\n var keys = curPath.slice();\n for (var j = 0; j < keys.length; j++) {\n if (keys[j] === '.priority' && j === keys.length - 1) {\n // .priority is OK\n }\n else if (!exports.isValidKey(keys[j])) {\n throw new Error(errorPrefix +\n 'contains an invalid key (' +\n keys[j] +\n ') in path ' +\n curPath.toString() +\n '. Keys must be non-empty strings ' +\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\n }\n }\n }\n // Check that update keys are not descendants of each other.\n // We rely on the property that sorting guarantees that ancestors come\n // right before descendants.\n mergePaths.sort(Path_1.Path.comparePaths);\n var prevPath = null;\n for (i = 0; i < mergePaths.length; i++) {\n curPath = mergePaths[i];\n if (prevPath !== null && prevPath.contains(curPath)) {\n throw new Error(errorPrefix +\n 'contains a path ' +\n prevPath.toString() +\n ' that is ancestor of another path ' +\n curPath.toString());\n }\n prevPath = curPath;\n }\n};\n/**\n * pre-validate an object passed as an argument to firebase function (\n * must be an object - e.g. for firebase.update()).\n *\n * @param {string} fnName\n * @param {number} argumentNumber\n * @param {*} data\n * @param {!Path} path\n * @param {boolean} optional\n */\nexports.validateFirebaseMergeDataArg = function (fnName, argumentNumber, data, path, optional) {\n if (optional && data === undefined)\n return;\n var errorPrefix = util_3.errorPrefix(fnName, argumentNumber, optional);\n if (!(data && typeof data === 'object') || Array.isArray(data)) {\n throw new Error(errorPrefix + ' must be an object containing the children to replace.');\n }\n var mergePaths = [];\n util_1.forEach(data, function (key, value) {\n var curPath = new Path_1.Path(key);\n exports.validateFirebaseData(errorPrefix, value, path.child(curPath));\n if (curPath.getBack() === '.priority') {\n if (!exports.isValidPriority(value)) {\n throw new Error(errorPrefix +\n \"contains an invalid value for '\" +\n curPath.toString() +\n \"', which must be a valid \" +\n 'Firebase priority (a string, finite number, server value, or null).');\n }\n }\n mergePaths.push(curPath);\n });\n exports.validateFirebaseMergePaths(errorPrefix, mergePaths);\n};\nexports.validatePriority = function (fnName, argumentNumber, priority, optional) {\n if (optional && priority === undefined)\n return;\n if (util_2.isInvalidJSONNumber(priority))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'is ' +\n priority.toString() +\n ', but must be a valid Firebase priority (a string, finite number, ' +\n 'server value, or null).');\n // Special case to allow importing data with a .sv.\n if (!exports.isValidPriority(priority))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid Firebase priority ' +\n '(a string, finite number, server value, or null).');\n};\nexports.validateEventType = function (fnName, argumentNumber, eventType, optional) {\n if (optional && eventType === undefined)\n return;\n switch (eventType) {\n case 'value':\n case 'child_added':\n case 'child_removed':\n case 'child_changed':\n case 'child_moved':\n break;\n default:\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid event type = \"value\", \"child_added\", \"child_removed\", ' +\n '\"child_changed\", or \"child_moved\".');\n }\n};\nexports.validateKey = function (fnName, argumentNumber, key, optional) {\n if (optional && key === undefined)\n return;\n if (!exports.isValidKey(key))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'was an invalid key = \"' +\n key +\n '\". Firebase keys must be non-empty strings and ' +\n 'can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\").');\n};\nexports.validatePathString = function (fnName, argumentNumber, pathString, optional) {\n if (optional && pathString === undefined)\n return;\n if (!exports.isValidPathString(pathString))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'was an invalid path = \"' +\n pathString +\n '\". Paths must be non-empty strings and ' +\n 'can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\"');\n};\nexports.validateRootPathString = function (fnName, argumentNumber, pathString, optional) {\n if (pathString) {\n // Allow '/.info/' at the beginning.\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\n }\n exports.validatePathString(fnName, argumentNumber, pathString, optional);\n};\nexports.validateWritablePath = function (fnName, path) {\n if (path.getFront() === '.info') {\n throw new Error(fnName + \" failed = Can't modify data under /.info/\");\n }\n};\nexports.validateUrl = function (fnName, argumentNumber, parsedUrl) {\n // TODO = Validate server better.\n var pathString = parsedUrl.path.toString();\n if (!(typeof parsedUrl.repoInfo.host === 'string') ||\n parsedUrl.repoInfo.host.length === 0 ||\n !exports.isValidKey(parsedUrl.repoInfo.namespace) ||\n (pathString.length !== 0 && !exports.isValidRootPathString(pathString))) {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, false) +\n 'must be a valid firebase URL and ' +\n 'the path can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\".');\n }\n};\nexports.validateCredential = function (fnName, argumentNumber, cred, optional) {\n if (optional && cred === undefined)\n return;\n if (!(typeof cred === 'string'))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid credential (a string).');\n};\nexports.validateBoolean = function (fnName, argumentNumber, bool, optional) {\n if (optional && bool === undefined)\n return;\n if (typeof bool !== 'boolean')\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) + 'must be a boolean.');\n};\nexports.validateString = function (fnName, argumentNumber, string, optional) {\n if (optional && string === undefined)\n return;\n if (!(typeof string === 'string')) {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid string.');\n }\n};\nexports.validateObject = function (fnName, argumentNumber, obj, optional) {\n if (optional && obj === undefined)\n return;\n if (!(obj && typeof obj === 'object') || obj === null) {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid object.');\n }\n};\nexports.validateObjectContainsKey = function (fnName, argumentNumber, obj, key, optional, opt_type) {\n var objectContainsKey = obj && typeof obj === 'object' && util_1.contains(obj, key);\n if (!objectContainsKey) {\n if (optional) {\n return;\n }\n else {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must contain the key \"' +\n key +\n '\"');\n }\n }\n if (opt_type) {\n var val = util_1.safeGet(obj, key);\n if ((opt_type === 'number' && !(typeof val === 'number')) ||\n (opt_type === 'string' && !(typeof val === 'string')) ||\n (opt_type === 'boolean' && !(typeof val === 'boolean')) ||\n (opt_type === 'function' && !(typeof val === 'function')) ||\n (opt_type === 'object' && !(typeof val === 'object') && val)) {\n if (optional) {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'contains invalid value for key \"' +\n key +\n '\" (must be of type \"' +\n opt_type +\n '\")');\n }\n else {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must contain the key \"' +\n key +\n '\" with type \"' +\n opt_type +\n '\"');\n }\n }\n }\n};\n\n//# sourceMappingURL=validation.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/validation.js\n// module id = 7\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n *\n * @enum\n */\nvar OperationType;\n(function (OperationType) {\n OperationType[OperationType[\"OVERWRITE\"] = 0] = \"OVERWRITE\";\n OperationType[OperationType[\"MERGE\"] = 1] = \"MERGE\";\n OperationType[OperationType[\"ACK_USER_WRITE\"] = 2] = \"ACK_USER_WRITE\";\n OperationType[OperationType[\"LISTEN_COMPLETE\"] = 3] = \"LISTEN_COMPLETE\";\n})(OperationType = exports.OperationType || (exports.OperationType = {}));\n/**\n * @param {boolean} fromUser\n * @param {boolean} fromServer\n * @param {?string} queryId\n * @param {boolean} tagged\n * @constructor\n */\nvar OperationSource = /** @class */ (function () {\n function OperationSource(fromUser, fromServer, queryId, tagged) {\n this.fromUser = fromUser;\n this.fromServer = fromServer;\n this.queryId = queryId;\n this.tagged = tagged;\n util_1.assert(!tagged || fromServer, 'Tagged queries must be from server.');\n }\n /**\n * @const\n * @type {!OperationSource}\n */\n OperationSource.User = new OperationSource(\n /*fromUser=*/ true, false, null, \n /*tagged=*/ false);\n /**\n * @const\n * @type {!OperationSource}\n */\n OperationSource.Server = new OperationSource(false, \n /*fromServer=*/ true, null, \n /*tagged=*/ false);\n /**\n * @param {string} queryId\n * @return {!OperationSource}\n */\n OperationSource.forServerTaggedQuery = function (queryId) {\n return new OperationSource(false, \n /*fromServer=*/ true, queryId, \n /*tagged=*/ true);\n };\n return OperationSource;\n}());\nexports.OperationSource = OperationSource;\n\n//# sourceMappingURL=Operation.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/Operation.js\n// module id = 8\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @constructor\n * @struct\n * @param {!string} type The event type\n * @param {!Node} snapshotNode The data\n * @param {string=} childName The name for this child, if it's a child event\n * @param {Node=} oldSnap Used for intermediate processing of child changed events\n * @param {string=} prevName The name for the previous child, if applicable\n */\nvar Change = /** @class */ (function () {\n function Change(type, snapshotNode, childName, oldSnap, prevName) {\n this.type = type;\n this.snapshotNode = snapshotNode;\n this.childName = childName;\n this.oldSnap = oldSnap;\n this.prevName = prevName;\n }\n /**\n * @param {!Node} snapshot\n * @return {!Change}\n */\n Change.valueChange = function (snapshot) {\n return new Change(Change.VALUE, snapshot);\n };\n /**\n * @param {string} childKey\n * @param {!Node} snapshot\n * @return {!Change}\n */\n Change.childAddedChange = function (childKey, snapshot) {\n return new Change(Change.CHILD_ADDED, snapshot, childKey);\n };\n /**\n * @param {string} childKey\n * @param {!Node} snapshot\n * @return {!Change}\n */\n Change.childRemovedChange = function (childKey, snapshot) {\n return new Change(Change.CHILD_REMOVED, snapshot, childKey);\n };\n /**\n * @param {string} childKey\n * @param {!Node} newSnapshot\n * @param {!Node} oldSnapshot\n * @return {!Change}\n */\n Change.childChangedChange = function (childKey, newSnapshot, oldSnapshot) {\n return new Change(Change.CHILD_CHANGED, newSnapshot, childKey, oldSnapshot);\n };\n /**\n * @param {string} childKey\n * @param {!Node} snapshot\n * @return {!Change}\n */\n Change.childMovedChange = function (childKey, snapshot) {\n return new Change(Change.CHILD_MOVED, snapshot, childKey);\n };\n //event types\n /** Event type for a child added */\n Change.CHILD_ADDED = 'child_added';\n /** Event type for a child removed */\n Change.CHILD_REMOVED = 'child_removed';\n /** Event type for a child changed */\n Change.CHILD_CHANGED = 'child_changed';\n /** Event type for a child moved */\n Change.CHILD_MOVED = 'child_moved';\n /** Event type for a value change */\n Change.VALUE = 'value';\n return Change;\n}());\nexports.Change = Change;\n\n//# sourceMappingURL=Change.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/Change.js\n// module id = 9\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Index_1 = require(\"./Index\");\nvar Node_1 = require(\"../Node\");\nvar util_1 = require(\"../../util/util\");\nvar util_2 = require(\"@firebase/util\");\nvar __EMPTY_NODE;\nvar KeyIndex = /** @class */ (function (_super) {\n __extends(KeyIndex, _super);\n function KeyIndex() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(KeyIndex, \"__EMPTY_NODE\", {\n get: function () {\n return __EMPTY_NODE;\n },\n set: function (val) {\n __EMPTY_NODE = val;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.compare = function (a, b) {\n return util_1.nameCompare(a.name, b.name);\n };\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.isDefinedOn = function (node) {\n // We could probably return true here (since every node has a key), but it's never called\n // so just leaving unimplemented for now.\n throw util_2.assertionError('KeyIndex.isDefinedOn not expected to be called.');\n };\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\n return false; // The key for a node never changes.\n };\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.minPost = function () {\n return Node_1.NamedNode.MIN;\n };\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.maxPost = function () {\n // TODO: This should really be created once and cached in a static property, but\n // NamedNode isn't defined yet, so I can't use it in a static. Bleh.\n return new Node_1.NamedNode(util_1.MAX_NAME, __EMPTY_NODE);\n };\n /**\n * @param {*} indexValue\n * @param {string} name\n * @return {!NamedNode}\n */\n KeyIndex.prototype.makePost = function (indexValue, name) {\n util_2.assert(typeof indexValue === 'string', 'KeyIndex indexValue must always be a string.');\n // We just use empty node, but it'll never be compared, since our comparator only looks at name.\n return new Node_1.NamedNode(indexValue, __EMPTY_NODE);\n };\n /**\n * @return {!string} String representation for inclusion in a query spec\n */\n KeyIndex.prototype.toString = function () {\n return '.key';\n };\n return KeyIndex;\n}(Index_1.Index));\nexports.KeyIndex = KeyIndex;\nexports.KEY_INDEX = new KeyIndex();\n\n//# sourceMappingURL=KeyIndex.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/KeyIndex.js\n// module id = 10\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChildrenNode_1 = require(\"./ChildrenNode\");\nvar LeafNode_1 = require(\"./LeafNode\");\nvar Node_1 = require(\"./Node\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar childSet_1 = require(\"./childSet\");\nvar comparators_1 = require(\"./comparators\");\nvar IndexMap_1 = require(\"./IndexMap\");\nvar PriorityIndex_1 = require(\"./indexes/PriorityIndex\");\nvar USE_HINZE = true;\n/**\n * Constructs a snapshot node representing the passed JSON and returns it.\n * @param {*} json JSON to create a node for.\n * @param {?string|?number=} priority Optional priority to use. This will be ignored if the\n * passed JSON contains a .priority property.\n * @return {!Node}\n */\nfunction nodeFromJSON(json, priority) {\n if (priority === void 0) { priority = null; }\n if (json === null) {\n return ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n if (typeof json === 'object' && '.priority' in json) {\n priority = json['.priority'];\n }\n util_2.assert(priority === null ||\n typeof priority === 'string' ||\n typeof priority === 'number' ||\n (typeof priority === 'object' && '.sv' in priority), 'Invalid priority type found: ' + typeof priority);\n if (typeof json === 'object' && '.value' in json && json['.value'] !== null) {\n json = json['.value'];\n }\n // Valid leaf nodes include non-objects or server-value wrapper objects\n if (typeof json !== 'object' || '.sv' in json) {\n var jsonLeaf = json;\n return new LeafNode_1.LeafNode(jsonLeaf, nodeFromJSON(priority));\n }\n if (!(json instanceof Array) && USE_HINZE) {\n var children_1 = [];\n var childrenHavePriority_1 = false;\n var hinzeJsonObj_1 = json;\n util_1.forEach(hinzeJsonObj_1, function (key, child) {\n if (typeof key !== 'string' || key.substring(0, 1) !== '.') {\n // Ignore metadata nodes\n var childNode = nodeFromJSON(hinzeJsonObj_1[key]);\n if (!childNode.isEmpty()) {\n childrenHavePriority_1 =\n childrenHavePriority_1 || !childNode.getPriority().isEmpty();\n children_1.push(new Node_1.NamedNode(key, childNode));\n }\n }\n });\n if (children_1.length == 0) {\n return ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n var childSet = childSet_1.buildChildSet(children_1, comparators_1.NAME_ONLY_COMPARATOR, function (namedNode) { return namedNode.name; }, comparators_1.NAME_COMPARATOR);\n if (childrenHavePriority_1) {\n var sortedChildSet = childSet_1.buildChildSet(children_1, PriorityIndex_1.PRIORITY_INDEX.getCompare());\n return new ChildrenNode_1.ChildrenNode(childSet, nodeFromJSON(priority), new IndexMap_1.IndexMap({ '.priority': sortedChildSet }, { '.priority': PriorityIndex_1.PRIORITY_INDEX }));\n }\n else {\n return new ChildrenNode_1.ChildrenNode(childSet, nodeFromJSON(priority), IndexMap_1.IndexMap.Default);\n }\n }\n else {\n var node_1 = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var jsonObj_1 = json;\n util_1.forEach(jsonObj_1, function (key, childData) {\n if (util_1.contains(jsonObj_1, key)) {\n if (key.substring(0, 1) !== '.') {\n // ignore metadata nodes.\n var childNode = nodeFromJSON(childData);\n if (childNode.isLeafNode() || !childNode.isEmpty())\n node_1 = node_1.updateImmediateChild(key, childNode);\n }\n }\n });\n return node_1.updatePriority(nodeFromJSON(priority));\n }\n}\nexports.nodeFromJSON = nodeFromJSON;\nPriorityIndex_1.setNodeFromJSON(nodeFromJSON);\n\n//# sourceMappingURL=nodeFromJSON.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/nodeFromJSON.js\n// module id = 11\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DOMStorageWrapper_1 = require(\"./DOMStorageWrapper\");\nvar MemoryStorage_1 = require(\"./MemoryStorage\");\n/**\n * Helper to create a DOMStorageWrapper or else fall back to MemoryStorage.\n * TODO: Once MemoryStorage and DOMStorageWrapper have a shared interface this method annotation should change\n * to reflect this type\n *\n * @param {string} domStorageName Name of the underlying storage object\n * (e.g. 'localStorage' or 'sessionStorage').\n * @return {?} Turning off type information until a common interface is defined.\n */\nvar createStoragefor = function (domStorageName) {\n try {\n // NOTE: just accessing \"localStorage\" or \"window['localStorage']\" may throw a security exception,\n // so it must be inside the try/catch.\n if (typeof window !== 'undefined' &&\n typeof window[domStorageName] !== 'undefined') {\n // Need to test cache. Just because it's here doesn't mean it works\n var domStorage = window[domStorageName];\n domStorage.setItem('firebase:sentinel', 'cache');\n domStorage.removeItem('firebase:sentinel');\n return new DOMStorageWrapper_1.DOMStorageWrapper(domStorage);\n }\n }\n catch (e) { }\n // Failed to create wrapper. Just return in-memory storage.\n // TODO: log?\n return new MemoryStorage_1.MemoryStorage();\n};\n/** A storage object that lasts across sessions */\nexports.PersistentStorage = createStoragefor('localStorage');\n/** A storage object that only lasts one session */\nexports.SessionStorage = createStoragefor('sessionStorage');\n\n//# sourceMappingURL=storage.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/storage/storage.js\n// module id = 12\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PROTOCOL_VERSION = '5';\nexports.VERSION_PARAM = 'v';\nexports.TRANSPORT_SESSION_PARAM = 's';\nexports.REFERER_PARAM = 'r';\nexports.FORGE_REF = 'f';\nexports.FORGE_DOMAIN = 'firebaseio.com';\nexports.LAST_SESSION_PARAM = 'ls';\nexports.WEBSOCKET = 'websocket';\nexports.LONG_POLLING = 'long_polling';\n\n//# sourceMappingURL=Constants.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/Constants.js\n// module id = 13\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Node_1 = require(\"../Node\");\nvar util_1 = require(\"../../util/util\");\n/**\n *\n * @constructor\n */\nvar Index = /** @class */ (function () {\n function Index() {\n }\n /**\n * @return {function(!NamedNode, !NamedNode):number} A standalone comparison function for\n * this index\n */\n Index.prototype.getCompare = function () {\n return this.compare.bind(this);\n };\n /**\n * Given a before and after value for a node, determine if the indexed value has changed. Even if they are different,\n * it's possible that the changes are isolated to parts of the snapshot that are not indexed.\n *\n * @param {!Node} oldNode\n * @param {!Node} newNode\n * @return {boolean} True if the portion of the snapshot being indexed changed between oldNode and newNode\n */\n Index.prototype.indexedValueChanged = function (oldNode, newNode) {\n var oldWrapped = new Node_1.NamedNode(util_1.MIN_NAME, oldNode);\n var newWrapped = new Node_1.NamedNode(util_1.MIN_NAME, newNode);\n return this.compare(oldWrapped, newWrapped) !== 0;\n };\n /**\n * @return {!NamedNode} a node wrapper that will sort equal to or less than\n * any other node wrapper, using this index\n */\n Index.prototype.minPost = function () {\n return Node_1.NamedNode.MIN;\n };\n return Index;\n}());\nexports.Index = Index;\n\n//# sourceMappingURL=Index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/Index.js\n// module id = 14\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar snap_1 = require(\"./snap\");\nvar __childrenNodeConstructor;\n/**\n * LeafNode is a class for storing leaf nodes in a DataSnapshot. It\n * implements Node and stores the value of the node (a string,\n * number, or boolean) accessible via getValue().\n */\nvar LeafNode = /** @class */ (function () {\n /**\n * @implements {Node}\n * @param {!(string|number|boolean|Object)} value_ The value to store in this leaf node.\n * The object type is possible in the event of a deferred value\n * @param {!Node=} priorityNode_ The priority of this node.\n */\n function LeafNode(value_, priorityNode_) {\n if (priorityNode_ === void 0) { priorityNode_ = LeafNode.__childrenNodeConstructor.EMPTY_NODE; }\n this.value_ = value_;\n this.priorityNode_ = priorityNode_;\n this.lazyHash_ = null;\n util_1.assert(this.value_ !== undefined && this.value_ !== null, \"LeafNode shouldn't be created with null/undefined value.\");\n snap_1.validatePriorityNode(this.priorityNode_);\n }\n Object.defineProperty(LeafNode, \"__childrenNodeConstructor\", {\n get: function () {\n return __childrenNodeConstructor;\n },\n set: function (val) {\n __childrenNodeConstructor = val;\n },\n enumerable: true,\n configurable: true\n });\n /** @inheritDoc */\n LeafNode.prototype.isLeafNode = function () {\n return true;\n };\n /** @inheritDoc */\n LeafNode.prototype.getPriority = function () {\n return this.priorityNode_;\n };\n /** @inheritDoc */\n LeafNode.prototype.updatePriority = function (newPriorityNode) {\n return new LeafNode(this.value_, newPriorityNode);\n };\n /** @inheritDoc */\n LeafNode.prototype.getImmediateChild = function (childName) {\n // Hack to treat priority as a regular child\n if (childName === '.priority') {\n return this.priorityNode_;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\n }\n };\n /** @inheritDoc */\n LeafNode.prototype.getChild = function (path) {\n if (path.isEmpty()) {\n return this;\n }\n else if (path.getFront() === '.priority') {\n return this.priorityNode_;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\n }\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.hasChild = function () {\n return false;\n };\n /** @inheritDoc */\n LeafNode.prototype.getPredecessorChildName = function (childName, childNode) {\n return null;\n };\n /** @inheritDoc */\n LeafNode.prototype.updateImmediateChild = function (childName, newChildNode) {\n if (childName === '.priority') {\n return this.updatePriority(newChildNode);\n }\n else if (newChildNode.isEmpty() && childName !== '.priority') {\n return this;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE\n .updateImmediateChild(childName, newChildNode)\n .updatePriority(this.priorityNode_);\n }\n };\n /** @inheritDoc */\n LeafNode.prototype.updateChild = function (path, newChildNode) {\n var front = path.getFront();\n if (front === null) {\n return newChildNode;\n }\n else if (newChildNode.isEmpty() && front !== '.priority') {\n return this;\n }\n else {\n util_1.assert(front !== '.priority' || path.getLength() === 1, '.priority must be the last token in a path');\n return this.updateImmediateChild(front, LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateChild(path.popFront(), newChildNode));\n }\n };\n /** @inheritDoc */\n LeafNode.prototype.isEmpty = function () {\n return false;\n };\n /** @inheritDoc */\n LeafNode.prototype.numChildren = function () {\n return 0;\n };\n /** @inheritDoc */\n LeafNode.prototype.forEachChild = function (index, action) {\n return false;\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.val = function (exportFormat) {\n if (exportFormat && !this.getPriority().isEmpty())\n return {\n '.value': this.getValue(),\n '.priority': this.getPriority().val()\n };\n else\n return this.getValue();\n };\n /** @inheritDoc */\n LeafNode.prototype.hash = function () {\n if (this.lazyHash_ === null) {\n var toHash = '';\n if (!this.priorityNode_.isEmpty())\n toHash +=\n 'priority:' +\n snap_1.priorityHashText(this.priorityNode_.val()) +\n ':';\n var type = typeof this.value_;\n toHash += type + ':';\n if (type === 'number') {\n toHash += util_2.doubleToIEEE754String(this.value_);\n }\n else {\n toHash += this.value_;\n }\n this.lazyHash_ = util_2.sha1(toHash);\n }\n return this.lazyHash_;\n };\n /**\n * Returns the value of the leaf node.\n * @return {Object|string|number|boolean} The value of the node.\n */\n LeafNode.prototype.getValue = function () {\n return this.value_;\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.compareTo = function (other) {\n if (other === LeafNode.__childrenNodeConstructor.EMPTY_NODE) {\n return 1;\n }\n else if (other instanceof LeafNode.__childrenNodeConstructor) {\n return -1;\n }\n else {\n util_1.assert(other.isLeafNode(), 'Unknown node type');\n return this.compareToLeafNode_(other);\n }\n };\n /**\n * Comparison specifically for two leaf nodes\n * @param {!LeafNode} otherLeaf\n * @return {!number}\n * @private\n */\n LeafNode.prototype.compareToLeafNode_ = function (otherLeaf) {\n var otherLeafType = typeof otherLeaf.value_;\n var thisLeafType = typeof this.value_;\n var otherIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(otherLeafType);\n var thisIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(thisLeafType);\n util_1.assert(otherIndex >= 0, 'Unknown leaf type: ' + otherLeafType);\n util_1.assert(thisIndex >= 0, 'Unknown leaf type: ' + thisLeafType);\n if (otherIndex === thisIndex) {\n // Same type, compare values\n if (thisLeafType === 'object') {\n // Deferred value nodes are all equal, but we should also never get to this point...\n return 0;\n }\n else {\n // Note that this works because true > false, all others are number or string comparisons\n if (this.value_ < otherLeaf.value_) {\n return -1;\n }\n else if (this.value_ === otherLeaf.value_) {\n return 0;\n }\n else {\n return 1;\n }\n }\n }\n else {\n return thisIndex - otherIndex;\n }\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.withIndex = function () {\n return this;\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.isIndexed = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.equals = function (other) {\n /**\n * @inheritDoc\n */\n if (other === this) {\n return true;\n }\n else if (other.isLeafNode()) {\n var otherLeaf = other;\n return (this.value_ === otherLeaf.value_ &&\n this.priorityNode_.equals(otherLeaf.priorityNode_));\n }\n else {\n return false;\n }\n };\n /**\n * The sort order for comparing leaf nodes of different types. If two leaf nodes have\n * the same type, the comparison falls back to their value\n * @type {Array.}\n * @const\n */\n LeafNode.VALUE_TYPE_ORDER = ['object', 'boolean', 'number', 'string'];\n return LeafNode;\n}());\nexports.LeafNode = LeafNode;\n\n//# sourceMappingURL=LeafNode.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/LeafNode.js\n// module id = 15\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * An iterator over an LLRBNode.\n */\nvar SortedMapIterator = /** @class */ (function () {\n /**\n * @template K, V, T\n * @param {LLRBNode|LLRBEmptyNode} node Node to iterate.\n * @param {?K} startKey\n * @param {function(K, K): number} comparator\n * @param {boolean} isReverse_ Whether or not to iterate in reverse\n * @param {(function(K, V):T)=} resultGenerator_\n */\n function SortedMapIterator(node, startKey, comparator, isReverse_, resultGenerator_) {\n if (resultGenerator_ === void 0) { resultGenerator_ = null; }\n this.isReverse_ = isReverse_;\n this.resultGenerator_ = resultGenerator_;\n /** @private\n * @type {Array.}\n */\n this.nodeStack_ = [];\n var cmp = 1;\n while (!node.isEmpty()) {\n node = node;\n cmp = startKey ? comparator(node.key, startKey) : 1;\n // flip the comparison if we're going in reverse\n if (isReverse_)\n cmp *= -1;\n if (cmp < 0) {\n // This node is less than our start key. ignore it\n if (this.isReverse_) {\n node = node.left;\n }\n else {\n node = node.right;\n }\n }\n else if (cmp === 0) {\n // This node is exactly equal to our start key. Push it on the stack, but stop iterating;\n this.nodeStack_.push(node);\n break;\n }\n else {\n // This node is greater than our start key, add it to the stack and move to the next one\n this.nodeStack_.push(node);\n if (this.isReverse_) {\n node = node.right;\n }\n else {\n node = node.left;\n }\n }\n }\n }\n SortedMapIterator.prototype.getNext = function () {\n if (this.nodeStack_.length === 0)\n return null;\n var node = this.nodeStack_.pop();\n var result;\n if (this.resultGenerator_)\n result = this.resultGenerator_(node.key, node.value);\n else\n result = { key: node.key, value: node.value };\n if (this.isReverse_) {\n node = node.left;\n while (!node.isEmpty()) {\n this.nodeStack_.push(node);\n node = node.right;\n }\n }\n else {\n node = node.right;\n while (!node.isEmpty()) {\n this.nodeStack_.push(node);\n node = node.left;\n }\n }\n return result;\n };\n SortedMapIterator.prototype.hasNext = function () {\n return this.nodeStack_.length > 0;\n };\n SortedMapIterator.prototype.peek = function () {\n if (this.nodeStack_.length === 0)\n return null;\n var node = this.nodeStack_[this.nodeStack_.length - 1];\n if (this.resultGenerator_) {\n return this.resultGenerator_(node.key, node.value);\n }\n else {\n return { key: node.key, value: node.value };\n }\n };\n return SortedMapIterator;\n}());\nexports.SortedMapIterator = SortedMapIterator;\n/**\n * Represents a node in a Left-leaning Red-Black tree.\n */\nvar LLRBNode = /** @class */ (function () {\n /**\n * @template K, V\n * @param {!K} key Key associated with this node.\n * @param {!V} value Value associated with this node.\n * @param {?boolean} color Whether this node is red.\n * @param {?(LLRBNode|LLRBEmptyNode)=} left Left child.\n * @param {?(LLRBNode|LLRBEmptyNode)=} right Right child.\n */\n function LLRBNode(key, value, color, left, right) {\n this.key = key;\n this.value = value;\n this.color = color != null ? color : LLRBNode.RED;\n this.left =\n left != null ? left : SortedMap.EMPTY_NODE;\n this.right =\n right != null ? right : SortedMap.EMPTY_NODE;\n }\n /**\n * Returns a copy of the current node, optionally replacing pieces of it.\n *\n * @param {?K} key New key for the node, or null.\n * @param {?V} value New value for the node, or null.\n * @param {?boolean} color New color for the node, or null.\n * @param {?LLRBNode|LLRBEmptyNode} left New left child for the node, or null.\n * @param {?LLRBNode|LLRBEmptyNode} right New right child for the node, or null.\n * @return {!LLRBNode} The node copy.\n */\n LLRBNode.prototype.copy = function (key, value, color, left, right) {\n return new LLRBNode(key != null ? key : this.key, value != null ? value : this.value, color != null ? color : this.color, left != null ? left : this.left, right != null ? right : this.right);\n };\n /**\n * @return {number} The total number of nodes in the tree.\n */\n LLRBNode.prototype.count = function () {\n return this.left.count() + 1 + this.right.count();\n };\n /**\n * @return {boolean} True if the tree is empty.\n */\n LLRBNode.prototype.isEmpty = function () {\n return false;\n };\n /**\n * Traverses the tree in key order and calls the specified action function\n * for each node.\n *\n * @param {function(!K, !V):*} action Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @return {*} The first truthy value returned by action, or the last falsey\n * value returned by action\n */\n LLRBNode.prototype.inorderTraversal = function (action) {\n return (this.left.inorderTraversal(action) ||\n action(this.key, this.value) ||\n this.right.inorderTraversal(action));\n };\n /**\n * Traverses the tree in reverse key order and calls the specified action function\n * for each node.\n *\n * @param {function(!Object, !Object)} action Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @return {*} True if traversal was aborted.\n */\n LLRBNode.prototype.reverseTraversal = function (action) {\n return (this.right.reverseTraversal(action) ||\n action(this.key, this.value) ||\n this.left.reverseTraversal(action));\n };\n /**\n * @return {!Object} The minimum node in the tree.\n * @private\n */\n LLRBNode.prototype.min_ = function () {\n if (this.left.isEmpty()) {\n return this;\n }\n else {\n return this.left.min_();\n }\n };\n /**\n * @return {!K} The maximum key in the tree.\n */\n LLRBNode.prototype.minKey = function () {\n return this.min_().key;\n };\n /**\n * @return {!K} The maximum key in the tree.\n */\n LLRBNode.prototype.maxKey = function () {\n if (this.right.isEmpty()) {\n return this.key;\n }\n else {\n return this.right.maxKey();\n }\n };\n /**\n *\n * @param {!Object} key Key to insert.\n * @param {!Object} value Value to insert.\n * @param {Comparator} comparator Comparator.\n * @return {!LLRBNode} New tree, with the key/value added.\n */\n LLRBNode.prototype.insert = function (key, value, comparator) {\n var cmp, n;\n n = this;\n cmp = comparator(key, n.key);\n if (cmp < 0) {\n n = n.copy(null, null, null, n.left.insert(key, value, comparator), null);\n }\n else if (cmp === 0) {\n n = n.copy(null, value, null, null, null);\n }\n else {\n n = n.copy(null, null, null, null, n.right.insert(key, value, comparator));\n }\n return n.fixUp_();\n };\n /**\n * @private\n * @return {!LLRBNode|LLRBEmptyNode} New tree, with the minimum key removed.\n */\n LLRBNode.prototype.removeMin_ = function () {\n if (this.left.isEmpty()) {\n return SortedMap.EMPTY_NODE;\n }\n var n = this;\n if (!n.left.isRed_() && !n.left.left.isRed_())\n n = n.moveRedLeft_();\n n = n.copy(null, null, null, n.left.removeMin_(), null);\n return n.fixUp_();\n };\n /**\n * @param {!Object} key The key of the item to remove.\n * @param {Comparator} comparator Comparator.\n * @return {!LLRBNode|LLRBEmptyNode} New tree, with the specified item removed.\n */\n LLRBNode.prototype.remove = function (key, comparator) {\n var n, smallest;\n n = this;\n if (comparator(key, n.key) < 0) {\n if (!n.left.isEmpty() && !n.left.isRed_() && !n.left.left.isRed_()) {\n n = n.moveRedLeft_();\n }\n n = n.copy(null, null, null, n.left.remove(key, comparator), null);\n }\n else {\n if (n.left.isRed_())\n n = n.rotateRight_();\n if (!n.right.isEmpty() && !n.right.isRed_() && !n.right.left.isRed_()) {\n n = n.moveRedRight_();\n }\n if (comparator(key, n.key) === 0) {\n if (n.right.isEmpty()) {\n return SortedMap.EMPTY_NODE;\n }\n else {\n smallest = n.right.min_();\n n = n.copy(smallest.key, smallest.value, null, null, n.right.removeMin_());\n }\n }\n n = n.copy(null, null, null, null, n.right.remove(key, comparator));\n }\n return n.fixUp_();\n };\n /**\n * @private\n * @return {boolean} Whether this is a RED node.\n */\n LLRBNode.prototype.isRed_ = function () {\n return this.color;\n };\n /**\n * @private\n * @return {!LLRBNode} New tree after performing any needed rotations.\n */\n LLRBNode.prototype.fixUp_ = function () {\n var n = this;\n if (n.right.isRed_() && !n.left.isRed_())\n n = n.rotateLeft_();\n if (n.left.isRed_() && n.left.left.isRed_())\n n = n.rotateRight_();\n if (n.left.isRed_() && n.right.isRed_())\n n = n.colorFlip_();\n return n;\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after moveRedLeft.\n */\n LLRBNode.prototype.moveRedLeft_ = function () {\n var n = this.colorFlip_();\n if (n.right.left.isRed_()) {\n n = n.copy(null, null, null, null, n.right.rotateRight_());\n n = n.rotateLeft_();\n n = n.colorFlip_();\n }\n return n;\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after moveRedRight.\n */\n LLRBNode.prototype.moveRedRight_ = function () {\n var n = this.colorFlip_();\n if (n.left.left.isRed_()) {\n n = n.rotateRight_();\n n = n.colorFlip_();\n }\n return n;\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after rotateLeft.\n */\n LLRBNode.prototype.rotateLeft_ = function () {\n var nl = this.copy(null, null, LLRBNode.RED, null, this.right.left);\n return this.right.copy(null, null, this.color, nl, null);\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after rotateRight.\n */\n LLRBNode.prototype.rotateRight_ = function () {\n var nr = this.copy(null, null, LLRBNode.RED, this.left.right, null);\n return this.left.copy(null, null, this.color, null, nr);\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after colorFlip.\n */\n LLRBNode.prototype.colorFlip_ = function () {\n var left = this.left.copy(null, null, !this.left.color, null, null);\n var right = this.right.copy(null, null, !this.right.color, null, null);\n return this.copy(null, null, !this.color, left, right);\n };\n /**\n * For testing.\n *\n * @private\n * @return {boolean} True if all is well.\n */\n LLRBNode.prototype.checkMaxDepth_ = function () {\n var blackDepth = this.check_();\n return Math.pow(2.0, blackDepth) <= this.count() + 1;\n };\n /**\n * @private\n * @return {number} Not sure what this returns exactly. :-).\n */\n LLRBNode.prototype.check_ = function () {\n var blackDepth;\n if (this.isRed_() && this.left.isRed_()) {\n throw new Error('Red node has red child(' + this.key + ',' + this.value + ')');\n }\n if (this.right.isRed_()) {\n throw new Error('Right child of (' + this.key + ',' + this.value + ') is red');\n }\n blackDepth = this.left.check_();\n if (blackDepth !== this.right.check_()) {\n throw new Error('Black depths differ');\n }\n else {\n return blackDepth + (this.isRed_() ? 0 : 1);\n }\n };\n LLRBNode.RED = true;\n LLRBNode.BLACK = false;\n return LLRBNode;\n}());\nexports.LLRBNode = LLRBNode;\n/**\n * Represents an empty node (a leaf node in the Red-Black Tree).\n */\nvar LLRBEmptyNode = /** @class */ (function () {\n function LLRBEmptyNode() {\n }\n /**\n * Returns a copy of the current node.\n *\n * @return {!LLRBEmptyNode} The node copy.\n */\n LLRBEmptyNode.prototype.copy = function (key, value, color, left, right) {\n return this;\n };\n /**\n * Returns a copy of the tree, with the specified key/value added.\n *\n * @param {!K} key Key to be added.\n * @param {!V} value Value to be added.\n * @param {Comparator} comparator Comparator.\n * @return {!LLRBNode} New tree, with item added.\n */\n LLRBEmptyNode.prototype.insert = function (key, value, comparator) {\n return new LLRBNode(key, value, null);\n };\n /**\n * Returns a copy of the tree, with the specified key removed.\n *\n * @param {!K} key The key to remove.\n * @param {Comparator} comparator Comparator.\n * @return {!LLRBEmptyNode} New tree, with item removed.\n */\n LLRBEmptyNode.prototype.remove = function (key, comparator) {\n return this;\n };\n /**\n * @return {number} The total number of nodes in the tree.\n */\n LLRBEmptyNode.prototype.count = function () {\n return 0;\n };\n /**\n * @return {boolean} True if the tree is empty.\n */\n LLRBEmptyNode.prototype.isEmpty = function () {\n return true;\n };\n /**\n * Traverses the tree in key order and calls the specified action function\n * for each node.\n *\n * @param {function(!K, !V):*} action Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @return {boolean} True if traversal was aborted.\n */\n LLRBEmptyNode.prototype.inorderTraversal = function (action) {\n return false;\n };\n /**\n * Traverses the tree in reverse key order and calls the specified action function\n * for each node.\n *\n * @param {function(!K, !V)} action Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @return {boolean} True if traversal was aborted.\n */\n LLRBEmptyNode.prototype.reverseTraversal = function (action) {\n return false;\n };\n /**\n * @return {null}\n */\n LLRBEmptyNode.prototype.minKey = function () {\n return null;\n };\n /**\n * @return {null}\n */\n LLRBEmptyNode.prototype.maxKey = function () {\n return null;\n };\n /**\n * @private\n * @return {number} Not sure what this returns exactly. :-).\n */\n LLRBEmptyNode.prototype.check_ = function () {\n return 0;\n };\n /**\n * @private\n * @return {boolean} Whether this node is red.\n */\n LLRBEmptyNode.prototype.isRed_ = function () {\n return false;\n };\n return LLRBEmptyNode;\n}());\nexports.LLRBEmptyNode = LLRBEmptyNode;\n/**\n * An immutable sorted map implementation, based on a Left-leaning Red-Black\n * tree.\n */\nvar SortedMap = /** @class */ (function () {\n /**\n * @template K, V\n * @param {function(K, K):number} comparator_ Key comparator.\n * @param {LLRBNode=} root_ (Optional) Root node for the map.\n */\n function SortedMap(comparator_, root_) {\n if (root_ === void 0) { root_ = SortedMap.EMPTY_NODE; }\n this.comparator_ = comparator_;\n this.root_ = root_;\n }\n /**\n * Returns a copy of the map, with the specified key/value added or replaced.\n * (TODO: We should perhaps rename this method to 'put')\n *\n * @param {!K} key Key to be added.\n * @param {!V} value Value to be added.\n * @return {!SortedMap.} New map, with item added.\n */\n SortedMap.prototype.insert = function (key, value) {\n return new SortedMap(this.comparator_, this.root_\n .insert(key, value, this.comparator_)\n .copy(null, null, LLRBNode.BLACK, null, null));\n };\n /**\n * Returns a copy of the map, with the specified key removed.\n *\n * @param {!K} key The key to remove.\n * @return {!SortedMap.} New map, with item removed.\n */\n SortedMap.prototype.remove = function (key) {\n return new SortedMap(this.comparator_, this.root_\n .remove(key, this.comparator_)\n .copy(null, null, LLRBNode.BLACK, null, null));\n };\n /**\n * Returns the value of the node with the given key, or null.\n *\n * @param {!K} key The key to look up.\n * @return {?V} The value of the node with the given key, or null if the\n * key doesn't exist.\n */\n SortedMap.prototype.get = function (key) {\n var cmp;\n var node = this.root_;\n while (!node.isEmpty()) {\n cmp = this.comparator_(key, node.key);\n if (cmp === 0) {\n return node.value;\n }\n else if (cmp < 0) {\n node = node.left;\n }\n else if (cmp > 0) {\n node = node.right;\n }\n }\n return null;\n };\n /**\n * Returns the key of the item *before* the specified key, or null if key is the first item.\n * @param {K} key The key to find the predecessor of\n * @return {?K} The predecessor key.\n */\n SortedMap.prototype.getPredecessorKey = function (key) {\n var cmp, node = this.root_, rightParent = null;\n while (!node.isEmpty()) {\n cmp = this.comparator_(key, node.key);\n if (cmp === 0) {\n if (!node.left.isEmpty()) {\n node = node.left;\n while (!node.right.isEmpty())\n node = node.right;\n return node.key;\n }\n else if (rightParent) {\n return rightParent.key;\n }\n else {\n return null; // first item.\n }\n }\n else if (cmp < 0) {\n node = node.left;\n }\n else if (cmp > 0) {\n rightParent = node;\n node = node.right;\n }\n }\n throw new Error('Attempted to find predecessor key for a nonexistent key. What gives?');\n };\n /**\n * @return {boolean} True if the map is empty.\n */\n SortedMap.prototype.isEmpty = function () {\n return this.root_.isEmpty();\n };\n /**\n * @return {number} The total number of nodes in the map.\n */\n SortedMap.prototype.count = function () {\n return this.root_.count();\n };\n /**\n * @return {?K} The minimum key in the map.\n */\n SortedMap.prototype.minKey = function () {\n return this.root_.minKey();\n };\n /**\n * @return {?K} The maximum key in the map.\n */\n SortedMap.prototype.maxKey = function () {\n return this.root_.maxKey();\n };\n /**\n * Traverses the map in key order and calls the specified action function\n * for each key/value pair.\n *\n * @param {function(!K, !V):*} action Callback function to be called\n * for each key/value pair. If action returns true, traversal is aborted.\n * @return {*} The first truthy value returned by action, or the last falsey\n * value returned by action\n */\n SortedMap.prototype.inorderTraversal = function (action) {\n return this.root_.inorderTraversal(action);\n };\n /**\n * Traverses the map in reverse key order and calls the specified action function\n * for each key/value pair.\n *\n * @param {function(!Object, !Object)} action Callback function to be called\n * for each key/value pair. If action returns true, traversal is aborted.\n * @return {*} True if the traversal was aborted.\n */\n SortedMap.prototype.reverseTraversal = function (action) {\n return this.root_.reverseTraversal(action);\n };\n /**\n * Returns an iterator over the SortedMap.\n * @template T\n * @param {(function(K, V):T)=} resultGenerator\n * @return {SortedMapIterator.} The iterator.\n */\n SortedMap.prototype.getIterator = function (resultGenerator) {\n return new SortedMapIterator(this.root_, null, this.comparator_, false, resultGenerator);\n };\n SortedMap.prototype.getIteratorFrom = function (key, resultGenerator) {\n return new SortedMapIterator(this.root_, key, this.comparator_, false, resultGenerator);\n };\n SortedMap.prototype.getReverseIteratorFrom = function (key, resultGenerator) {\n return new SortedMapIterator(this.root_, key, this.comparator_, true, resultGenerator);\n };\n SortedMap.prototype.getReverseIterator = function (resultGenerator) {\n return new SortedMapIterator(this.root_, null, this.comparator_, true, resultGenerator);\n };\n /**\n * Always use the same empty node, to reduce memory.\n * @const\n */\n SortedMap.EMPTY_NODE = new LLRBEmptyNode();\n return SortedMap;\n}());\nexports.SortedMap = SortedMap;\n\n//# sourceMappingURL=SortedMap.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/SortedMap.js\n// module id = 16\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ServerValues_1 = require(\"./util/ServerValues\");\nvar nodeFromJSON_1 = require(\"./snap/nodeFromJSON\");\nvar Path_1 = require(\"./util/Path\");\nvar SparseSnapshotTree_1 = require(\"./SparseSnapshotTree\");\nvar SyncTree_1 = require(\"./SyncTree\");\nvar SnapshotHolder_1 = require(\"./SnapshotHolder\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"./util/util\");\nvar util_3 = require(\"@firebase/util\");\nvar AuthTokenProvider_1 = require(\"./AuthTokenProvider\");\nvar StatsManager_1 = require(\"./stats/StatsManager\");\nvar StatsReporter_1 = require(\"./stats/StatsReporter\");\nvar StatsListener_1 = require(\"./stats/StatsListener\");\nvar EventQueue_1 = require(\"./view/EventQueue\");\nvar PersistentConnection_1 = require(\"./PersistentConnection\");\nvar ReadonlyRestClient_1 = require(\"./ReadonlyRestClient\");\nvar Database_1 = require(\"../api/Database\");\nvar INTERRUPT_REASON = 'repo_interrupt';\n/**\n * A connection to a single data repository.\n */\nvar Repo = /** @class */ (function () {\n /**\n * @param {!RepoInfo} repoInfo_\n * @param {boolean} forceRestClient\n * @param {!FirebaseApp} app\n */\n function Repo(repoInfo_, forceRestClient, app) {\n var _this = this;\n this.repoInfo_ = repoInfo_;\n this.app = app;\n this.dataUpdateCount = 0;\n this.statsListener_ = null;\n this.eventQueue_ = new EventQueue_1.EventQueue();\n this.nextWriteId_ = 1;\n this.interceptServerDataCallback_ = null;\n // A list of data pieces and paths to be set when this client disconnects.\n this.onDisconnect_ = new SparseSnapshotTree_1.SparseSnapshotTree();\n /**\n * TODO: This should be @private but it's used by test_access.js and internal.js\n * @type {?PersistentConnection}\n */\n this.persistentConnection_ = null;\n /** @type {!AuthTokenProvider} */\n var authTokenProvider = new AuthTokenProvider_1.AuthTokenProvider(app);\n this.stats_ = StatsManager_1.StatsManager.getCollection(repoInfo_);\n if (forceRestClient || util_2.beingCrawled()) {\n this.server_ = new ReadonlyRestClient_1.ReadonlyRestClient(this.repoInfo_, this.onDataUpdate_.bind(this), authTokenProvider);\n // Minor hack: Fire onConnect immediately, since there's no actual connection.\n setTimeout(this.onConnectStatus_.bind(this, true), 0);\n }\n else {\n var authOverride = app.options['databaseAuthVariableOverride'];\n // Validate authOverride\n if (typeof authOverride !== 'undefined' && authOverride !== null) {\n if (typeof authOverride !== 'object') {\n throw new Error('Only objects are supported for option databaseAuthVariableOverride');\n }\n try {\n util_1.stringify(authOverride);\n }\n catch (e) {\n throw new Error('Invalid authOverride provided: ' + e);\n }\n }\n this.persistentConnection_ = new PersistentConnection_1.PersistentConnection(this.repoInfo_, this.onDataUpdate_.bind(this), this.onConnectStatus_.bind(this), this.onServerInfoUpdate_.bind(this), authTokenProvider, authOverride);\n this.server_ = this.persistentConnection_;\n }\n authTokenProvider.addTokenChangeListener(function (token) {\n _this.server_.refreshAuthToken(token);\n });\n // In the case of multiple Repos for the same repoInfo (i.e. there are multiple Firebase.Contexts being used),\n // we only want to create one StatsReporter. As such, we'll report stats over the first Repo created.\n this.statsReporter_ = StatsManager_1.StatsManager.getOrCreateReporter(repoInfo_, function () { return new StatsReporter_1.StatsReporter(_this.stats_, _this.server_); });\n this.transactions_init_();\n // Used for .info.\n this.infoData_ = new SnapshotHolder_1.SnapshotHolder();\n this.infoSyncTree_ = new SyncTree_1.SyncTree({\n startListening: function (query, tag, currentHashFn, onComplete) {\n var infoEvents = [];\n var node = _this.infoData_.getNode(query.path);\n // This is possibly a hack, but we have different semantics for .info endpoints. We don't raise null events\n // on initial data...\n if (!node.isEmpty()) {\n infoEvents = _this.infoSyncTree_.applyServerOverwrite(query.path, node);\n setTimeout(function () {\n onComplete('ok');\n }, 0);\n }\n return infoEvents;\n },\n stopListening: function () { }\n });\n this.updateInfo_('connected', false);\n this.serverSyncTree_ = new SyncTree_1.SyncTree({\n startListening: function (query, tag, currentHashFn, onComplete) {\n _this.server_.listen(query, currentHashFn, tag, function (status, data) {\n var events = onComplete(status, data);\n _this.eventQueue_.raiseEventsForChangedPath(query.path, events);\n });\n // No synchronous events for network-backed sync trees\n return [];\n },\n stopListening: function (query, tag) {\n _this.server_.unlisten(query, tag);\n }\n });\n }\n /**\n * @return {string} The URL corresponding to the root of this Firebase.\n */\n Repo.prototype.toString = function () {\n return ((this.repoInfo_.secure ? 'https://' : 'http://') + this.repoInfo_.host);\n };\n /**\n * @return {!string} The namespace represented by the repo.\n */\n Repo.prototype.name = function () {\n return this.repoInfo_.namespace;\n };\n /**\n * @return {!number} The time in milliseconds, taking the server offset into account if we have one.\n */\n Repo.prototype.serverTime = function () {\n var offsetNode = this.infoData_.getNode(new Path_1.Path('.info/serverTimeOffset'));\n var offset = offsetNode.val() || 0;\n return new Date().getTime() + offset;\n };\n /**\n * Generate ServerValues using some variables from the repo object.\n * @return {!Object}\n */\n Repo.prototype.generateServerValues = function () {\n return ServerValues_1.generateWithValues({\n timestamp: this.serverTime()\n });\n };\n /**\n * Called by realtime when we get new messages from the server.\n *\n * @private\n * @param {string} pathString\n * @param {*} data\n * @param {boolean} isMerge\n * @param {?number} tag\n */\n Repo.prototype.onDataUpdate_ = function (pathString, data, isMerge, tag) {\n // For testing.\n this.dataUpdateCount++;\n var path = new Path_1.Path(pathString);\n data = this.interceptServerDataCallback_\n ? this.interceptServerDataCallback_(pathString, data)\n : data;\n var events = [];\n if (tag) {\n if (isMerge) {\n var taggedChildren = util_3.map(data, function (raw) {\n return nodeFromJSON_1.nodeFromJSON(raw);\n });\n events = this.serverSyncTree_.applyTaggedQueryMerge(path, taggedChildren, tag);\n }\n else {\n var taggedSnap = nodeFromJSON_1.nodeFromJSON(data);\n events = this.serverSyncTree_.applyTaggedQueryOverwrite(path, taggedSnap, tag);\n }\n }\n else if (isMerge) {\n var changedChildren = util_3.map(data, function (raw) {\n return nodeFromJSON_1.nodeFromJSON(raw);\n });\n events = this.serverSyncTree_.applyServerMerge(path, changedChildren);\n }\n else {\n var snap = nodeFromJSON_1.nodeFromJSON(data);\n events = this.serverSyncTree_.applyServerOverwrite(path, snap);\n }\n var affectedPath = path;\n if (events.length > 0) {\n // Since we have a listener outstanding for each transaction, receiving any events\n // is a proxy for some change having occurred.\n affectedPath = this.rerunTransactions_(path);\n }\n this.eventQueue_.raiseEventsForChangedPath(affectedPath, events);\n };\n /**\n * TODO: This should be @private but it's used by test_access.js and internal.js\n * @param {?function(!string, *):*} callback\n * @private\n */\n Repo.prototype.interceptServerData_ = function (callback) {\n this.interceptServerDataCallback_ = callback;\n };\n /**\n * @param {!boolean} connectStatus\n * @private\n */\n Repo.prototype.onConnectStatus_ = function (connectStatus) {\n this.updateInfo_('connected', connectStatus);\n if (connectStatus === false) {\n this.runOnDisconnectEvents_();\n }\n };\n /**\n * @param {!Object} updates\n * @private\n */\n Repo.prototype.onServerInfoUpdate_ = function (updates) {\n var _this = this;\n util_2.each(updates, function (value, key) {\n _this.updateInfo_(key, value);\n });\n };\n /**\n *\n * @param {!string} pathString\n * @param {*} value\n * @private\n */\n Repo.prototype.updateInfo_ = function (pathString, value) {\n var path = new Path_1.Path('/.info/' + pathString);\n var newNode = nodeFromJSON_1.nodeFromJSON(value);\n this.infoData_.updateSnapshot(path, newNode);\n var events = this.infoSyncTree_.applyServerOverwrite(path, newNode);\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n };\n /**\n * @return {!number}\n * @private\n */\n Repo.prototype.getNextWriteId_ = function () {\n return this.nextWriteId_++;\n };\n /**\n * @param {!Path} path\n * @param {*} newVal\n * @param {number|string|null} newPriority\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.setWithPriority = function (path, newVal, newPriority, onComplete) {\n var _this = this;\n this.log_('set', {\n path: path.toString(),\n value: newVal,\n priority: newPriority\n });\n // TODO: Optimize this behavior to either (a) store flag to skip resolving where possible and / or\n // (b) store unresolved paths on JSON parse\n var serverValues = this.generateServerValues();\n var newNodeUnresolved = nodeFromJSON_1.nodeFromJSON(newVal, newPriority);\n var newNode = ServerValues_1.resolveDeferredValueSnapshot(newNodeUnresolved, serverValues);\n var writeId = this.getNextWriteId_();\n var events = this.serverSyncTree_.applyUserOverwrite(path, newNode, writeId, true);\n this.eventQueue_.queueEvents(events);\n this.server_.put(path.toString(), newNodeUnresolved.val(/*export=*/ true), function (status, errorReason) {\n var success = status === 'ok';\n if (!success) {\n util_2.warn('set at ' + path + ' failed: ' + status);\n }\n var clearEvents = _this.serverSyncTree_.ackUserWrite(writeId, !success);\n _this.eventQueue_.raiseEventsForChangedPath(path, clearEvents);\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n var affectedPath = this.abortTransactions_(path);\n this.rerunTransactions_(affectedPath);\n // We queued the events above, so just flush the queue here\n this.eventQueue_.raiseEventsForChangedPath(affectedPath, []);\n };\n /**\n * @param {!Path} path\n * @param {!Object} childrenToMerge\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.update = function (path, childrenToMerge, onComplete) {\n var _this = this;\n this.log_('update', { path: path.toString(), value: childrenToMerge });\n // Start with our existing data and merge each child into it.\n var empty = true;\n var serverValues = this.generateServerValues();\n var changedChildren = {};\n util_3.forEach(childrenToMerge, function (changedKey, changedValue) {\n empty = false;\n var newNodeUnresolved = nodeFromJSON_1.nodeFromJSON(changedValue);\n changedChildren[changedKey] = ServerValues_1.resolveDeferredValueSnapshot(newNodeUnresolved, serverValues);\n });\n if (!empty) {\n var writeId_1 = this.getNextWriteId_();\n var events = this.serverSyncTree_.applyUserMerge(path, changedChildren, writeId_1);\n this.eventQueue_.queueEvents(events);\n this.server_.merge(path.toString(), childrenToMerge, function (status, errorReason) {\n var success = status === 'ok';\n if (!success) {\n util_2.warn('update at ' + path + ' failed: ' + status);\n }\n var clearEvents = _this.serverSyncTree_.ackUserWrite(writeId_1, !success);\n var affectedPath = clearEvents.length > 0 ? _this.rerunTransactions_(path) : path;\n _this.eventQueue_.raiseEventsForChangedPath(affectedPath, clearEvents);\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n util_3.forEach(childrenToMerge, function (changedPath) {\n var affectedPath = _this.abortTransactions_(path.child(changedPath));\n _this.rerunTransactions_(affectedPath);\n });\n // We queued the events above, so just flush the queue here\n this.eventQueue_.raiseEventsForChangedPath(path, []);\n }\n else {\n util_2.log(\"update() called with empty data. Don't do anything.\");\n this.callOnCompleteCallback(onComplete, 'ok');\n }\n };\n /**\n * Applies all of the changes stored up in the onDisconnect_ tree.\n * @private\n */\n Repo.prototype.runOnDisconnectEvents_ = function () {\n var _this = this;\n this.log_('onDisconnectEvents');\n var serverValues = this.generateServerValues();\n var resolvedOnDisconnectTree = ServerValues_1.resolveDeferredValueTree(this.onDisconnect_, serverValues);\n var events = [];\n resolvedOnDisconnectTree.forEachTree(Path_1.Path.Empty, function (path, snap) {\n events = events.concat(_this.serverSyncTree_.applyServerOverwrite(path, snap));\n var affectedPath = _this.abortTransactions_(path);\n _this.rerunTransactions_(affectedPath);\n });\n this.onDisconnect_ = new SparseSnapshotTree_1.SparseSnapshotTree();\n this.eventQueue_.raiseEventsForChangedPath(Path_1.Path.Empty, events);\n };\n /**\n * @param {!Path} path\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.onDisconnectCancel = function (path, onComplete) {\n var _this = this;\n this.server_.onDisconnectCancel(path.toString(), function (status, errorReason) {\n if (status === 'ok') {\n _this.onDisconnect_.forget(path);\n }\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n };\n /**\n * @param {!Path} path\n * @param {*} value\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.onDisconnectSet = function (path, value, onComplete) {\n var _this = this;\n var newNode = nodeFromJSON_1.nodeFromJSON(value);\n this.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), function (status, errorReason) {\n if (status === 'ok') {\n _this.onDisconnect_.remember(path, newNode);\n }\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n };\n /**\n * @param {!Path} path\n * @param {*} value\n * @param {*} priority\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.onDisconnectSetWithPriority = function (path, value, priority, onComplete) {\n var _this = this;\n var newNode = nodeFromJSON_1.nodeFromJSON(value, priority);\n this.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), function (status, errorReason) {\n if (status === 'ok') {\n _this.onDisconnect_.remember(path, newNode);\n }\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n };\n /**\n * @param {!Path} path\n * @param {*} childrenToMerge\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.onDisconnectUpdate = function (path, childrenToMerge, onComplete) {\n var _this = this;\n if (util_3.isEmpty(childrenToMerge)) {\n util_2.log(\"onDisconnect().update() called with empty data. Don't do anything.\");\n this.callOnCompleteCallback(onComplete, 'ok');\n return;\n }\n this.server_.onDisconnectMerge(path.toString(), childrenToMerge, function (status, errorReason) {\n if (status === 'ok') {\n util_3.forEach(childrenToMerge, function (childName, childNode) {\n var newChildNode = nodeFromJSON_1.nodeFromJSON(childNode);\n _this.onDisconnect_.remember(path.child(childName), newChildNode);\n });\n }\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n };\n /**\n * @param {!Query} query\n * @param {!EventRegistration} eventRegistration\n */\n Repo.prototype.addEventCallbackForQuery = function (query, eventRegistration) {\n var events;\n if (query.path.getFront() === '.info') {\n events = this.infoSyncTree_.addEventRegistration(query, eventRegistration);\n }\n else {\n events = this.serverSyncTree_.addEventRegistration(query, eventRegistration);\n }\n this.eventQueue_.raiseEventsAtPath(query.path, events);\n };\n /**\n * @param {!Query} query\n * @param {?EventRegistration} eventRegistration\n */\n Repo.prototype.removeEventCallbackForQuery = function (query, eventRegistration) {\n // These are guaranteed not to raise events, since we're not passing in a cancelError. However, we can future-proof\n // a little bit by handling the return values anyways.\n var events;\n if (query.path.getFront() === '.info') {\n events = this.infoSyncTree_.removeEventRegistration(query, eventRegistration);\n }\n else {\n events = this.serverSyncTree_.removeEventRegistration(query, eventRegistration);\n }\n this.eventQueue_.raiseEventsAtPath(query.path, events);\n };\n Repo.prototype.interrupt = function () {\n if (this.persistentConnection_) {\n this.persistentConnection_.interrupt(INTERRUPT_REASON);\n }\n };\n Repo.prototype.resume = function () {\n if (this.persistentConnection_) {\n this.persistentConnection_.resume(INTERRUPT_REASON);\n }\n };\n Repo.prototype.stats = function (showDelta) {\n if (showDelta === void 0) { showDelta = false; }\n if (typeof console === 'undefined')\n return;\n var stats;\n if (showDelta) {\n if (!this.statsListener_)\n this.statsListener_ = new StatsListener_1.StatsListener(this.stats_);\n stats = this.statsListener_.get();\n }\n else {\n stats = this.stats_.get();\n }\n var longestName = Object.keys(stats).reduce(function (previousValue, currentValue) {\n return Math.max(currentValue.length, previousValue);\n }, 0);\n util_3.forEach(stats, function (stat, value) {\n // pad stat names to be the same length (plus 2 extra spaces).\n for (var i = stat.length; i < longestName + 2; i++)\n stat += ' ';\n console.log(stat + value);\n });\n };\n Repo.prototype.statsIncrementCounter = function (metric) {\n this.stats_.incrementCounter(metric);\n this.statsReporter_.includeStat(metric);\n };\n /**\n * @param {...*} var_args\n * @private\n */\n Repo.prototype.log_ = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var prefix = '';\n if (this.persistentConnection_) {\n prefix = this.persistentConnection_.id + ':';\n }\n util_2.log.apply(void 0, [prefix].concat(var_args));\n };\n /**\n * @param {?function(?Error, *=)} callback\n * @param {!string} status\n * @param {?string=} errorReason\n */\n Repo.prototype.callOnCompleteCallback = function (callback, status, errorReason) {\n if (callback) {\n util_2.exceptionGuard(function () {\n if (status == 'ok') {\n callback(null);\n }\n else {\n var code = (status || 'error').toUpperCase();\n var message = code;\n if (errorReason)\n message += ': ' + errorReason;\n var error = new Error(message);\n error.code = code;\n callback(error);\n }\n });\n }\n };\n Object.defineProperty(Repo.prototype, \"database\", {\n get: function () {\n return this.__database || (this.__database = new Database_1.Database(this));\n },\n enumerable: true,\n configurable: true\n });\n return Repo;\n}());\nexports.Repo = Repo;\n\n//# sourceMappingURL=Repo.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/Repo.js\n// module id = 17\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * A cache node only stores complete children. Additionally it holds a flag whether the node can be considered fully\n * initialized in the sense that we know at one point in time this represented a valid state of the world, e.g.\n * initialized with data from the server, or a complete overwrite by the client. The filtered flag also tracks\n * whether a node potentially had children removed due to a filter.\n */\nvar CacheNode = /** @class */ (function () {\n /**\n * @param {!Node} node_\n * @param {boolean} fullyInitialized_\n * @param {boolean} filtered_\n */\n function CacheNode(node_, fullyInitialized_, filtered_) {\n this.node_ = node_;\n this.fullyInitialized_ = fullyInitialized_;\n this.filtered_ = filtered_;\n }\n /**\n * Returns whether this node was fully initialized with either server data or a complete overwrite by the client\n * @return {boolean}\n */\n CacheNode.prototype.isFullyInitialized = function () {\n return this.fullyInitialized_;\n };\n /**\n * Returns whether this node is potentially missing children due to a filter applied to the node\n * @return {boolean}\n */\n CacheNode.prototype.isFiltered = function () {\n return this.filtered_;\n };\n /**\n * @param {!Path} path\n * @return {boolean}\n */\n CacheNode.prototype.isCompleteForPath = function (path) {\n if (path.isEmpty()) {\n return this.isFullyInitialized() && !this.filtered_;\n }\n var childKey = path.getFront();\n return this.isCompleteForChild(childKey);\n };\n /**\n * @param {!string} key\n * @return {boolean}\n */\n CacheNode.prototype.isCompleteForChild = function (key) {\n return ((this.isFullyInitialized() && !this.filtered_) || this.node_.hasChild(key));\n };\n /**\n * @return {!Node}\n */\n CacheNode.prototype.getNode = function () {\n return this.node_;\n };\n return CacheNode;\n}());\nexports.CacheNode = CacheNode;\n\n//# sourceMappingURL=CacheNode.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/CacheNode.js\n// module id = 18\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar onDisconnect_1 = require(\"./onDisconnect\");\nvar TransactionResult_1 = require(\"./TransactionResult\");\nvar util_1 = require(\"../core/util/util\");\nvar NextPushId_1 = require(\"../core/util/NextPushId\");\nvar Query_1 = require(\"./Query\");\nvar Repo_1 = require(\"../core/Repo\");\nvar Path_1 = require(\"../core/util/Path\");\nvar QueryParams_1 = require(\"../core/view/QueryParams\");\nvar validation_1 = require(\"../core/util/validation\");\nvar util_2 = require(\"@firebase/util\");\nvar util_3 = require(\"@firebase/util\");\nvar SyncPoint_1 = require(\"../core/SyncPoint\");\nvar Reference = /** @class */ (function (_super) {\n __extends(Reference, _super);\n /**\n * Call options:\n * new Reference(Repo, Path) or\n * new Reference(url: string, string|RepoManager)\n *\n * Externally - this is the firebase.database.Reference type.\n *\n * @param {!Repo} repo\n * @param {(!Path)} path\n * @extends {Query}\n */\n function Reference(repo, path) {\n var _this = this;\n if (!(repo instanceof Repo_1.Repo)) {\n throw new Error('new Reference() no longer supported - use app.database().');\n }\n // call Query's constructor, passing in the repo and path.\n _this = _super.call(this, repo, path, QueryParams_1.QueryParams.DEFAULT, false) || this;\n return _this;\n }\n /** @return {?string} */\n Reference.prototype.getKey = function () {\n util_2.validateArgCount('Reference.key', 0, 0, arguments.length);\n if (this.path.isEmpty())\n return null;\n else\n return this.path.getBack();\n };\n /**\n * @param {!(string|Path)} pathString\n * @return {!Reference}\n */\n Reference.prototype.child = function (pathString) {\n util_2.validateArgCount('Reference.child', 1, 1, arguments.length);\n if (typeof pathString === 'number') {\n pathString = String(pathString);\n }\n else if (!(pathString instanceof Path_1.Path)) {\n if (this.path.getFront() === null)\n validation_1.validateRootPathString('Reference.child', 1, pathString, false);\n else\n validation_1.validatePathString('Reference.child', 1, pathString, false);\n }\n return new Reference(this.repo, this.path.child(pathString));\n };\n /** @return {?Reference} */\n Reference.prototype.getParent = function () {\n util_2.validateArgCount('Reference.parent', 0, 0, arguments.length);\n var parentPath = this.path.parent();\n return parentPath === null ? null : new Reference(this.repo, parentPath);\n };\n /** @return {!Reference} */\n Reference.prototype.getRoot = function () {\n util_2.validateArgCount('Reference.root', 0, 0, arguments.length);\n var ref = this;\n while (ref.getParent() !== null) {\n ref = ref.getParent();\n }\n return ref;\n };\n /** @return {!Database} */\n Reference.prototype.databaseProp = function () {\n return this.repo.database;\n };\n /**\n * @param {*} newVal\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.set = function (newVal, onComplete) {\n util_2.validateArgCount('Reference.set', 1, 2, arguments.length);\n validation_1.validateWritablePath('Reference.set', this.path);\n validation_1.validateFirebaseDataArg('Reference.set', 1, newVal, this.path, false);\n util_2.validateCallback('Reference.set', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo.setWithPriority(this.path, newVal, \n /*priority=*/ null, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {!Object} objectToMerge\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.update = function (objectToMerge, onComplete) {\n util_2.validateArgCount('Reference.update', 1, 2, arguments.length);\n validation_1.validateWritablePath('Reference.update', this.path);\n if (Array.isArray(objectToMerge)) {\n var newObjectToMerge = {};\n for (var i = 0; i < objectToMerge.length; ++i) {\n newObjectToMerge['' + i] = objectToMerge[i];\n }\n objectToMerge = newObjectToMerge;\n util_1.warn('Passing an Array to Firebase.update() is deprecated. ' +\n 'Use set() if you want to overwrite the existing data, or ' +\n 'an Object with integer keys if you really do want to ' +\n 'only update some of the children.');\n }\n validation_1.validateFirebaseMergeDataArg('Reference.update', 1, objectToMerge, this.path, false);\n util_2.validateCallback('Reference.update', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo.update(this.path, objectToMerge, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*} newVal\n * @param {string|number|null} newPriority\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.setWithPriority = function (newVal, newPriority, onComplete) {\n util_2.validateArgCount('Reference.setWithPriority', 2, 3, arguments.length);\n validation_1.validateWritablePath('Reference.setWithPriority', this.path);\n validation_1.validateFirebaseDataArg('Reference.setWithPriority', 1, newVal, this.path, false);\n validation_1.validatePriority('Reference.setWithPriority', 2, newPriority, false);\n util_2.validateCallback('Reference.setWithPriority', 3, onComplete, true);\n if (this.getKey() === '.length' || this.getKey() === '.keys')\n throw 'Reference.setWithPriority failed: ' +\n this.getKey() +\n ' is a read-only object.';\n var deferred = new util_3.Deferred();\n this.repo.setWithPriority(this.path, newVal, newPriority, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.remove = function (onComplete) {\n util_2.validateArgCount('Reference.remove', 0, 1, arguments.length);\n validation_1.validateWritablePath('Reference.remove', this.path);\n util_2.validateCallback('Reference.remove', 1, onComplete, true);\n return this.set(null, onComplete);\n };\n /**\n * @param {function(*):*} transactionUpdate\n * @param {(function(?Error, boolean, ?DataSnapshot))=} onComplete\n * @param {boolean=} applyLocally\n * @return {!Promise}\n */\n Reference.prototype.transaction = function (transactionUpdate, onComplete, applyLocally) {\n util_2.validateArgCount('Reference.transaction', 1, 3, arguments.length);\n validation_1.validateWritablePath('Reference.transaction', this.path);\n util_2.validateCallback('Reference.transaction', 1, transactionUpdate, false);\n util_2.validateCallback('Reference.transaction', 2, onComplete, true);\n // NOTE: applyLocally is an internal-only option for now. We need to decide if we want to keep it and how\n // to expose it.\n validation_1.validateBoolean('Reference.transaction', 3, applyLocally, true);\n if (this.getKey() === '.length' || this.getKey() === '.keys')\n throw 'Reference.transaction failed: ' +\n this.getKey() +\n ' is a read-only object.';\n if (applyLocally === undefined)\n applyLocally = true;\n var deferred = new util_3.Deferred();\n if (typeof onComplete === 'function') {\n deferred.promise.catch(function () { });\n }\n var promiseComplete = function (error, committed, snapshot) {\n if (error) {\n deferred.reject(error);\n }\n else {\n deferred.resolve(new TransactionResult_1.TransactionResult(committed, snapshot));\n }\n if (typeof onComplete === 'function') {\n onComplete(error, committed, snapshot);\n }\n };\n this.repo.startTransaction(this.path, transactionUpdate, promiseComplete, applyLocally);\n return deferred.promise;\n };\n /**\n * @param {string|number|null} priority\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.setPriority = function (priority, onComplete) {\n util_2.validateArgCount('Reference.setPriority', 1, 2, arguments.length);\n validation_1.validateWritablePath('Reference.setPriority', this.path);\n validation_1.validatePriority('Reference.setPriority', 1, priority, false);\n util_2.validateCallback('Reference.setPriority', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo.setWithPriority(this.path.child('.priority'), priority, null, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*=} value\n * @param {function(?Error)=} onComplete\n * @return {!Reference}\n */\n Reference.prototype.push = function (value, onComplete) {\n util_2.validateArgCount('Reference.push', 0, 2, arguments.length);\n validation_1.validateWritablePath('Reference.push', this.path);\n validation_1.validateFirebaseDataArg('Reference.push', 1, value, this.path, true);\n util_2.validateCallback('Reference.push', 2, onComplete, true);\n var now = this.repo.serverTime();\n var name = NextPushId_1.nextPushId(now);\n // push() returns a ThennableReference whose promise is fulfilled with a regular Reference.\n // We use child() to create handles to two different references. The first is turned into a\n // ThennableReference below by adding then() and catch() methods and is used as the\n // return value of push(). The second remains a regular Reference and is used as the fulfilled\n // value of the first ThennableReference.\n var thennablePushRef = this.child(name);\n var pushRef = this.child(name);\n var promise;\n if (value != null) {\n promise = thennablePushRef.set(value, onComplete).then(function () { return pushRef; });\n }\n else {\n promise = Promise.resolve(pushRef);\n }\n thennablePushRef.then = promise.then.bind(promise);\n thennablePushRef.catch = promise.then.bind(promise, undefined);\n if (typeof onComplete === 'function') {\n promise.catch(function () { });\n }\n return thennablePushRef;\n };\n /**\n * @return {!OnDisconnect}\n */\n Reference.prototype.onDisconnect = function () {\n validation_1.validateWritablePath('Reference.onDisconnect', this.path);\n return new onDisconnect_1.OnDisconnect(this.repo, this.path);\n };\n Object.defineProperty(Reference.prototype, \"database\", {\n get: function () {\n return this.databaseProp();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"key\", {\n get: function () {\n return this.getKey();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"parent\", {\n get: function () {\n return this.getParent();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"root\", {\n get: function () {\n return this.getRoot();\n },\n enumerable: true,\n configurable: true\n });\n return Reference;\n}(Query_1.Query));\nexports.Reference = Reference;\n/**\n * Define reference constructor in various modules\n *\n * We are doing this here to avoid several circular\n * dependency issues\n */\nQuery_1.Query.__referenceConstructor = Reference;\nSyncPoint_1.SyncPoint.__referenceConstructor = Reference;\n\n//# sourceMappingURL=Reference.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/Reference.js\n// module id = 21\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SortedMap_1 = require(\"./SortedMap\");\nvar Path_1 = require(\"./Path\");\nvar util_1 = require(\"./util\");\nvar util_2 = require(\"@firebase/util\");\nvar emptyChildrenSingleton;\n/**\n * Singleton empty children collection.\n *\n * @const\n * @type {!SortedMap.>}\n */\nvar EmptyChildren = function () {\n if (!emptyChildrenSingleton) {\n emptyChildrenSingleton = new SortedMap_1.SortedMap(util_1.stringCompare);\n }\n return emptyChildrenSingleton;\n};\n/**\n * A tree with immutable elements.\n */\nvar ImmutableTree = /** @class */ (function () {\n /**\n * @template T\n * @param {?T} value\n * @param {SortedMap.>=} children\n */\n function ImmutableTree(value, children) {\n if (children === void 0) { children = EmptyChildren(); }\n this.value = value;\n this.children = children;\n }\n /**\n * @template T\n * @param {!Object.} obj\n * @return {!ImmutableTree.}\n */\n ImmutableTree.fromObject = function (obj) {\n var tree = ImmutableTree.Empty;\n util_2.forEach(obj, function (childPath, childSnap) {\n tree = tree.set(new Path_1.Path(childPath), childSnap);\n });\n return tree;\n };\n /**\n * True if the value is empty and there are no children\n * @return {boolean}\n */\n ImmutableTree.prototype.isEmpty = function () {\n return this.value === null && this.children.isEmpty();\n };\n /**\n * Given a path and predicate, return the first node and the path to that node\n * where the predicate returns true.\n *\n * TODO Do a perf test -- If we're creating a bunch of {path: value:} objects\n * on the way back out, it may be better to pass down a pathSoFar obj.\n *\n * @param {!Path} relativePath The remainder of the path\n * @param {function(T):boolean} predicate The predicate to satisfy to return a\n * node\n * @return {?{path:!Path, value:!T}}\n */\n ImmutableTree.prototype.findRootMostMatchingPathAndValue = function (relativePath, predicate) {\n if (this.value != null && predicate(this.value)) {\n return { path: Path_1.Path.Empty, value: this.value };\n }\n else {\n if (relativePath.isEmpty()) {\n return null;\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front);\n if (child !== null) {\n var childExistingPathAndValue = child.findRootMostMatchingPathAndValue(relativePath.popFront(), predicate);\n if (childExistingPathAndValue != null) {\n var fullPath = new Path_1.Path(front).child(childExistingPathAndValue.path);\n return { path: fullPath, value: childExistingPathAndValue.value };\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n }\n }\n };\n /**\n * Find, if it exists, the shortest subpath of the given path that points a defined\n * value in the tree\n * @param {!Path} relativePath\n * @return {?{path: !Path, value: !T}}\n */\n ImmutableTree.prototype.findRootMostValueAndPath = function (relativePath) {\n return this.findRootMostMatchingPathAndValue(relativePath, function () { return true; });\n };\n /**\n * @param {!Path} relativePath\n * @return {!ImmutableTree.} The subtree at the given path\n */\n ImmutableTree.prototype.subtree = function (relativePath) {\n if (relativePath.isEmpty()) {\n return this;\n }\n else {\n var front = relativePath.getFront();\n var childTree = this.children.get(front);\n if (childTree !== null) {\n return childTree.subtree(relativePath.popFront());\n }\n else {\n return ImmutableTree.Empty;\n }\n }\n };\n /**\n * Sets a value at the specified path.\n *\n * @param {!Path} relativePath Path to set value at.\n * @param {?T} toSet Value to set.\n * @return {!ImmutableTree.} Resulting tree.\n */\n ImmutableTree.prototype.set = function (relativePath, toSet) {\n if (relativePath.isEmpty()) {\n return new ImmutableTree(toSet, this.children);\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front) || ImmutableTree.Empty;\n var newChild = child.set(relativePath.popFront(), toSet);\n var newChildren = this.children.insert(front, newChild);\n return new ImmutableTree(this.value, newChildren);\n }\n };\n /**\n * Removes the value at the specified path.\n *\n * @param {!Path} relativePath Path to value to remove.\n * @return {!ImmutableTree.} Resulting tree.\n */\n ImmutableTree.prototype.remove = function (relativePath) {\n if (relativePath.isEmpty()) {\n if (this.children.isEmpty()) {\n return ImmutableTree.Empty;\n }\n else {\n return new ImmutableTree(null, this.children);\n }\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front);\n if (child) {\n var newChild = child.remove(relativePath.popFront());\n var newChildren = void 0;\n if (newChild.isEmpty()) {\n newChildren = this.children.remove(front);\n }\n else {\n newChildren = this.children.insert(front, newChild);\n }\n if (this.value === null && newChildren.isEmpty()) {\n return ImmutableTree.Empty;\n }\n else {\n return new ImmutableTree(this.value, newChildren);\n }\n }\n else {\n return this;\n }\n }\n };\n /**\n * Gets a value from the tree.\n *\n * @param {!Path} relativePath Path to get value for.\n * @return {?T} Value at path, or null.\n */\n ImmutableTree.prototype.get = function (relativePath) {\n if (relativePath.isEmpty()) {\n return this.value;\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front);\n if (child) {\n return child.get(relativePath.popFront());\n }\n else {\n return null;\n }\n }\n };\n /**\n * Replace the subtree at the specified path with the given new tree.\n *\n * @param {!Path} relativePath Path to replace subtree for.\n * @param {!ImmutableTree} newTree New tree.\n * @return {!ImmutableTree} Resulting tree.\n */\n ImmutableTree.prototype.setTree = function (relativePath, newTree) {\n if (relativePath.isEmpty()) {\n return newTree;\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front) || ImmutableTree.Empty;\n var newChild = child.setTree(relativePath.popFront(), newTree);\n var newChildren = void 0;\n if (newChild.isEmpty()) {\n newChildren = this.children.remove(front);\n }\n else {\n newChildren = this.children.insert(front, newChild);\n }\n return new ImmutableTree(this.value, newChildren);\n }\n };\n /**\n * Performs a depth first fold on this tree. Transforms a tree into a single\n * value, given a function that operates on the path to a node, an optional\n * current value, and a map of child names to folded subtrees\n * @template V\n * @param {function(Path, ?T, Object.):V} fn\n * @return {V}\n */\n ImmutableTree.prototype.fold = function (fn) {\n return this.fold_(Path_1.Path.Empty, fn);\n };\n /**\n * Recursive helper for public-facing fold() method\n * @template V\n * @param {!Path} pathSoFar\n * @param {function(Path, ?T, Object.):V} fn\n * @return {V}\n * @private\n */\n ImmutableTree.prototype.fold_ = function (pathSoFar, fn) {\n var accum = {};\n this.children.inorderTraversal(function (childKey, childTree) {\n accum[childKey] = childTree.fold_(pathSoFar.child(childKey), fn);\n });\n return fn(pathSoFar, this.value, accum);\n };\n /**\n * Find the first matching value on the given path. Return the result of applying f to it.\n * @template V\n * @param {!Path} path\n * @param {!function(!Path, !T):?V} f\n * @return {?V}\n */\n ImmutableTree.prototype.findOnPath = function (path, f) {\n return this.findOnPath_(path, Path_1.Path.Empty, f);\n };\n ImmutableTree.prototype.findOnPath_ = function (pathToFollow, pathSoFar, f) {\n var result = this.value ? f(pathSoFar, this.value) : false;\n if (result) {\n return result;\n }\n else {\n if (pathToFollow.isEmpty()) {\n return null;\n }\n else {\n var front = pathToFollow.getFront();\n var nextChild = this.children.get(front);\n if (nextChild) {\n return nextChild.findOnPath_(pathToFollow.popFront(), pathSoFar.child(front), f);\n }\n else {\n return null;\n }\n }\n }\n };\n /**\n *\n * @param {!Path} path\n * @param {!function(!Path, !T)} f\n * @returns {!ImmutableTree.}\n */\n ImmutableTree.prototype.foreachOnPath = function (path, f) {\n return this.foreachOnPath_(path, Path_1.Path.Empty, f);\n };\n ImmutableTree.prototype.foreachOnPath_ = function (pathToFollow, currentRelativePath, f) {\n if (pathToFollow.isEmpty()) {\n return this;\n }\n else {\n if (this.value) {\n f(currentRelativePath, this.value);\n }\n var front = pathToFollow.getFront();\n var nextChild = this.children.get(front);\n if (nextChild) {\n return nextChild.foreachOnPath_(pathToFollow.popFront(), currentRelativePath.child(front), f);\n }\n else {\n return ImmutableTree.Empty;\n }\n }\n };\n /**\n * Calls the given function for each node in the tree that has a value.\n *\n * @param {function(!Path, !T)} f A function to be called with\n * the path from the root of the tree to a node, and the value at that node.\n * Called in depth-first order.\n */\n ImmutableTree.prototype.foreach = function (f) {\n this.foreach_(Path_1.Path.Empty, f);\n };\n ImmutableTree.prototype.foreach_ = function (currentRelativePath, f) {\n this.children.inorderTraversal(function (childName, childTree) {\n childTree.foreach_(currentRelativePath.child(childName), f);\n });\n if (this.value) {\n f(currentRelativePath, this.value);\n }\n };\n /**\n *\n * @param {function(string, !T)} f\n */\n ImmutableTree.prototype.foreachChild = function (f) {\n this.children.inorderTraversal(function (childName, childTree) {\n if (childTree.value) {\n f(childName, childTree.value);\n }\n });\n };\n ImmutableTree.Empty = new ImmutableTree(null);\n return ImmutableTree;\n}());\nexports.ImmutableTree = ImmutableTree;\n\n//# sourceMappingURL=ImmutableTree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/ImmutableTree.js\n// module id = 22\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Change_1 = require(\"../Change\");\nvar ChildrenNode_1 = require(\"../../snap/ChildrenNode\");\nvar PriorityIndex_1 = require(\"../../snap/indexes/PriorityIndex\");\n/**\n * Doesn't really filter nodes but applies an index to the node and keeps track of any changes\n *\n * @constructor\n * @implements {NodeFilter}\n * @param {!Index} index\n */\nvar IndexedFilter = /** @class */ (function () {\n function IndexedFilter(index_) {\n this.index_ = index_;\n }\n IndexedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n util_1.assert(snap.isIndexed(this.index_), 'A node must be indexed if only a child is updated');\n var oldChild = snap.getImmediateChild(key);\n // Check if anything actually changed.\n if (oldChild.getChild(affectedPath).equals(newChild.getChild(affectedPath))) {\n // There's an edge case where a child can enter or leave the view because affectedPath was set to null.\n // In this case, affectedPath will appear null in both the old and new snapshots. So we need\n // to avoid treating these cases as \"nothing changed.\"\n if (oldChild.isEmpty() == newChild.isEmpty()) {\n // Nothing changed.\n // This assert should be valid, but it's expensive (can dominate perf testing) so don't actually do it.\n //assert(oldChild.equals(newChild), 'Old and new snapshots should be equal.');\n return snap;\n }\n }\n if (optChangeAccumulator != null) {\n if (newChild.isEmpty()) {\n if (snap.hasChild(key)) {\n optChangeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(key, oldChild));\n }\n else {\n util_1.assert(snap.isLeafNode(), 'A child remove without an old child only makes sense on a leaf node');\n }\n }\n else if (oldChild.isEmpty()) {\n optChangeAccumulator.trackChildChange(Change_1.Change.childAddedChange(key, newChild));\n }\n else {\n optChangeAccumulator.trackChildChange(Change_1.Change.childChangedChange(key, newChild, oldChild));\n }\n }\n if (snap.isLeafNode() && newChild.isEmpty()) {\n return snap;\n }\n else {\n // Make sure the node is indexed\n return snap.updateImmediateChild(key, newChild).withIndex(this.index_);\n }\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n if (optChangeAccumulator != null) {\n if (!oldSnap.isLeafNode()) {\n oldSnap.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n if (!newSnap.hasChild(key)) {\n optChangeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(key, childNode));\n }\n });\n }\n if (!newSnap.isLeafNode()) {\n newSnap.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n if (oldSnap.hasChild(key)) {\n var oldChild = oldSnap.getImmediateChild(key);\n if (!oldChild.equals(childNode)) {\n optChangeAccumulator.trackChildChange(Change_1.Change.childChangedChange(key, childNode, oldChild));\n }\n }\n else {\n optChangeAccumulator.trackChildChange(Change_1.Change.childAddedChange(key, childNode));\n }\n });\n }\n }\n return newSnap.withIndex(this.index_);\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n if (oldSnap.isEmpty()) {\n return ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n else {\n return oldSnap.updatePriority(newPriority);\n }\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.filtersNodes = function () {\n return false;\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.getIndexedFilter = function () {\n return this;\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n return IndexedFilter;\n}());\nexports.IndexedFilter = IndexedFilter;\n\n//# sourceMappingURL=IndexedFilter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/filter/IndexedFilter.js\n// module id = 23\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar StatsCollection_1 = require(\"./StatsCollection\");\nvar StatsManager = /** @class */ (function () {\n function StatsManager() {\n }\n StatsManager.getCollection = function (repoInfo) {\n var hashString = repoInfo.toString();\n if (!this.collections_[hashString]) {\n this.collections_[hashString] = new StatsCollection_1.StatsCollection();\n }\n return this.collections_[hashString];\n };\n StatsManager.getOrCreateReporter = function (repoInfo, creatorFunction) {\n var hashString = repoInfo.toString();\n if (!this.reporters_[hashString]) {\n this.reporters_[hashString] = creatorFunction();\n }\n return this.reporters_[hashString];\n };\n StatsManager.collections_ = {};\n StatsManager.reporters_ = {};\n return StatsManager;\n}());\nexports.StatsManager = StatsManager;\n\n//# sourceMappingURL=StatsManager.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/stats/StatsManager.js\n// module id = 24\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Repo_1 = require(\"./Repo\");\nvar util_2 = require(\"./util/util\");\nvar parser_1 = require(\"./util/libs/parser\");\nvar validation_1 = require(\"./util/validation\");\nrequire(\"./Repo_transaction\");\n/** @const {string} */\nvar DATABASE_URL_OPTION = 'databaseURL';\nvar _staticInstance;\n/**\n * Creates and caches Repo instances.\n */\nvar RepoManager = /** @class */ (function () {\n function RepoManager() {\n /**\n * @private {!Object.>}\n */\n this.repos_ = {};\n /**\n * If true, new Repos will be created to use ReadonlyRestClient (for testing purposes).\n * @private {boolean}\n */\n this.useRestClient_ = false;\n }\n RepoManager.getInstance = function () {\n if (!_staticInstance) {\n _staticInstance = new RepoManager();\n }\n return _staticInstance;\n };\n // TODO(koss): Remove these functions unless used in tests?\n RepoManager.prototype.interrupt = function () {\n for (var appName in this.repos_) {\n for (var dbUrl in this.repos_[appName]) {\n this.repos_[appName][dbUrl].interrupt();\n }\n }\n };\n RepoManager.prototype.resume = function () {\n for (var appName in this.repos_) {\n for (var dbUrl in this.repos_[appName]) {\n this.repos_[appName][dbUrl].resume();\n }\n }\n };\n /**\n * This function should only ever be called to CREATE a new database instance.\n *\n * @param {!FirebaseApp} app\n * @return {!Database}\n */\n RepoManager.prototype.databaseFromApp = function (app, url) {\n var dbUrl = url || app.options[DATABASE_URL_OPTION];\n if (dbUrl === undefined) {\n util_2.fatal(\"Can't determine Firebase Database URL. Be sure to include \" +\n DATABASE_URL_OPTION +\n ' option when calling firebase.intializeApp().');\n }\n var parsedUrl = parser_1.parseRepoInfo(dbUrl);\n var repoInfo = parsedUrl.repoInfo;\n validation_1.validateUrl('Invalid Firebase Database URL', 1, parsedUrl);\n if (!parsedUrl.path.isEmpty()) {\n util_2.fatal('Database URL must point to the root of a Firebase Database ' +\n '(not including a child path).');\n }\n var repo = this.createRepo(repoInfo, app);\n return repo.database;\n };\n /**\n * Remove the repo and make sure it is disconnected.\n *\n * @param {!Repo} repo\n */\n RepoManager.prototype.deleteRepo = function (repo) {\n var appRepos = util_1.safeGet(this.repos_, repo.app.name);\n // This should never happen...\n if (!appRepos || util_1.safeGet(appRepos, repo.repoInfo_.toURLString()) !== repo) {\n util_2.fatal(\"Database \" + repo.app.name + \"(\" + repo.repoInfo_ + \") has already been deleted.\");\n }\n repo.interrupt();\n delete appRepos[repo.repoInfo_.toURLString()];\n };\n /**\n * Ensures a repo doesn't already exist and then creates one using the\n * provided app.\n *\n * @param {!RepoInfo} repoInfo The metadata about the Repo\n * @param {!FirebaseApp} app\n * @return {!Repo} The Repo object for the specified server / repoName.\n */\n RepoManager.prototype.createRepo = function (repoInfo, app) {\n var appRepos = util_1.safeGet(this.repos_, app.name);\n if (!appRepos) {\n appRepos = {};\n this.repos_[app.name] = appRepos;\n }\n var repo = util_1.safeGet(appRepos, repoInfo.toURLString());\n if (repo) {\n util_2.fatal('Database initialized multiple times. Please make sure the format of the database URL matches with each database() call.');\n }\n repo = new Repo_1.Repo(repoInfo, this.useRestClient_, app);\n appRepos[repoInfo.toURLString()] = repo;\n return repo;\n };\n /**\n * Forces us to use ReadonlyRestClient instead of PersistentConnection for new Repos.\n * @param {boolean} forceRestClient\n */\n RepoManager.prototype.forceRestClient = function (forceRestClient) {\n this.useRestClient_ = forceRestClient;\n };\n return RepoManager;\n}());\nexports.RepoManager = RepoManager;\n\n//# sourceMappingURL=RepoManager.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/RepoManager.js\n// module id = 25\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../core/util/util\");\nvar parser_1 = require(\"../core/util/libs/parser\");\nvar Path_1 = require(\"../core/util/Path\");\nvar Reference_1 = require(\"./Reference\");\nvar Repo_1 = require(\"../core/Repo\");\nvar RepoManager_1 = require(\"../core/RepoManager\");\nvar util_2 = require(\"@firebase/util\");\nvar validation_1 = require(\"../core/util/validation\");\n/**\n * Class representing a firebase database.\n * @implements {FirebaseService}\n */\nvar Database = /** @class */ (function () {\n /**\n * The constructor should not be called by users of our public API.\n * @param {!Repo} repo_\n */\n function Database(repo_) {\n this.repo_ = repo_;\n if (!(repo_ instanceof Repo_1.Repo)) {\n util_1.fatal(\"Don't call new Database() directly - please use firebase.database().\");\n }\n /** @type {Reference} */\n this.root_ = new Reference_1.Reference(repo_, Path_1.Path.Empty);\n this.INTERNAL = new DatabaseInternals(this);\n }\n Object.defineProperty(Database.prototype, \"app\", {\n get: function () {\n return this.repo_.app;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Returns a reference to the root or the path specified in opt_pathString.\n * @param {string=} pathString\n * @return {!Reference} Firebase reference.\n */\n Database.prototype.ref = function (pathString) {\n this.checkDeleted_('ref');\n util_2.validateArgCount('database.ref', 0, 1, arguments.length);\n return pathString !== undefined ? this.root_.child(pathString) : this.root_;\n };\n /**\n * Returns a reference to the root or the path specified in url.\n * We throw a exception if the url is not in the same domain as the\n * current repo.\n * @param {string} url\n * @return {!Reference} Firebase reference.\n */\n Database.prototype.refFromURL = function (url) {\n /** @const {string} */\n var apiName = 'database.refFromURL';\n this.checkDeleted_(apiName);\n util_2.validateArgCount(apiName, 1, 1, arguments.length);\n var parsedURL = parser_1.parseRepoInfo(url);\n validation_1.validateUrl(apiName, 1, parsedURL);\n var repoInfo = parsedURL.repoInfo;\n if (repoInfo.host !== this.repo_.repoInfo_.host) {\n util_1.fatal(apiName +\n ': Host name does not match the current database: ' +\n '(found ' +\n repoInfo.host +\n ' but expected ' +\n this.repo_.repoInfo_.host +\n ')');\n }\n return this.ref(parsedURL.path.toString());\n };\n /**\n * @param {string} apiName\n */\n Database.prototype.checkDeleted_ = function (apiName) {\n if (this.repo_ === null) {\n util_1.fatal('Cannot call ' + apiName + ' on a deleted database.');\n }\n };\n // Make individual repo go offline.\n Database.prototype.goOffline = function () {\n util_2.validateArgCount('database.goOffline', 0, 0, arguments.length);\n this.checkDeleted_('goOffline');\n this.repo_.interrupt();\n };\n Database.prototype.goOnline = function () {\n util_2.validateArgCount('database.goOnline', 0, 0, arguments.length);\n this.checkDeleted_('goOnline');\n this.repo_.resume();\n };\n Database.ServerValue = {\n TIMESTAMP: {\n '.sv': 'timestamp'\n }\n };\n return Database;\n}());\nexports.Database = Database;\nvar DatabaseInternals = /** @class */ (function () {\n /** @param {!Database} database */\n function DatabaseInternals(database) {\n this.database = database;\n }\n /** @return {Promise} */\n DatabaseInternals.prototype.delete = function () {\n this.database.checkDeleted_('delete');\n RepoManager_1.RepoManager.getInstance().deleteRepo(this.database.repo_);\n this.database.repo_ = null;\n this.database.root_ = null;\n this.database.INTERNAL = null;\n this.database = null;\n return Promise.resolve();\n };\n return DatabaseInternals;\n}());\nexports.DatabaseInternals = DatabaseInternals;\n\n//# sourceMappingURL=Database.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/Database.js\n// module id = 31\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = require(\"../Path\");\nvar RepoInfo_1 = require(\"../../RepoInfo\");\nvar util_1 = require(\"../util\");\n/**\n * @param {!string} pathString\n * @return {string}\n */\nfunction decodePath(pathString) {\n var pathStringDecoded = '';\n var pieces = pathString.split('/');\n for (var i = 0; i < pieces.length; i++) {\n if (pieces[i].length > 0) {\n var piece = pieces[i];\n try {\n piece = decodeURIComponent(piece.replace(/\\+/g, ' '));\n }\n catch (e) { }\n pathStringDecoded += '/' + piece;\n }\n }\n return pathStringDecoded;\n}\n/**\n *\n * @param {!string} dataURL\n * @return {{repoInfo: !RepoInfo, path: !Path}}\n */\nexports.parseRepoInfo = function (dataURL) {\n var parsedUrl = exports.parseURL(dataURL), namespace = parsedUrl.subdomain;\n if (parsedUrl.domain === 'firebase') {\n util_1.fatal(parsedUrl.host +\n ' is no longer supported. ' +\n 'Please use .firebaseio.com instead');\n }\n // Catch common error of uninitialized namespace value.\n if (!namespace || namespace == 'undefined') {\n util_1.fatal('Cannot parse Firebase url. Please use https://.firebaseio.com');\n }\n if (!parsedUrl.secure) {\n util_1.warnIfPageIsSecure();\n }\n var webSocketOnly = parsedUrl.scheme === 'ws' || parsedUrl.scheme === 'wss';\n return {\n repoInfo: new RepoInfo_1.RepoInfo(parsedUrl.host, parsedUrl.secure, namespace, webSocketOnly),\n path: new Path_1.Path(parsedUrl.pathString)\n };\n};\n/**\n *\n * @param {!string} dataURL\n * @return {{host: string, port: number, domain: string, subdomain: string, secure: boolean, scheme: string, pathString: string}}\n */\nexports.parseURL = function (dataURL) {\n // Default to empty strings in the event of a malformed string.\n var host = '', domain = '', subdomain = '', pathString = '';\n // Always default to SSL, unless otherwise specified.\n var secure = true, scheme = 'https', port = 443;\n // Don't do any validation here. The caller is responsible for validating the result of parsing.\n if (typeof dataURL === 'string') {\n // Parse scheme.\n var colonInd = dataURL.indexOf('//');\n if (colonInd >= 0) {\n scheme = dataURL.substring(0, colonInd - 1);\n dataURL = dataURL.substring(colonInd + 2);\n }\n // Parse host and path.\n var slashInd = dataURL.indexOf('/');\n if (slashInd === -1) {\n slashInd = dataURL.length;\n }\n host = dataURL.substring(0, slashInd);\n pathString = decodePath(dataURL.substring(slashInd));\n var parts = host.split('.');\n if (parts.length === 3) {\n // Normalize namespaces to lowercase to share storage / connection.\n domain = parts[1];\n subdomain = parts[0].toLowerCase();\n }\n else if (parts.length === 2) {\n domain = parts[0];\n }\n // If we have a port, use scheme for determining if it's secure.\n colonInd = host.indexOf(':');\n if (colonInd >= 0) {\n secure = scheme === 'https' || scheme === 'wss';\n port = parseInt(host.substring(colonInd + 1), 10);\n }\n }\n return {\n host: host,\n port: port,\n domain: domain,\n subdomain: subdomain,\n secure: secure,\n scheme: scheme,\n pathString: pathString\n };\n};\n\n//# sourceMappingURL=parser.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/libs/parser.js\n// module id = 32\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar storage_1 = require(\"./storage/storage\");\nvar Constants_1 = require(\"../realtime/Constants\");\n/**\n * A class that holds metadata about a Repo object\n *\n * @constructor\n */\nvar RepoInfo = /** @class */ (function () {\n /**\n * @param {string} host Hostname portion of the url for the repo\n * @param {boolean} secure Whether or not this repo is accessed over ssl\n * @param {string} namespace The namespace represented by the repo\n * @param {boolean} webSocketOnly Whether to prefer websockets over all other transports (used by Nest).\n * @param {string=} persistenceKey Override the default session persistence storage key\n */\n function RepoInfo(host, secure, namespace, webSocketOnly, persistenceKey) {\n if (persistenceKey === void 0) { persistenceKey = ''; }\n this.secure = secure;\n this.namespace = namespace;\n this.webSocketOnly = webSocketOnly;\n this.persistenceKey = persistenceKey;\n this.host = host.toLowerCase();\n this.domain = this.host.substr(this.host.indexOf('.') + 1);\n this.internalHost = storage_1.PersistentStorage.get('host:' + host) || this.host;\n }\n RepoInfo.prototype.needsQueryParam = function () {\n return this.host !== this.internalHost;\n };\n RepoInfo.prototype.isCacheableHost = function () {\n return this.internalHost.substr(0, 2) === 's-';\n };\n RepoInfo.prototype.isDemoHost = function () {\n return this.domain === 'firebaseio-demo.com';\n };\n RepoInfo.prototype.isCustomHost = function () {\n return (this.domain !== 'firebaseio.com' && this.domain !== 'firebaseio-demo.com');\n };\n RepoInfo.prototype.updateHost = function (newHost) {\n if (newHost !== this.internalHost) {\n this.internalHost = newHost;\n if (this.isCacheableHost()) {\n storage_1.PersistentStorage.set('host:' + this.host, this.internalHost);\n }\n }\n };\n /**\n * Returns the websocket URL for this repo\n * @param {string} type of connection\n * @param {Object} params list\n * @return {string} The URL for this repo\n */\n RepoInfo.prototype.connectionURL = function (type, params) {\n util_1.assert(typeof type === 'string', 'typeof type must == string');\n util_1.assert(typeof params === 'object', 'typeof params must == object');\n var connURL;\n if (type === Constants_1.WEBSOCKET) {\n connURL =\n (this.secure ? 'wss://' : 'ws://') + this.internalHost + '/.ws?';\n }\n else if (type === Constants_1.LONG_POLLING) {\n connURL =\n (this.secure ? 'https://' : 'http://') + this.internalHost + '/.lp?';\n }\n else {\n throw new Error('Unknown connection type: ' + type);\n }\n if (this.needsQueryParam()) {\n params['ns'] = this.namespace;\n }\n var pairs = [];\n util_2.forEach(params, function (key, value) {\n pairs.push(key + '=' + value);\n });\n return connURL + pairs.join('&');\n };\n /** @return {string} */\n RepoInfo.prototype.toString = function () {\n var str = this.toURLString();\n if (this.persistenceKey) {\n str += '<' + this.persistenceKey + '>';\n }\n return str;\n };\n /** @return {string} */\n RepoInfo.prototype.toURLString = function () {\n return (this.secure ? 'https://' : 'http://') + this.host;\n };\n return RepoInfo;\n}());\nexports.RepoInfo = RepoInfo;\n\n//# sourceMappingURL=RepoInfo.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/RepoInfo.js\n// module id = 33\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar KeyIndex_1 = require(\"../core/snap/indexes/KeyIndex\");\nvar PriorityIndex_1 = require(\"../core/snap/indexes/PriorityIndex\");\nvar ValueIndex_1 = require(\"../core/snap/indexes/ValueIndex\");\nvar PathIndex_1 = require(\"../core/snap/indexes/PathIndex\");\nvar util_2 = require(\"../core/util/util\");\nvar Path_1 = require(\"../core/util/Path\");\nvar validation_1 = require(\"../core/util/validation\");\nvar util_3 = require(\"@firebase/util\");\nvar EventRegistration_1 = require(\"../core/view/EventRegistration\");\nvar util_4 = require(\"@firebase/util\");\nvar __referenceConstructor;\n/**\n * A Query represents a filter to be applied to a firebase location. This object purely represents the\n * query expression (and exposes our public API to build the query). The actual query logic is in ViewBase.js.\n *\n * Since every Firebase reference is a query, Firebase inherits from this object.\n */\nvar Query = /** @class */ (function () {\n function Query(repo, path, queryParams_, orderByCalled_) {\n this.repo = repo;\n this.path = path;\n this.queryParams_ = queryParams_;\n this.orderByCalled_ = orderByCalled_;\n }\n Object.defineProperty(Query, \"__referenceConstructor\", {\n get: function () {\n util_1.assert(__referenceConstructor, 'Reference.ts has not been loaded');\n return __referenceConstructor;\n },\n set: function (val) {\n __referenceConstructor = val;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Validates start/end values for queries.\n * @param {!QueryParams} params\n * @private\n */\n Query.validateQueryEndpoints_ = function (params) {\n var startNode = null;\n var endNode = null;\n if (params.hasStart()) {\n startNode = params.getIndexStartValue();\n }\n if (params.hasEnd()) {\n endNode = params.getIndexEndValue();\n }\n if (params.getIndex() === KeyIndex_1.KEY_INDEX) {\n var tooManyArgsError = 'Query: When ordering by key, you may only pass one argument to ' +\n 'startAt(), endAt(), or equalTo().';\n var wrongArgTypeError = 'Query: When ordering by key, the argument passed to startAt(), endAt(),' +\n 'or equalTo() must be a string.';\n if (params.hasStart()) {\n var startName = params.getIndexStartName();\n if (startName != util_2.MIN_NAME) {\n throw new Error(tooManyArgsError);\n }\n else if (typeof startNode !== 'string') {\n throw new Error(wrongArgTypeError);\n }\n }\n if (params.hasEnd()) {\n var endName = params.getIndexEndName();\n if (endName != util_2.MAX_NAME) {\n throw new Error(tooManyArgsError);\n }\n else if (typeof endNode !== 'string') {\n throw new Error(wrongArgTypeError);\n }\n }\n }\n else if (params.getIndex() === PriorityIndex_1.PRIORITY_INDEX) {\n if ((startNode != null && !validation_1.isValidPriority(startNode)) ||\n (endNode != null && !validation_1.isValidPriority(endNode))) {\n throw new Error('Query: When ordering by priority, the first argument passed to startAt(), ' +\n 'endAt(), or equalTo() must be a valid priority value (null, a number, or a string).');\n }\n }\n else {\n util_1.assert(params.getIndex() instanceof PathIndex_1.PathIndex ||\n params.getIndex() === ValueIndex_1.VALUE_INDEX, 'unknown index type.');\n if ((startNode != null && typeof startNode === 'object') ||\n (endNode != null && typeof endNode === 'object')) {\n throw new Error('Query: First argument passed to startAt(), endAt(), or equalTo() cannot be ' +\n 'an object.');\n }\n }\n };\n /**\n * Validates that limit* has been called with the correct combination of parameters\n * @param {!QueryParams} params\n * @private\n */\n Query.validateLimit_ = function (params) {\n if (params.hasStart() &&\n params.hasEnd() &&\n params.hasLimit() &&\n !params.hasAnchoredLimit()) {\n throw new Error(\"Query: Can't combine startAt(), endAt(), and limit(). Use limitToFirst() or limitToLast() instead.\");\n }\n };\n /**\n * Validates that no other order by call has been made\n * @param {!string} fnName\n * @private\n */\n Query.prototype.validateNoPreviousOrderByCall_ = function (fnName) {\n if (this.orderByCalled_ === true) {\n throw new Error(fnName + \": You can't combine multiple orderBy calls.\");\n }\n };\n /**\n * @return {!QueryParams}\n */\n Query.prototype.getQueryParams = function () {\n return this.queryParams_;\n };\n /**\n * @return {!Reference}\n */\n Query.prototype.getRef = function () {\n util_3.validateArgCount('Query.ref', 0, 0, arguments.length);\n // This is a slight hack. We cannot goog.require('fb.api.Firebase'), since Firebase requires fb.api.Query.\n // However, we will always export 'Firebase' to the global namespace, so it's guaranteed to exist by the time this\n // method gets called.\n return new Query.__referenceConstructor(this.repo, this.path);\n };\n /**\n * @param {!string} eventType\n * @param {!function(DataSnapshot, string=)} callback\n * @param {(function(Error)|Object)=} cancelCallbackOrContext\n * @param {Object=} context\n * @return {!function(DataSnapshot, string=)}\n */\n Query.prototype.on = function (eventType, callback, cancelCallbackOrContext, context) {\n util_3.validateArgCount('Query.on', 2, 4, arguments.length);\n validation_1.validateEventType('Query.on', 1, eventType, false);\n util_3.validateCallback('Query.on', 2, callback, false);\n var ret = Query.getCancelAndContextArgs_('Query.on', cancelCallbackOrContext, context);\n if (eventType === 'value') {\n this.onValueEvent(callback, ret.cancel, ret.context);\n }\n else {\n var callbacks = {};\n callbacks[eventType] = callback;\n this.onChildEvent(callbacks, ret.cancel, ret.context);\n }\n return callback;\n };\n /**\n * @param {!function(!DataSnapshot)} callback\n * @param {?function(Error)} cancelCallback\n * @param {?Object} context\n * @protected\n */\n Query.prototype.onValueEvent = function (callback, cancelCallback, context) {\n var container = new EventRegistration_1.ValueEventRegistration(callback, cancelCallback || null, context || null);\n this.repo.addEventCallbackForQuery(this, container);\n };\n /**\n * @param {!Object.} callbacks\n * @param {?function(Error)} cancelCallback\n * @param {?Object} context\n * @protected\n */\n Query.prototype.onChildEvent = function (callbacks, cancelCallback, context) {\n var container = new EventRegistration_1.ChildEventRegistration(callbacks, cancelCallback, context);\n this.repo.addEventCallbackForQuery(this, container);\n };\n /**\n * @param {string=} eventType\n * @param {(function(!DataSnapshot, ?string=))=} callback\n * @param {Object=} context\n */\n Query.prototype.off = function (eventType, callback, context) {\n util_3.validateArgCount('Query.off', 0, 3, arguments.length);\n validation_1.validateEventType('Query.off', 1, eventType, true);\n util_3.validateCallback('Query.off', 2, callback, true);\n util_3.validateContextObject('Query.off', 3, context, true);\n var container = null;\n var callbacks = null;\n if (eventType === 'value') {\n var valueCallback = callback || null;\n container = new EventRegistration_1.ValueEventRegistration(valueCallback, null, context || null);\n }\n else if (eventType) {\n if (callback) {\n callbacks = {};\n callbacks[eventType] = callback;\n }\n container = new EventRegistration_1.ChildEventRegistration(callbacks, null, context || null);\n }\n this.repo.removeEventCallbackForQuery(this, container);\n };\n /**\n * Attaches a listener, waits for the first event, and then removes the listener\n * @param {!string} eventType\n * @param {!function(!DataSnapshot, string=)} userCallback\n * @param cancelOrContext\n * @param context\n * @return {!firebase.Promise}\n */\n Query.prototype.once = function (eventType, userCallback, cancelOrContext, context) {\n var _this = this;\n util_3.validateArgCount('Query.once', 1, 4, arguments.length);\n validation_1.validateEventType('Query.once', 1, eventType, false);\n util_3.validateCallback('Query.once', 2, userCallback, true);\n var ret = Query.getCancelAndContextArgs_('Query.once', cancelOrContext, context);\n // TODO: Implement this more efficiently (in particular, use 'get' wire protocol for 'value' event)\n // TODO: consider actually wiring the callbacks into the promise. We cannot do this without a breaking change\n // because the API currently expects callbacks will be called synchronously if the data is cached, but this is\n // against the Promise specification.\n var firstCall = true;\n var deferred = new util_4.Deferred();\n // A dummy error handler in case a user wasn't expecting promises\n deferred.promise.catch(function () { });\n var onceCallback = function (snapshot) {\n // NOTE: Even though we unsubscribe, we may get called multiple times if a single action (e.g. set() with JSON)\n // triggers multiple events (e.g. child_added or child_changed).\n if (firstCall) {\n firstCall = false;\n _this.off(eventType, onceCallback);\n if (userCallback) {\n userCallback.bind(ret.context)(snapshot);\n }\n deferred.resolve(snapshot);\n }\n };\n this.on(eventType, onceCallback, \n /*cancel=*/ function (err) {\n _this.off(eventType, onceCallback);\n if (ret.cancel)\n ret.cancel.bind(ret.context)(err);\n deferred.reject(err);\n });\n return deferred.promise;\n };\n /**\n * Set a limit and anchor it to the start of the window.\n * @param {!number} limit\n * @return {!Query}\n */\n Query.prototype.limitToFirst = function (limit) {\n util_3.validateArgCount('Query.limitToFirst', 1, 1, arguments.length);\n if (typeof limit !== 'number' ||\n Math.floor(limit) !== limit ||\n limit <= 0) {\n throw new Error('Query.limitToFirst: First argument must be a positive integer.');\n }\n if (this.queryParams_.hasLimit()) {\n throw new Error('Query.limitToFirst: Limit was already set (by another call to limit, ' +\n 'limitToFirst, or limitToLast).');\n }\n return new Query(this.repo, this.path, this.queryParams_.limitToFirst(limit), this.orderByCalled_);\n };\n /**\n * Set a limit and anchor it to the end of the window.\n * @param {!number} limit\n * @return {!Query}\n */\n Query.prototype.limitToLast = function (limit) {\n util_3.validateArgCount('Query.limitToLast', 1, 1, arguments.length);\n if (typeof limit !== 'number' ||\n Math.floor(limit) !== limit ||\n limit <= 0) {\n throw new Error('Query.limitToLast: First argument must be a positive integer.');\n }\n if (this.queryParams_.hasLimit()) {\n throw new Error('Query.limitToLast: Limit was already set (by another call to limit, ' +\n 'limitToFirst, or limitToLast).');\n }\n return new Query(this.repo, this.path, this.queryParams_.limitToLast(limit), this.orderByCalled_);\n };\n /**\n * Given a child path, return a new query ordered by the specified grandchild path.\n * @param {!string} path\n * @return {!Query}\n */\n Query.prototype.orderByChild = function (path) {\n util_3.validateArgCount('Query.orderByChild', 1, 1, arguments.length);\n if (path === '$key') {\n throw new Error('Query.orderByChild: \"$key\" is invalid. Use Query.orderByKey() instead.');\n }\n else if (path === '$priority') {\n throw new Error('Query.orderByChild: \"$priority\" is invalid. Use Query.orderByPriority() instead.');\n }\n else if (path === '$value') {\n throw new Error('Query.orderByChild: \"$value\" is invalid. Use Query.orderByValue() instead.');\n }\n validation_1.validatePathString('Query.orderByChild', 1, path, false);\n this.validateNoPreviousOrderByCall_('Query.orderByChild');\n var parsedPath = new Path_1.Path(path);\n if (parsedPath.isEmpty()) {\n throw new Error('Query.orderByChild: cannot pass in empty path. Use Query.orderByValue() instead.');\n }\n var index = new PathIndex_1.PathIndex(parsedPath);\n var newParams = this.queryParams_.orderBy(index);\n Query.validateQueryEndpoints_(newParams);\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\n };\n /**\n * Return a new query ordered by the KeyIndex\n * @return {!Query}\n */\n Query.prototype.orderByKey = function () {\n util_3.validateArgCount('Query.orderByKey', 0, 0, arguments.length);\n this.validateNoPreviousOrderByCall_('Query.orderByKey');\n var newParams = this.queryParams_.orderBy(KeyIndex_1.KEY_INDEX);\n Query.validateQueryEndpoints_(newParams);\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\n };\n /**\n * Return a new query ordered by the PriorityIndex\n * @return {!Query}\n */\n Query.prototype.orderByPriority = function () {\n util_3.validateArgCount('Query.orderByPriority', 0, 0, arguments.length);\n this.validateNoPreviousOrderByCall_('Query.orderByPriority');\n var newParams = this.queryParams_.orderBy(PriorityIndex_1.PRIORITY_INDEX);\n Query.validateQueryEndpoints_(newParams);\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\n };\n /**\n * Return a new query ordered by the ValueIndex\n * @return {!Query}\n */\n Query.prototype.orderByValue = function () {\n util_3.validateArgCount('Query.orderByValue', 0, 0, arguments.length);\n this.validateNoPreviousOrderByCall_('Query.orderByValue');\n var newParams = this.queryParams_.orderBy(ValueIndex_1.VALUE_INDEX);\n Query.validateQueryEndpoints_(newParams);\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\n };\n /**\n * @param {number|string|boolean|null} value\n * @param {?string=} name\n * @return {!Query}\n */\n Query.prototype.startAt = function (value, name) {\n if (value === void 0) { value = null; }\n util_3.validateArgCount('Query.startAt', 0, 2, arguments.length);\n validation_1.validateFirebaseDataArg('Query.startAt', 1, value, this.path, true);\n validation_1.validateKey('Query.startAt', 2, name, true);\n var newParams = this.queryParams_.startAt(value, name);\n Query.validateLimit_(newParams);\n Query.validateQueryEndpoints_(newParams);\n if (this.queryParams_.hasStart()) {\n throw new Error('Query.startAt: Starting point was already set (by another call to startAt ' +\n 'or equalTo).');\n }\n // Calling with no params tells us to start at the beginning.\n if (value === undefined) {\n value = null;\n name = null;\n }\n return new Query(this.repo, this.path, newParams, this.orderByCalled_);\n };\n /**\n * @param {number|string|boolean|null} value\n * @param {?string=} name\n * @return {!Query}\n */\n Query.prototype.endAt = function (value, name) {\n if (value === void 0) { value = null; }\n util_3.validateArgCount('Query.endAt', 0, 2, arguments.length);\n validation_1.validateFirebaseDataArg('Query.endAt', 1, value, this.path, true);\n validation_1.validateKey('Query.endAt', 2, name, true);\n var newParams = this.queryParams_.endAt(value, name);\n Query.validateLimit_(newParams);\n Query.validateQueryEndpoints_(newParams);\n if (this.queryParams_.hasEnd()) {\n throw new Error('Query.endAt: Ending point was already set (by another call to endAt or ' +\n 'equalTo).');\n }\n return new Query(this.repo, this.path, newParams, this.orderByCalled_);\n };\n /**\n * Load the selection of children with exactly the specified value, and, optionally,\n * the specified name.\n * @param {number|string|boolean|null} value\n * @param {string=} name\n * @return {!Query}\n */\n Query.prototype.equalTo = function (value, name) {\n util_3.validateArgCount('Query.equalTo', 1, 2, arguments.length);\n validation_1.validateFirebaseDataArg('Query.equalTo', 1, value, this.path, false);\n validation_1.validateKey('Query.equalTo', 2, name, true);\n if (this.queryParams_.hasStart()) {\n throw new Error('Query.equalTo: Starting point was already set (by another call to startAt or ' +\n 'equalTo).');\n }\n if (this.queryParams_.hasEnd()) {\n throw new Error('Query.equalTo: Ending point was already set (by another call to endAt or ' +\n 'equalTo).');\n }\n return this.startAt(value, name).endAt(value, name);\n };\n /**\n * @return {!string} URL for this location.\n */\n Query.prototype.toString = function () {\n util_3.validateArgCount('Query.toString', 0, 0, arguments.length);\n return this.repo.toString() + this.path.toUrlEncodedString();\n };\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\n // for end-users.\n Query.prototype.toJSON = function () {\n // An optional spacer argument is unnecessary for a string.\n util_3.validateArgCount('Query.toJSON', 0, 1, arguments.length);\n return this.toString();\n };\n /**\n * An object representation of the query parameters used by this Query.\n * @return {!Object}\n */\n Query.prototype.queryObject = function () {\n return this.queryParams_.getQueryObject();\n };\n /**\n * @return {!string}\n */\n Query.prototype.queryIdentifier = function () {\n var obj = this.queryObject();\n var id = util_2.ObjectToUniqueKey(obj);\n return id === '{}' ? 'default' : id;\n };\n /**\n * Return true if this query and the provided query are equivalent; otherwise, return false.\n * @param {Query} other\n * @return {boolean}\n */\n Query.prototype.isEqual = function (other) {\n util_3.validateArgCount('Query.isEqual', 1, 1, arguments.length);\n if (!(other instanceof Query)) {\n var error = 'Query.isEqual failed: First argument must be an instance of firebase.database.Query.';\n throw new Error(error);\n }\n var sameRepo = this.repo === other.repo;\n var samePath = this.path.equals(other.path);\n var sameQueryIdentifier = this.queryIdentifier() === other.queryIdentifier();\n return sameRepo && samePath && sameQueryIdentifier;\n };\n /**\n * Helper used by .on and .once to extract the context and or cancel arguments.\n * @param {!string} fnName The function name (on or once)\n * @param {(function(Error)|Object)=} cancelOrContext\n * @param {Object=} context\n * @return {{cancel: ?function(Error), context: ?Object}}\n * @private\n */\n Query.getCancelAndContextArgs_ = function (fnName, cancelOrContext, context) {\n var ret = { cancel: null, context: null };\n if (cancelOrContext && context) {\n ret.cancel = cancelOrContext;\n util_3.validateCallback(fnName, 3, ret.cancel, true);\n ret.context = context;\n util_3.validateContextObject(fnName, 4, ret.context, true);\n }\n else if (cancelOrContext) {\n // we have either a cancel callback or a context.\n if (typeof cancelOrContext === 'object' && cancelOrContext !== null) {\n // it's a context!\n ret.context = cancelOrContext;\n }\n else if (typeof cancelOrContext === 'function') {\n ret.cancel = cancelOrContext;\n }\n else {\n throw new Error(util_3.errorPrefix(fnName, 3, true) +\n ' must either be a cancel callback or a context object.');\n }\n }\n return ret;\n };\n Object.defineProperty(Query.prototype, \"ref\", {\n get: function () {\n return this.getRef();\n },\n enumerable: true,\n configurable: true\n });\n return Query;\n}());\nexports.Query = Query;\n\n//# sourceMappingURL=Query.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/Query.js\n// module id = 34\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar util_3 = require(\"@firebase/util\");\nvar MAX_NODE;\nfunction setMaxNode(val) {\n MAX_NODE = val;\n}\nexports.setMaxNode = setMaxNode;\n/**\n * @param {(!string|!number)} priority\n * @return {!string}\n */\nexports.priorityHashText = function (priority) {\n if (typeof priority === 'number')\n return 'number:' + util_2.doubleToIEEE754String(priority);\n else\n return 'string:' + priority;\n};\n/**\n * Validates that a priority snapshot Node is valid.\n *\n * @param {!Node} priorityNode\n */\nexports.validatePriorityNode = function (priorityNode) {\n if (priorityNode.isLeafNode()) {\n var val = priorityNode.val();\n util_1.assert(typeof val === 'string' ||\n typeof val === 'number' ||\n (typeof val === 'object' && util_3.contains(val, '.sv')), 'Priority must be a string or number.');\n }\n else {\n util_1.assert(priorityNode === MAX_NODE || priorityNode.isEmpty(), 'priority of unexpected type.');\n }\n // Don't call getPriority() on MAX_NODE to avoid hitting assertion.\n util_1.assert(priorityNode === MAX_NODE || priorityNode.getPriority().isEmpty(), \"Priority nodes can't have a priority of their own.\");\n};\n\n//# sourceMappingURL=snap.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/snap.js\n// module id = 35\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Index_1 = require(\"./Index\");\nvar Node_1 = require(\"../Node\");\nvar util_1 = require(\"../../util/util\");\nvar nodeFromJSON_1 = require(\"../nodeFromJSON\");\n/**\n * @constructor\n * @extends {Index}\n * @private\n */\nvar ValueIndex = /** @class */ (function (_super) {\n __extends(ValueIndex, _super);\n function ValueIndex() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.compare = function (a, b) {\n var indexCmp = a.node.compareTo(b.node);\n if (indexCmp === 0) {\n return util_1.nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n };\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.isDefinedOn = function (node) {\n return true;\n };\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\n return !oldNode.equals(newNode);\n };\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.minPost = function () {\n return Node_1.NamedNode.MIN;\n };\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.maxPost = function () {\n return Node_1.NamedNode.MAX;\n };\n /**\n * @param {*} indexValue\n * @param {string} name\n * @return {!NamedNode}\n */\n ValueIndex.prototype.makePost = function (indexValue, name) {\n var valueNode = nodeFromJSON_1.nodeFromJSON(indexValue);\n return new Node_1.NamedNode(name, valueNode);\n };\n /**\n * @return {!string} String representation for inclusion in a query spec\n */\n ValueIndex.prototype.toString = function () {\n return '.value';\n };\n return ValueIndex;\n}(Index_1.Index));\nexports.ValueIndex = ValueIndex;\nexports.VALUE_INDEX = new ValueIndex();\n\n//# sourceMappingURL=ValueIndex.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/ValueIndex.js\n// module id = 36\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar childSet_1 = require(\"./childSet\");\nvar util_2 = require(\"@firebase/util\");\nvar Node_1 = require(\"./Node\");\nvar PriorityIndex_1 = require(\"./indexes/PriorityIndex\");\nvar KeyIndex_1 = require(\"./indexes/KeyIndex\");\nvar _defaultIndexMap;\nvar fallbackObject = {};\n/**\n *\n * @param {Object.>} indexes\n * @param {Object.} indexSet\n * @constructor\n */\nvar IndexMap = /** @class */ (function () {\n function IndexMap(indexes_, indexSet_) {\n this.indexes_ = indexes_;\n this.indexSet_ = indexSet_;\n }\n Object.defineProperty(IndexMap, \"Default\", {\n /**\n * The default IndexMap for nodes without a priority\n * @type {!IndexMap}\n * @const\n */\n get: function () {\n util_1.assert(fallbackObject && PriorityIndex_1.PRIORITY_INDEX, 'ChildrenNode.ts has not been loaded');\n _defaultIndexMap =\n _defaultIndexMap ||\n new IndexMap({ '.priority': fallbackObject }, { '.priority': PriorityIndex_1.PRIORITY_INDEX });\n return _defaultIndexMap;\n },\n enumerable: true,\n configurable: true\n });\n /**\n *\n * @param {!string} indexKey\n * @return {?SortedMap.}\n */\n IndexMap.prototype.get = function (indexKey) {\n var sortedMap = util_2.safeGet(this.indexes_, indexKey);\n if (!sortedMap)\n throw new Error('No index defined for ' + indexKey);\n if (sortedMap === fallbackObject) {\n // The index exists, but it falls back to just name comparison. Return null so that the calling code uses the\n // regular child map\n return null;\n }\n else {\n return sortedMap;\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {boolean}\n */\n IndexMap.prototype.hasIndex = function (indexDefinition) {\n return util_2.contains(this.indexSet_, indexDefinition.toString());\n };\n /**\n * @param {!Index} indexDefinition\n * @param {!SortedMap.} existingChildren\n * @return {!IndexMap}\n */\n IndexMap.prototype.addIndex = function (indexDefinition, existingChildren) {\n util_1.assert(indexDefinition !== KeyIndex_1.KEY_INDEX, \"KeyIndex always exists and isn't meant to be added to the IndexMap.\");\n var childList = [];\n var sawIndexedValue = false;\n var iter = existingChildren.getIterator(Node_1.NamedNode.Wrap);\n var next = iter.getNext();\n while (next) {\n sawIndexedValue =\n sawIndexedValue || indexDefinition.isDefinedOn(next.node);\n childList.push(next);\n next = iter.getNext();\n }\n var newIndex;\n if (sawIndexedValue) {\n newIndex = childSet_1.buildChildSet(childList, indexDefinition.getCompare());\n }\n else {\n newIndex = fallbackObject;\n }\n var indexName = indexDefinition.toString();\n var newIndexSet = util_2.clone(this.indexSet_);\n newIndexSet[indexName] = indexDefinition;\n var newIndexes = util_2.clone(this.indexes_);\n newIndexes[indexName] = newIndex;\n return new IndexMap(newIndexes, newIndexSet);\n };\n /**\n * Ensure that this node is properly tracked in any indexes that we're maintaining\n * @param {!NamedNode} namedNode\n * @param {!SortedMap.} existingChildren\n * @return {!IndexMap}\n */\n IndexMap.prototype.addToIndexes = function (namedNode, existingChildren) {\n var _this = this;\n var newIndexes = util_2.map(this.indexes_, function (indexedChildren, indexName) {\n var index = util_2.safeGet(_this.indexSet_, indexName);\n util_1.assert(index, 'Missing index implementation for ' + indexName);\n if (indexedChildren === fallbackObject) {\n // Check to see if we need to index everything\n if (index.isDefinedOn(namedNode.node)) {\n // We need to build this index\n var childList = [];\n var iter = existingChildren.getIterator(Node_1.NamedNode.Wrap);\n var next = iter.getNext();\n while (next) {\n if (next.name != namedNode.name) {\n childList.push(next);\n }\n next = iter.getNext();\n }\n childList.push(namedNode);\n return childSet_1.buildChildSet(childList, index.getCompare());\n }\n else {\n // No change, this remains a fallback\n return fallbackObject;\n }\n }\n else {\n var existingSnap = existingChildren.get(namedNode.name);\n var newChildren = indexedChildren;\n if (existingSnap) {\n newChildren = newChildren.remove(new Node_1.NamedNode(namedNode.name, existingSnap));\n }\n return newChildren.insert(namedNode, namedNode.node);\n }\n });\n return new IndexMap(newIndexes, this.indexSet_);\n };\n /**\n * Create a new IndexMap instance with the given value removed\n * @param {!NamedNode} namedNode\n * @param {!SortedMap.} existingChildren\n * @return {!IndexMap}\n */\n IndexMap.prototype.removeFromIndexes = function (namedNode, existingChildren) {\n var newIndexes = util_2.map(this.indexes_, function (indexedChildren) {\n if (indexedChildren === fallbackObject) {\n // This is the fallback. Just return it, nothing to do in this case\n return indexedChildren;\n }\n else {\n var existingSnap = existingChildren.get(namedNode.name);\n if (existingSnap) {\n return indexedChildren.remove(new Node_1.NamedNode(namedNode.name, existingSnap));\n }\n else {\n // No record of this child\n return indexedChildren;\n }\n }\n });\n return new IndexMap(newIndexes, this.indexSet_);\n };\n return IndexMap;\n}());\nexports.IndexMap = IndexMap;\n\n//# sourceMappingURL=IndexMap.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/IndexMap.js\n// module id = 37\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SortedMap_1 = require(\"../util/SortedMap\");\nvar SortedMap_2 = require(\"../util/SortedMap\");\nvar LOG_2 = Math.log(2);\n/**\n * @constructor\n */\nvar Base12Num = /** @class */ (function () {\n /**\n * @param {number} length\n */\n function Base12Num(length) {\n var logBase2 = function (num) {\n return parseInt((Math.log(num) / LOG_2), 10);\n };\n var bitMask = function (bits) { return parseInt(Array(bits + 1).join('1'), 2); };\n this.count = logBase2(length + 1);\n this.current_ = this.count - 1;\n var mask = bitMask(this.count);\n this.bits_ = (length + 1) & mask;\n }\n /**\n * @return {boolean}\n */\n Base12Num.prototype.nextBitIsOne = function () {\n //noinspection JSBitwiseOperatorUsage\n var result = !(this.bits_ & (0x1 << this.current_));\n this.current_--;\n return result;\n };\n return Base12Num;\n}());\n/**\n * Takes a list of child nodes and constructs a SortedSet using the given comparison\n * function\n *\n * Uses the algorithm described in the paper linked here:\n * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.1458\n *\n * @template K, V\n * @param {Array.} childList Unsorted list of children\n * @param {function(!NamedNode, !NamedNode):number} cmp The comparison method to be used\n * @param {(function(NamedNode):K)=} keyFn An optional function to extract K from a node wrapper, if K's\n * type is not NamedNode\n * @param {(function(K, K):number)=} mapSortFn An optional override for comparator used by the generated sorted map\n * @return {SortedMap.}\n */\nexports.buildChildSet = function (childList, cmp, keyFn, mapSortFn) {\n childList.sort(cmp);\n var buildBalancedTree = function (low, high) {\n var length = high - low;\n var namedNode;\n var key;\n if (length == 0) {\n return null;\n }\n else if (length == 1) {\n namedNode = childList[low];\n key = keyFn ? keyFn(namedNode) : namedNode;\n return new SortedMap_1.LLRBNode(key, namedNode.node, SortedMap_1.LLRBNode.BLACK, null, null);\n }\n else {\n var middle = parseInt((length / 2), 10) + low;\n var left = buildBalancedTree(low, middle);\n var right = buildBalancedTree(middle + 1, high);\n namedNode = childList[middle];\n key = keyFn ? keyFn(namedNode) : namedNode;\n return new SortedMap_1.LLRBNode(key, namedNode.node, SortedMap_1.LLRBNode.BLACK, left, right);\n }\n };\n var buildFrom12Array = function (base12) {\n var node = null;\n var root = null;\n var index = childList.length;\n var buildPennant = function (chunkSize, color) {\n var low = index - chunkSize;\n var high = index;\n index -= chunkSize;\n var childTree = buildBalancedTree(low + 1, high);\n var namedNode = childList[low];\n var key = keyFn ? keyFn(namedNode) : namedNode;\n attachPennant(new SortedMap_1.LLRBNode(key, namedNode.node, color, null, childTree));\n };\n var attachPennant = function (pennant) {\n if (node) {\n node.left = pennant;\n node = pennant;\n }\n else {\n root = pennant;\n node = pennant;\n }\n };\n for (var i = 0; i < base12.count; ++i) {\n var isOne = base12.nextBitIsOne();\n // The number of nodes taken in each slice is 2^(arr.length - (i + 1))\n var chunkSize = Math.pow(2, base12.count - (i + 1));\n if (isOne) {\n buildPennant(chunkSize, SortedMap_1.LLRBNode.BLACK);\n }\n else {\n // current == 2\n buildPennant(chunkSize, SortedMap_1.LLRBNode.BLACK);\n buildPennant(chunkSize, SortedMap_1.LLRBNode.RED);\n }\n }\n return root;\n };\n var base12 = new Base12Num(childList.length);\n var root = buildFrom12Array(base12);\n return new SortedMap_2.SortedMap(mapSortFn || cmp, root);\n};\n\n//# sourceMappingURL=childSet.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/childSet.js\n// module id = 38\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../util/util\");\nfunction NAME_ONLY_COMPARATOR(left, right) {\n return util_1.nameCompare(left.name, right.name);\n}\nexports.NAME_ONLY_COMPARATOR = NAME_ONLY_COMPARATOR;\nfunction NAME_COMPARATOR(left, right) {\n return util_1.nameCompare(left, right);\n}\nexports.NAME_COMPARATOR = NAME_COMPARATOR;\n\n//# sourceMappingURL=comparators.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/comparators.js\n// module id = 39\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../../util/util\");\nvar Index_1 = require(\"./Index\");\nvar ChildrenNode_1 = require(\"../ChildrenNode\");\nvar Node_1 = require(\"../Node\");\nvar nodeFromJSON_1 = require(\"../nodeFromJSON\");\n/**\n * @param {!Path} indexPath\n * @constructor\n * @extends {Index}\n */\nvar PathIndex = /** @class */ (function (_super) {\n __extends(PathIndex, _super);\n function PathIndex(indexPath_) {\n var _this = _super.call(this) || this;\n _this.indexPath_ = indexPath_;\n util_1.assert(!indexPath_.isEmpty() && indexPath_.getFront() !== '.priority', \"Can't create PathIndex with empty path or .priority key\");\n return _this;\n }\n /**\n * @param {!Node} snap\n * @return {!Node}\n * @protected\n */\n PathIndex.prototype.extractChild = function (snap) {\n return snap.getChild(this.indexPath_);\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.isDefinedOn = function (node) {\n return !node.getChild(this.indexPath_).isEmpty();\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.compare = function (a, b) {\n var aChild = this.extractChild(a.node);\n var bChild = this.extractChild(b.node);\n var indexCmp = aChild.compareTo(bChild);\n if (indexCmp === 0) {\n return util_2.nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.makePost = function (indexValue, name) {\n var valueNode = nodeFromJSON_1.nodeFromJSON(indexValue);\n var node = ChildrenNode_1.ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, valueNode);\n return new Node_1.NamedNode(name, node);\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.maxPost = function () {\n var node = ChildrenNode_1.ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, ChildrenNode_1.MAX_NODE);\n return new Node_1.NamedNode(util_2.MAX_NAME, node);\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.toString = function () {\n return this.indexPath_.slice().join('/');\n };\n return PathIndex;\n}(Index_1.Index));\nexports.PathIndex = PathIndex;\n\n//# sourceMappingURL=PathIndex.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/PathIndex.js\n// module id = 40\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar validation_1 = require(\"../core/util/validation\");\nvar Path_1 = require(\"../core/util/Path\");\nvar PriorityIndex_1 = require(\"../core/snap/indexes/PriorityIndex\");\n/**\n * Class representing a firebase data snapshot. It wraps a SnapshotNode and\n * surfaces the public methods (val, forEach, etc.) we want to expose.\n */\nvar DataSnapshot = /** @class */ (function () {\n /**\n * @param {!Node} node_ A SnapshotNode to wrap.\n * @param {!Reference} ref_ The ref of the location this snapshot came from.\n * @param {!Index} index_ The iteration order for this snapshot\n */\n function DataSnapshot(node_, ref_, index_) {\n this.node_ = node_;\n this.ref_ = ref_;\n this.index_ = index_;\n }\n /**\n * Retrieves the snapshot contents as JSON. Returns null if the snapshot is\n * empty.\n *\n * @return {*} JSON representation of the DataSnapshot contents, or null if empty.\n */\n DataSnapshot.prototype.val = function () {\n util_1.validateArgCount('DataSnapshot.val', 0, 0, arguments.length);\n return this.node_.val();\n };\n /**\n * Returns the snapshot contents as JSON, including priorities of node. Suitable for exporting\n * the entire node contents.\n * @return {*} JSON representation of the DataSnapshot contents, or null if empty.\n */\n DataSnapshot.prototype.exportVal = function () {\n util_1.validateArgCount('DataSnapshot.exportVal', 0, 0, arguments.length);\n return this.node_.val(true);\n };\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\n // for end-users\n DataSnapshot.prototype.toJSON = function () {\n // Optional spacer argument is unnecessary because we're depending on recursion rather than stringifying the content\n util_1.validateArgCount('DataSnapshot.toJSON', 0, 1, arguments.length);\n return this.exportVal();\n };\n /**\n * Returns whether the snapshot contains a non-null value.\n *\n * @return {boolean} Whether the snapshot contains a non-null value, or is empty.\n */\n DataSnapshot.prototype.exists = function () {\n util_1.validateArgCount('DataSnapshot.exists', 0, 0, arguments.length);\n return !this.node_.isEmpty();\n };\n /**\n * Returns a DataSnapshot of the specified child node's contents.\n *\n * @param {!string} childPathString Path to a child.\n * @return {!DataSnapshot} DataSnapshot for child node.\n */\n DataSnapshot.prototype.child = function (childPathString) {\n util_1.validateArgCount('DataSnapshot.child', 0, 1, arguments.length);\n // Ensure the childPath is a string (can be a number)\n childPathString = String(childPathString);\n validation_1.validatePathString('DataSnapshot.child', 1, childPathString, false);\n var childPath = new Path_1.Path(childPathString);\n var childRef = this.ref_.child(childPath);\n return new DataSnapshot(this.node_.getChild(childPath), childRef, PriorityIndex_1.PRIORITY_INDEX);\n };\n /**\n * Returns whether the snapshot contains a child at the specified path.\n *\n * @param {!string} childPathString Path to a child.\n * @return {boolean} Whether the child exists.\n */\n DataSnapshot.prototype.hasChild = function (childPathString) {\n util_1.validateArgCount('DataSnapshot.hasChild', 1, 1, arguments.length);\n validation_1.validatePathString('DataSnapshot.hasChild', 1, childPathString, false);\n var childPath = new Path_1.Path(childPathString);\n return !this.node_.getChild(childPath).isEmpty();\n };\n /**\n * Returns the priority of the object, or null if no priority was set.\n *\n * @return {string|number|null} The priority.\n */\n DataSnapshot.prototype.getPriority = function () {\n util_1.validateArgCount('DataSnapshot.getPriority', 0, 0, arguments.length);\n // typecast here because we never return deferred values or internal priorities (MAX_PRIORITY)\n return this.node_.getPriority().val();\n };\n /**\n * Iterates through child nodes and calls the specified action for each one.\n *\n * @param {function(!DataSnapshot)} action Callback function to be called\n * for each child.\n * @return {boolean} True if forEach was canceled by action returning true for\n * one of the child nodes.\n */\n DataSnapshot.prototype.forEach = function (action) {\n var _this = this;\n util_1.validateArgCount('DataSnapshot.forEach', 1, 1, arguments.length);\n util_1.validateCallback('DataSnapshot.forEach', 1, action, false);\n if (this.node_.isLeafNode())\n return false;\n var childrenNode = this.node_;\n // Sanitize the return value to a boolean. ChildrenNode.forEachChild has a weird return type...\n return !!childrenNode.forEachChild(this.index_, function (key, node) {\n return action(new DataSnapshot(node, _this.ref_.child(key), PriorityIndex_1.PRIORITY_INDEX));\n });\n };\n /**\n * Returns whether this DataSnapshot has children.\n * @return {boolean} True if the DataSnapshot contains 1 or more child nodes.\n */\n DataSnapshot.prototype.hasChildren = function () {\n util_1.validateArgCount('DataSnapshot.hasChildren', 0, 0, arguments.length);\n if (this.node_.isLeafNode())\n return false;\n else\n return !this.node_.isEmpty();\n };\n Object.defineProperty(DataSnapshot.prototype, \"key\", {\n get: function () {\n return this.ref_.getKey();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Returns the number of children for this DataSnapshot.\n * @return {number} The number of children that this DataSnapshot contains.\n */\n DataSnapshot.prototype.numChildren = function () {\n util_1.validateArgCount('DataSnapshot.numChildren', 0, 0, arguments.length);\n return this.node_.numChildren();\n };\n /**\n * @return {Reference} The Firebase reference for the location this snapshot's data came from.\n */\n DataSnapshot.prototype.getRef = function () {\n util_1.validateArgCount('DataSnapshot.ref', 0, 0, arguments.length);\n return this.ref_;\n };\n Object.defineProperty(DataSnapshot.prototype, \"ref\", {\n get: function () {\n return this.getRef();\n },\n enumerable: true,\n configurable: true\n });\n return DataSnapshot;\n}());\nexports.DataSnapshot = DataSnapshot;\n\n//# sourceMappingURL=DataSnapshot.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/DataSnapshot.js\n// module id = 41\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Path_1 = require(\"./Path\");\nvar SparseSnapshotTree_1 = require(\"../SparseSnapshotTree\");\nvar LeafNode_1 = require(\"../snap/LeafNode\");\nvar nodeFromJSON_1 = require(\"../snap/nodeFromJSON\");\nvar PriorityIndex_1 = require(\"../snap/indexes/PriorityIndex\");\n/**\n * Generate placeholders for deferred values.\n * @param {?Object} values\n * @return {!Object}\n */\nexports.generateWithValues = function (values) {\n values = values || {};\n values['timestamp'] = values['timestamp'] || new Date().getTime();\n return values;\n};\n/**\n * Value to use when firing local events. When writing server values, fire\n * local events with an approximate value, otherwise return value as-is.\n * @param {(Object|string|number|boolean)} value\n * @param {!Object} serverValues\n * @return {!(string|number|boolean)}\n */\nexports.resolveDeferredValue = function (value, serverValues) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n else {\n util_1.assert('.sv' in value, 'Unexpected leaf node or priority contents');\n return serverValues[value['.sv']];\n }\n};\n/**\n * Recursively replace all deferred values and priorities in the tree with the\n * specified generated replacement values.\n * @param {!SparseSnapshotTree} tree\n * @param {!Object} serverValues\n * @return {!SparseSnapshotTree}\n */\nexports.resolveDeferredValueTree = function (tree, serverValues) {\n var resolvedTree = new SparseSnapshotTree_1.SparseSnapshotTree();\n tree.forEachTree(new Path_1.Path(''), function (path, node) {\n resolvedTree.remember(path, exports.resolveDeferredValueSnapshot(node, serverValues));\n });\n return resolvedTree;\n};\n/**\n * Recursively replace all deferred values and priorities in the node with the\n * specified generated replacement values. If there are no server values in the node,\n * it'll be returned as-is.\n * @param {!Node} node\n * @param {!Object} serverValues\n * @return {!Node}\n */\nexports.resolveDeferredValueSnapshot = function (node, serverValues) {\n var rawPri = node.getPriority().val();\n var priority = exports.resolveDeferredValue(rawPri, serverValues);\n var newNode;\n if (node.isLeafNode()) {\n var leafNode = node;\n var value = exports.resolveDeferredValue(leafNode.getValue(), serverValues);\n if (value !== leafNode.getValue() ||\n priority !== leafNode.getPriority().val()) {\n return new LeafNode_1.LeafNode(value, nodeFromJSON_1.nodeFromJSON(priority));\n }\n else {\n return node;\n }\n }\n else {\n var childrenNode = node;\n newNode = childrenNode;\n if (priority !== childrenNode.getPriority().val()) {\n newNode = newNode.updatePriority(new LeafNode_1.LeafNode(priority));\n }\n childrenNode.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n var newChildNode = exports.resolveDeferredValueSnapshot(childNode, serverValues);\n if (newChildNode !== childNode) {\n newNode = newNode.updateImmediateChild(childName, newChildNode);\n }\n });\n return newNode;\n }\n};\n\n//# sourceMappingURL=ServerValues.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/ServerValues.js\n// module id = 42\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = require(\"./util/Path\");\nvar PriorityIndex_1 = require(\"./snap/indexes/PriorityIndex\");\nvar CountedSet_1 = require(\"./util/CountedSet\");\n/**\n * Helper class to store a sparse set of snapshots.\n *\n * @constructor\n */\nvar SparseSnapshotTree = /** @class */ (function () {\n function SparseSnapshotTree() {\n /**\n * @private\n * @type {Node}\n */\n this.value_ = null;\n /**\n * @private\n * @type {CountedSet}\n */\n this.children_ = null;\n }\n /**\n * Gets the node stored at the given path if one exists.\n *\n * @param {!Path} path Path to look up snapshot for.\n * @return {?Node} The retrieved node, or null.\n */\n SparseSnapshotTree.prototype.find = function (path) {\n if (this.value_ != null) {\n return this.value_.getChild(path);\n }\n else if (!path.isEmpty() && this.children_ != null) {\n var childKey = path.getFront();\n path = path.popFront();\n if (this.children_.contains(childKey)) {\n var childTree = this.children_.get(childKey);\n return childTree.find(path);\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n };\n /**\n * Stores the given node at the specified path. If there is already a node\n * at a shallower path, it merges the new data into that snapshot node.\n *\n * @param {!Path} path Path to look up snapshot for.\n * @param {!Node} data The new data, or null.\n */\n SparseSnapshotTree.prototype.remember = function (path, data) {\n if (path.isEmpty()) {\n this.value_ = data;\n this.children_ = null;\n }\n else if (this.value_ !== null) {\n this.value_ = this.value_.updateChild(path, data);\n }\n else {\n if (this.children_ == null) {\n this.children_ = new CountedSet_1.CountedSet();\n }\n var childKey = path.getFront();\n if (!this.children_.contains(childKey)) {\n this.children_.add(childKey, new SparseSnapshotTree());\n }\n var child = this.children_.get(childKey);\n path = path.popFront();\n child.remember(path, data);\n }\n };\n /**\n * Purge the data at path from the cache.\n *\n * @param {!Path} path Path to look up snapshot for.\n * @return {boolean} True if this node should now be removed.\n */\n SparseSnapshotTree.prototype.forget = function (path) {\n if (path.isEmpty()) {\n this.value_ = null;\n this.children_ = null;\n return true;\n }\n else {\n if (this.value_ !== null) {\n if (this.value_.isLeafNode()) {\n // We're trying to forget a node that doesn't exist\n return false;\n }\n else {\n var value = this.value_;\n this.value_ = null;\n var self_1 = this;\n value.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, tree) {\n self_1.remember(new Path_1.Path(key), tree);\n });\n return this.forget(path);\n }\n }\n else if (this.children_ !== null) {\n var childKey = path.getFront();\n path = path.popFront();\n if (this.children_.contains(childKey)) {\n var safeToRemove = this.children_.get(childKey).forget(path);\n if (safeToRemove) {\n this.children_.remove(childKey);\n }\n }\n if (this.children_.isEmpty()) {\n this.children_ = null;\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return true;\n }\n }\n };\n /**\n * Recursively iterates through all of the stored tree and calls the\n * callback on each one.\n *\n * @param {!Path} prefixPath Path to look up node for.\n * @param {!Function} func The function to invoke for each tree.\n */\n SparseSnapshotTree.prototype.forEachTree = function (prefixPath, func) {\n if (this.value_ !== null) {\n func(prefixPath, this.value_);\n }\n else {\n this.forEachChild(function (key, tree) {\n var path = new Path_1.Path(prefixPath.toString() + '/' + key);\n tree.forEachTree(path, func);\n });\n }\n };\n /**\n * Iterates through each immediate child and triggers the callback.\n *\n * @param {!Function} func The function to invoke for each child.\n */\n SparseSnapshotTree.prototype.forEachChild = function (func) {\n if (this.children_ !== null) {\n this.children_.each(function (key, tree) {\n func(key, tree);\n });\n }\n };\n return SparseSnapshotTree;\n}());\nexports.SparseSnapshotTree = SparseSnapshotTree;\n\n//# sourceMappingURL=SparseSnapshotTree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/SparseSnapshotTree.js\n// module id = 43\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Implements a set with a count of elements.\n *\n * @template K, V\n */\nvar CountedSet = /** @class */ (function () {\n function CountedSet() {\n this.set = {};\n }\n /**\n * @param {!K} item\n * @param {V} val\n */\n CountedSet.prototype.add = function (item, val) {\n this.set[item] = val !== null ? val : true;\n };\n /**\n * @param {!K} key\n * @return {boolean}\n */\n CountedSet.prototype.contains = function (key) {\n return util_1.contains(this.set, key);\n };\n /**\n * @param {!K} item\n * @return {V}\n */\n CountedSet.prototype.get = function (item) {\n return this.contains(item) ? this.set[item] : undefined;\n };\n /**\n * @param {!K} item\n */\n CountedSet.prototype.remove = function (item) {\n delete this.set[item];\n };\n /**\n * Deletes everything in the set\n */\n CountedSet.prototype.clear = function () {\n this.set = {};\n };\n /**\n * True if there's nothing in the set\n * @return {boolean}\n */\n CountedSet.prototype.isEmpty = function () {\n return util_1.isEmpty(this.set);\n };\n /**\n * @return {number} The number of items in the set\n */\n CountedSet.prototype.count = function () {\n return util_1.getCount(this.set);\n };\n /**\n * Run a function on each k,v pair in the set\n * @param {function(K, V)} fn\n */\n CountedSet.prototype.each = function (fn) {\n util_1.forEach(this.set, function (k, v) { return fn(k, v); });\n };\n /**\n * Mostly for debugging\n * @return {Array.} The keys present in this CountedSet\n */\n CountedSet.prototype.keys = function () {\n var keys = [];\n util_1.forEach(this.set, function (k) {\n keys.push(k);\n });\n return keys;\n };\n return CountedSet;\n}());\nexports.CountedSet = CountedSet;\n\n//# sourceMappingURL=CountedSet.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/CountedSet.js\n// module id = 44\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = require(\"./Operation\");\nvar Path_1 = require(\"../util/Path\");\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @param {!Node} snap\n * @constructor\n * @implements {Operation}\n */\nvar Overwrite = /** @class */ (function () {\n function Overwrite(source, path, snap) {\n this.source = source;\n this.path = path;\n this.snap = snap;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.OVERWRITE;\n }\n Overwrite.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n return new Overwrite(this.source, Path_1.Path.Empty, this.snap.getImmediateChild(childName));\n }\n else {\n return new Overwrite(this.source, this.path.popFront(), this.snap);\n }\n };\n return Overwrite;\n}());\nexports.Overwrite = Overwrite;\n\n//# sourceMappingURL=Overwrite.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/Overwrite.js\n// module id = 45\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CacheNode_1 = require(\"./view/CacheNode\");\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar ViewCache_1 = require(\"./view/ViewCache\");\nvar View_1 = require(\"./view/View\");\nvar __referenceConstructor;\n/**\n * SyncPoint represents a single location in a SyncTree with 1 or more event registrations, meaning we need to\n * maintain 1 or more Views at this location to cache server data and raise appropriate events for server changes\n * and user writes (set, transaction, update).\n *\n * It's responsible for:\n * - Maintaining the set of 1 or more views necessary at this location (a SyncPoint with 0 views should be removed).\n * - Proxying user / server operations to the views as appropriate (i.e. applyServerOverwrite,\n * applyUserOverwrite, etc.)\n */\nvar SyncPoint = /** @class */ (function () {\n function SyncPoint() {\n /**\n * The Views being tracked at this location in the tree, stored as a map where the key is a\n * queryId and the value is the View for that query.\n *\n * NOTE: This list will be quite small (usually 1, but perhaps 2 or 3; any more is an odd use case).\n *\n * @type {!Object.}\n * @private\n */\n this.views_ = {};\n }\n Object.defineProperty(SyncPoint, \"__referenceConstructor\", {\n get: function () {\n util_1.assert(__referenceConstructor, 'Reference.ts has not been loaded');\n return __referenceConstructor;\n },\n set: function (val) {\n util_1.assert(!__referenceConstructor, '__referenceConstructor has already been defined');\n __referenceConstructor = val;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {boolean}\n */\n SyncPoint.prototype.isEmpty = function () {\n return util_2.isEmpty(this.views_);\n };\n /**\n *\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} optCompleteServerCache\n * @return {!Array.}\n */\n SyncPoint.prototype.applyOperation = function (operation, writesCache, optCompleteServerCache) {\n var queryId = operation.source.queryId;\n if (queryId !== null) {\n var view = util_2.safeGet(this.views_, queryId);\n util_1.assert(view != null, 'SyncTree gave us an op for an invalid query.');\n return view.applyOperation(operation, writesCache, optCompleteServerCache);\n }\n else {\n var events_1 = [];\n util_2.forEach(this.views_, function (key, view) {\n events_1 = events_1.concat(view.applyOperation(operation, writesCache, optCompleteServerCache));\n });\n return events_1;\n }\n };\n /**\n * Add an event callback for the specified query.\n *\n * @param {!Query} query\n * @param {!EventRegistration} eventRegistration\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache Complete server cache, if we have it.\n * @param {boolean} serverCacheComplete\n * @return {!Array.} Events to raise.\n */\n SyncPoint.prototype.addEventRegistration = function (query, eventRegistration, writesCache, serverCache, serverCacheComplete) {\n var queryId = query.queryIdentifier();\n var view = util_2.safeGet(this.views_, queryId);\n if (!view) {\n // TODO: make writesCache take flag for complete server node\n var eventCache = writesCache.calcCompleteEventCache(serverCacheComplete ? serverCache : null);\n var eventCacheComplete = false;\n if (eventCache) {\n eventCacheComplete = true;\n }\n else if (serverCache instanceof ChildrenNode_1.ChildrenNode) {\n eventCache = writesCache.calcCompleteEventChildren(serverCache);\n eventCacheComplete = false;\n }\n else {\n eventCache = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n eventCacheComplete = false;\n }\n var viewCache = new ViewCache_1.ViewCache(new CacheNode_1.CacheNode(\n /** @type {!Node} */ (eventCache), eventCacheComplete, false), new CacheNode_1.CacheNode(\n /** @type {!Node} */ (serverCache), serverCacheComplete, false));\n view = new View_1.View(query, viewCache);\n this.views_[queryId] = view;\n }\n // This is guaranteed to exist now, we just created anything that was missing\n view.addEventRegistration(eventRegistration);\n return view.getInitialEvents(eventRegistration);\n };\n /**\n * Remove event callback(s). Return cancelEvents if a cancelError is specified.\n *\n * If query is the default query, we'll check all views for the specified eventRegistration.\n * If eventRegistration is null, we'll remove all callbacks for the specified view(s).\n *\n * @param {!Query} query\n * @param {?EventRegistration} eventRegistration If null, remove all callbacks.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {{removed:!Array., events:!Array.}} removed queries and any cancel events\n */\n SyncPoint.prototype.removeEventRegistration = function (query, eventRegistration, cancelError) {\n var queryId = query.queryIdentifier();\n var removed = [];\n var cancelEvents = [];\n var hadCompleteView = this.hasCompleteView();\n if (queryId === 'default') {\n // When you do ref.off(...), we search all views for the registration to remove.\n var self_1 = this;\n util_2.forEach(this.views_, function (viewQueryId, view) {\n cancelEvents = cancelEvents.concat(view.removeEventRegistration(eventRegistration, cancelError));\n if (view.isEmpty()) {\n delete self_1.views_[viewQueryId];\n // We'll deal with complete views later.\n if (!view\n .getQuery()\n .getQueryParams()\n .loadsAllData()) {\n removed.push(view.getQuery());\n }\n }\n });\n }\n else {\n // remove the callback from the specific view.\n var view = util_2.safeGet(this.views_, queryId);\n if (view) {\n cancelEvents = cancelEvents.concat(view.removeEventRegistration(eventRegistration, cancelError));\n if (view.isEmpty()) {\n delete this.views_[queryId];\n // We'll deal with complete views later.\n if (!view\n .getQuery()\n .getQueryParams()\n .loadsAllData()) {\n removed.push(view.getQuery());\n }\n }\n }\n }\n if (hadCompleteView && !this.hasCompleteView()) {\n // We removed our last complete view.\n removed.push(new SyncPoint.__referenceConstructor(query.repo, query.path));\n }\n return { removed: removed, events: cancelEvents };\n };\n /**\n * @return {!Array.}\n */\n SyncPoint.prototype.getQueryViews = function () {\n var _this = this;\n var values = Object.keys(this.views_).map(function (key) { return _this.views_[key]; });\n return values.filter(function (view) {\n return !view\n .getQuery()\n .getQueryParams()\n .loadsAllData();\n });\n };\n /**\n *\n * @param {!Path} path The path to the desired complete snapshot\n * @return {?Node} A complete cache, if it exists\n */\n SyncPoint.prototype.getCompleteServerCache = function (path) {\n var serverCache = null;\n util_2.forEach(this.views_, function (key, view) {\n serverCache = serverCache || view.getCompleteServerCache(path);\n });\n return serverCache;\n };\n /**\n * @param {!Query} query\n * @return {?View}\n */\n SyncPoint.prototype.viewForQuery = function (query) {\n var params = query.getQueryParams();\n if (params.loadsAllData()) {\n return this.getCompleteView();\n }\n else {\n var queryId = query.queryIdentifier();\n return util_2.safeGet(this.views_, queryId);\n }\n };\n /**\n * @param {!Query} query\n * @return {boolean}\n */\n SyncPoint.prototype.viewExistsForQuery = function (query) {\n return this.viewForQuery(query) != null;\n };\n /**\n * @return {boolean}\n */\n SyncPoint.prototype.hasCompleteView = function () {\n return this.getCompleteView() != null;\n };\n /**\n * @return {?View}\n */\n SyncPoint.prototype.getCompleteView = function () {\n var completeView = util_2.findValue(this.views_, function (view) {\n return view\n .getQuery()\n .getQueryParams()\n .loadsAllData();\n });\n return completeView || null;\n };\n return SyncPoint;\n}());\nexports.SyncPoint = SyncPoint;\n\n//# sourceMappingURL=SyncPoint.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/SyncPoint.js\n// module id = 46\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChildrenNode_1 = require(\"../snap/ChildrenNode\");\nvar CacheNode_1 = require(\"./CacheNode\");\n/**\n * Stores the data we have cached for a view.\n *\n * serverSnap is the cached server data, eventSnap is the cached event data (server data plus any local writes).\n *\n * @constructor\n */\nvar ViewCache = /** @class */ (function () {\n /**\n *\n * @param {!CacheNode} eventCache_\n * @param {!CacheNode} serverCache_\n */\n function ViewCache(eventCache_, serverCache_) {\n this.eventCache_ = eventCache_;\n this.serverCache_ = serverCache_;\n }\n /**\n * @param {!Node} eventSnap\n * @param {boolean} complete\n * @param {boolean} filtered\n * @return {!ViewCache}\n */\n ViewCache.prototype.updateEventSnap = function (eventSnap, complete, filtered) {\n return new ViewCache(new CacheNode_1.CacheNode(eventSnap, complete, filtered), this.serverCache_);\n };\n /**\n * @param {!Node} serverSnap\n * @param {boolean} complete\n * @param {boolean} filtered\n * @return {!ViewCache}\n */\n ViewCache.prototype.updateServerSnap = function (serverSnap, complete, filtered) {\n return new ViewCache(this.eventCache_, new CacheNode_1.CacheNode(serverSnap, complete, filtered));\n };\n /**\n * @return {!CacheNode}\n */\n ViewCache.prototype.getEventCache = function () {\n return this.eventCache_;\n };\n /**\n * @return {?Node}\n */\n ViewCache.prototype.getCompleteEventSnap = function () {\n return this.eventCache_.isFullyInitialized()\n ? this.eventCache_.getNode()\n : null;\n };\n /**\n * @return {!CacheNode}\n */\n ViewCache.prototype.getServerCache = function () {\n return this.serverCache_;\n };\n /**\n * @return {?Node}\n */\n ViewCache.prototype.getCompleteServerSnap = function () {\n return this.serverCache_.isFullyInitialized()\n ? this.serverCache_.getNode()\n : null;\n };\n /**\n * @const\n * @type {ViewCache}\n */\n ViewCache.Empty = new ViewCache(new CacheNode_1.CacheNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, \n /*fullyInitialized=*/ false, \n /*filtered=*/ false), new CacheNode_1.CacheNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, \n /*fullyInitialized=*/ false, \n /*filtered=*/ false));\n return ViewCache;\n}());\nexports.ViewCache = ViewCache;\n\n//# sourceMappingURL=ViewCache.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/ViewCache.js\n// module id = 47\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Returns the delta from the previous call to get stats.\n *\n * @param collection_ The collection to \"listen\" to.\n * @constructor\n */\nvar StatsListener = /** @class */ (function () {\n function StatsListener(collection_) {\n this.collection_ = collection_;\n this.last_ = null;\n }\n StatsListener.prototype.get = function () {\n var newStats = this.collection_.get();\n var delta = util_1.clone(newStats);\n if (this.last_) {\n util_1.forEach(this.last_, function (stat, value) {\n delta[stat] = delta[stat] - value;\n });\n }\n this.last_ = newStats;\n return delta;\n };\n return StatsListener;\n}());\nexports.StatsListener = StatsListener;\n\n//# sourceMappingURL=StatsListener.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/stats/StatsListener.js\n// module id = 48\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = require(\"@firebase/app\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar util_3 = require(\"@firebase/util\");\nvar util_4 = require(\"./util/util\");\nvar Path_1 = require(\"./util/Path\");\nvar VisibilityMonitor_1 = require(\"./util/VisibilityMonitor\");\nvar OnlineMonitor_1 = require(\"./util/OnlineMonitor\");\nvar util_5 = require(\"@firebase/util\");\nvar Connection_1 = require(\"../realtime/Connection\");\nvar util_6 = require(\"@firebase/util\");\nvar util_7 = require(\"@firebase/util\");\nvar ServerActions_1 = require(\"./ServerActions\");\nvar RECONNECT_MIN_DELAY = 1000;\nvar RECONNECT_MAX_DELAY_DEFAULT = 60 * 5 * 1000; // 5 minutes in milliseconds (Case: 1858)\nvar RECONNECT_MAX_DELAY_FOR_ADMINS = 30 * 1000; // 30 seconds for admin clients (likely to be a backend server)\nvar RECONNECT_DELAY_MULTIPLIER = 1.3;\nvar RECONNECT_DELAY_RESET_TIMEOUT = 30000; // Reset delay back to MIN_DELAY after being connected for 30sec.\nvar SERVER_KILL_INTERRUPT_REASON = 'server_kill';\n// If auth fails repeatedly, we'll assume something is wrong and log a warning / back off.\nvar INVALID_AUTH_TOKEN_THRESHOLD = 3;\n/**\n * Firebase connection. Abstracts wire protocol and handles reconnecting.\n *\n * NOTE: All JSON objects sent to the realtime connection must have property names enclosed\n * in quotes to make sure the closure compiler does not minify them.\n */\nvar PersistentConnection = /** @class */ (function (_super) {\n __extends(PersistentConnection, _super);\n /**\n * @implements {ServerActions}\n * @param {!RepoInfo} repoInfo_ Data about the namespace we are connecting to\n * @param {function(string, *, boolean, ?number)} onDataUpdate_ A callback for new data from the server\n * @param onConnectStatus_\n * @param onServerInfoUpdate_\n * @param authTokenProvider_\n * @param authOverride_\n */\n function PersistentConnection(repoInfo_, onDataUpdate_, onConnectStatus_, onServerInfoUpdate_, authTokenProvider_, authOverride_) {\n var _this = _super.call(this) || this;\n _this.repoInfo_ = repoInfo_;\n _this.onDataUpdate_ = onDataUpdate_;\n _this.onConnectStatus_ = onConnectStatus_;\n _this.onServerInfoUpdate_ = onServerInfoUpdate_;\n _this.authTokenProvider_ = authTokenProvider_;\n _this.authOverride_ = authOverride_;\n // Used for diagnostic logging.\n _this.id = PersistentConnection.nextPersistentConnectionId_++;\n _this.log_ = util_4.logWrapper('p:' + _this.id + ':');\n /** @private {Object} */\n _this.interruptReasons_ = {};\n _this.listens_ = {};\n _this.outstandingPuts_ = [];\n _this.outstandingPutCount_ = 0;\n _this.onDisconnectRequestQueue_ = [];\n _this.connected_ = false;\n _this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n _this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_DEFAULT;\n _this.securityDebugCallback_ = null;\n _this.lastSessionId = null;\n /** @private {number|null} */\n _this.establishConnectionTimer_ = null;\n /** @private {boolean} */\n _this.visible_ = false;\n // Before we get connected, we keep a queue of pending messages to send.\n _this.requestCBHash_ = {};\n _this.requestNumber_ = 0;\n /** @private {?{\n * sendRequest(Object),\n * close()\n * }} */\n _this.realtime_ = null;\n /** @private {string|null} */\n _this.authToken_ = null;\n _this.forceTokenRefresh_ = false;\n _this.invalidAuthTokenCount_ = 0;\n _this.firstConnection_ = true;\n _this.lastConnectionAttemptTime_ = null;\n _this.lastConnectionEstablishedTime_ = null;\n if (authOverride_ && !util_7.isNodeSdk()) {\n throw new Error('Auth override specified in options, but not supported on non Node.js platforms');\n }\n _this.scheduleConnect_(0);\n VisibilityMonitor_1.VisibilityMonitor.getInstance().on('visible', _this.onVisible_, _this);\n if (repoInfo_.host.indexOf('fblocal') === -1) {\n OnlineMonitor_1.OnlineMonitor.getInstance().on('online', _this.onOnline_, _this);\n }\n return _this;\n }\n /**\n * @param {!string} action\n * @param {*} body\n * @param {function(*)=} onResponse\n * @protected\n */\n PersistentConnection.prototype.sendRequest = function (action, body, onResponse) {\n var curReqNum = ++this.requestNumber_;\n var msg = { r: curReqNum, a: action, b: body };\n this.log_(util_2.stringify(msg));\n util_3.assert(this.connected_, \"sendRequest call when we're not connected not allowed.\");\n this.realtime_.sendRequest(msg);\n if (onResponse) {\n this.requestCBHash_[curReqNum] = onResponse;\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.listen = function (query, currentHashFn, tag, onComplete) {\n var queryId = query.queryIdentifier();\n var pathString = query.path.toString();\n this.log_('Listen called for ' + pathString + ' ' + queryId);\n this.listens_[pathString] = this.listens_[pathString] || {};\n util_3.assert(query.getQueryParams().isDefault() ||\n !query.getQueryParams().loadsAllData(), 'listen() called for non-default but complete query');\n util_3.assert(!this.listens_[pathString][queryId], 'listen() called twice for same path/queryId.');\n var listenSpec = {\n onComplete: onComplete,\n hashFn: currentHashFn,\n query: query,\n tag: tag\n };\n this.listens_[pathString][queryId] = listenSpec;\n if (this.connected_) {\n this.sendListen_(listenSpec);\n }\n };\n /**\n * @param {!{onComplete(),\n * hashFn():!string,\n * query: !Query,\n * tag: ?number}} listenSpec\n * @private\n */\n PersistentConnection.prototype.sendListen_ = function (listenSpec) {\n var _this = this;\n var query = listenSpec.query;\n var pathString = query.path.toString();\n var queryId = query.queryIdentifier();\n this.log_('Listen on ' + pathString + ' for ' + queryId);\n var req = { /*path*/ p: pathString };\n var action = 'q';\n // Only bother to send query if it's non-default.\n if (listenSpec.tag) {\n req['q'] = query.queryObject();\n req['t'] = listenSpec.tag;\n }\n req['h'] = listenSpec.hashFn();\n this.sendRequest(action, req, function (message) {\n var payload = message['d'];\n var status = message['s'];\n // print warnings in any case...\n PersistentConnection.warnOnListenWarnings_(payload, query);\n var currentListenSpec = _this.listens_[pathString] && _this.listens_[pathString][queryId];\n // only trigger actions if the listen hasn't been removed and readded\n if (currentListenSpec === listenSpec) {\n _this.log_('listen response', message);\n if (status !== 'ok') {\n _this.removeListen_(pathString, queryId);\n }\n if (listenSpec.onComplete) {\n listenSpec.onComplete(status, payload);\n }\n }\n });\n };\n /**\n * @param {*} payload\n * @param {!Query} query\n * @private\n */\n PersistentConnection.warnOnListenWarnings_ = function (payload, query) {\n if (payload && typeof payload === 'object' && util_1.contains(payload, 'w')) {\n var warnings = util_1.safeGet(payload, 'w');\n if (Array.isArray(warnings) && ~warnings.indexOf('no_index')) {\n var indexSpec = '\".indexOn\": \"' +\n query\n .getQueryParams()\n .getIndex()\n .toString() +\n '\"';\n var indexPath = query.path.toString();\n util_4.warn(\"Using an unspecified index. Your data will be downloaded and \" +\n (\"filtered on the client. Consider adding \" + indexSpec + \" at \") +\n (indexPath + \" to your security rules for better performance.\"));\n }\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.refreshAuthToken = function (token) {\n this.authToken_ = token;\n this.log_('Auth token refreshed');\n if (this.authToken_) {\n this.tryAuth();\n }\n else {\n //If we're connected we want to let the server know to unauthenticate us. If we're not connected, simply delete\n //the credential so we dont become authenticated next time we connect.\n if (this.connected_) {\n this.sendRequest('unauth', {}, function () { });\n }\n }\n this.reduceReconnectDelayIfAdminCredential_(token);\n };\n /**\n * @param {!string} credential\n * @private\n */\n PersistentConnection.prototype.reduceReconnectDelayIfAdminCredential_ = function (credential) {\n // NOTE: This isn't intended to be bulletproof (a malicious developer can always just modify the client).\n // Additionally, we don't bother resetting the max delay back to the default if auth fails / expires.\n var isFirebaseSecret = credential && credential.length === 40;\n if (isFirebaseSecret || util_5.isAdmin(credential)) {\n this.log_('Admin auth credential detected. Reducing max reconnect time.');\n this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\n }\n };\n /**\n * Attempts to authenticate with the given credentials. If the authentication attempt fails, it's triggered like\n * a auth revoked (the connection is closed).\n */\n PersistentConnection.prototype.tryAuth = function () {\n var _this = this;\n if (this.connected_ && this.authToken_) {\n var token_1 = this.authToken_;\n var authMethod = util_5.isValidFormat(token_1) ? 'auth' : 'gauth';\n var requestData = { cred: token_1 };\n if (this.authOverride_ === null) {\n requestData['noauth'] = true;\n }\n else if (typeof this.authOverride_ === 'object') {\n requestData['authvar'] = this.authOverride_;\n }\n this.sendRequest(authMethod, requestData, function (res) {\n var status = res['s'];\n var data = res['d'] || 'error';\n if (_this.authToken_ === token_1) {\n if (status === 'ok') {\n _this.invalidAuthTokenCount_ = 0;\n }\n else {\n // Triggers reconnect and force refresh for auth token\n _this.onAuthRevoked_(status, data);\n }\n }\n });\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.unlisten = function (query, tag) {\n var pathString = query.path.toString();\n var queryId = query.queryIdentifier();\n this.log_('Unlisten called for ' + pathString + ' ' + queryId);\n util_3.assert(query.getQueryParams().isDefault() ||\n !query.getQueryParams().loadsAllData(), 'unlisten() called for non-default but complete query');\n var listen = this.removeListen_(pathString, queryId);\n if (listen && this.connected_) {\n this.sendUnlisten_(pathString, queryId, query.queryObject(), tag);\n }\n };\n PersistentConnection.prototype.sendUnlisten_ = function (pathString, queryId, queryObj, tag) {\n this.log_('Unlisten on ' + pathString + ' for ' + queryId);\n var req = { /*path*/ p: pathString };\n var action = 'n';\n // Only bother sending queryId if it's non-default.\n if (tag) {\n req['q'] = queryObj;\n req['t'] = tag;\n }\n this.sendRequest(action, req);\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.onDisconnectPut = function (pathString, data, onComplete) {\n if (this.connected_) {\n this.sendOnDisconnect_('o', pathString, data, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString: pathString,\n action: 'o',\n data: data,\n onComplete: onComplete\n });\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.onDisconnectMerge = function (pathString, data, onComplete) {\n if (this.connected_) {\n this.sendOnDisconnect_('om', pathString, data, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString: pathString,\n action: 'om',\n data: data,\n onComplete: onComplete\n });\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.onDisconnectCancel = function (pathString, onComplete) {\n if (this.connected_) {\n this.sendOnDisconnect_('oc', pathString, null, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString: pathString,\n action: 'oc',\n data: null,\n onComplete: onComplete\n });\n }\n };\n PersistentConnection.prototype.sendOnDisconnect_ = function (action, pathString, data, onComplete) {\n var request = { /*path*/ p: pathString, /*data*/ d: data };\n this.log_('onDisconnect ' + action, request);\n this.sendRequest(action, request, function (response) {\n if (onComplete) {\n setTimeout(function () {\n onComplete(response['s'], response['d']);\n }, Math.floor(0));\n }\n });\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.put = function (pathString, data, onComplete, hash) {\n this.putInternal('p', pathString, data, onComplete, hash);\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.merge = function (pathString, data, onComplete, hash) {\n this.putInternal('m', pathString, data, onComplete, hash);\n };\n PersistentConnection.prototype.putInternal = function (action, pathString, data, onComplete, hash) {\n var request = {\n /*path*/ p: pathString,\n /*data*/ d: data\n };\n if (hash !== undefined)\n request['h'] = hash;\n // TODO: Only keep track of the most recent put for a given path?\n this.outstandingPuts_.push({\n action: action,\n request: request,\n onComplete: onComplete\n });\n this.outstandingPutCount_++;\n var index = this.outstandingPuts_.length - 1;\n if (this.connected_) {\n this.sendPut_(index);\n }\n else {\n this.log_('Buffering put: ' + pathString);\n }\n };\n PersistentConnection.prototype.sendPut_ = function (index) {\n var _this = this;\n var action = this.outstandingPuts_[index].action;\n var request = this.outstandingPuts_[index].request;\n var onComplete = this.outstandingPuts_[index].onComplete;\n this.outstandingPuts_[index].queued = this.connected_;\n this.sendRequest(action, request, function (message) {\n _this.log_(action + ' response', message);\n delete _this.outstandingPuts_[index];\n _this.outstandingPutCount_--;\n // Clean up array occasionally.\n if (_this.outstandingPutCount_ === 0) {\n _this.outstandingPuts_ = [];\n }\n if (onComplete)\n onComplete(message['s'], message['d']);\n });\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.reportStats = function (stats) {\n var _this = this;\n // If we're not connected, we just drop the stats.\n if (this.connected_) {\n var request = { /*counters*/ c: stats };\n this.log_('reportStats', request);\n this.sendRequest(/*stats*/ 's', request, function (result) {\n var status = result['s'];\n if (status !== 'ok') {\n var errorReason = result['d'];\n _this.log_('reportStats', 'Error sending stats: ' + errorReason);\n }\n });\n }\n };\n /**\n * @param {*} message\n * @private\n */\n PersistentConnection.prototype.onDataMessage_ = function (message) {\n if ('r' in message) {\n // this is a response\n this.log_('from server: ' + util_2.stringify(message));\n var reqNum = message['r'];\n var onResponse = this.requestCBHash_[reqNum];\n if (onResponse) {\n delete this.requestCBHash_[reqNum];\n onResponse(message['b']);\n }\n }\n else if ('error' in message) {\n throw 'A server-side error has occurred: ' + message['error'];\n }\n else if ('a' in message) {\n // a and b are action and body, respectively\n this.onDataPush_(message['a'], message['b']);\n }\n };\n PersistentConnection.prototype.onDataPush_ = function (action, body) {\n this.log_('handleServerMessage', action, body);\n if (action === 'd')\n this.onDataUpdate_(body['p'], body['d'], \n /*isMerge*/ false, body['t']);\n else if (action === 'm')\n this.onDataUpdate_(body['p'], body['d'], \n /*isMerge=*/ true, body['t']);\n else if (action === 'c')\n this.onListenRevoked_(body['p'], body['q']);\n else if (action === 'ac')\n this.onAuthRevoked_(body['s'], body['d']);\n else if (action === 'sd')\n this.onSecurityDebugPacket_(body);\n else\n util_4.error('Unrecognized action received from server: ' +\n util_2.stringify(action) +\n '\\nAre you using the latest client?');\n };\n PersistentConnection.prototype.onReady_ = function (timestamp, sessionId) {\n this.log_('connection ready');\n this.connected_ = true;\n this.lastConnectionEstablishedTime_ = new Date().getTime();\n this.handleTimestamp_(timestamp);\n this.lastSessionId = sessionId;\n if (this.firstConnection_) {\n this.sendConnectStats_();\n }\n this.restoreState_();\n this.firstConnection_ = false;\n this.onConnectStatus_(true);\n };\n PersistentConnection.prototype.scheduleConnect_ = function (timeout) {\n var _this = this;\n util_3.assert(!this.realtime_, \"Scheduling a connect when we're already connected/ing?\");\n if (this.establishConnectionTimer_) {\n clearTimeout(this.establishConnectionTimer_);\n }\n // NOTE: Even when timeout is 0, it's important to do a setTimeout to work around an infuriating \"Security Error\" in\n // Firefox when trying to write to our long-polling iframe in some scenarios (e.g. Forge or our unit tests).\n this.establishConnectionTimer_ = setTimeout(function () {\n _this.establishConnectionTimer_ = null;\n _this.establishConnection_();\n }, Math.floor(timeout));\n };\n /**\n * @param {boolean} visible\n * @private\n */\n PersistentConnection.prototype.onVisible_ = function (visible) {\n // NOTE: Tabbing away and back to a window will defeat our reconnect backoff, but I think that's fine.\n if (visible &&\n !this.visible_ &&\n this.reconnectDelay_ === this.maxReconnectDelay_) {\n this.log_('Window became visible. Reducing delay.');\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n this.visible_ = visible;\n };\n PersistentConnection.prototype.onOnline_ = function (online) {\n if (online) {\n this.log_('Browser went online.');\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n else {\n this.log_('Browser went offline. Killing connection.');\n if (this.realtime_) {\n this.realtime_.close();\n }\n }\n };\n PersistentConnection.prototype.onRealtimeDisconnect_ = function () {\n this.log_('data client disconnected');\n this.connected_ = false;\n this.realtime_ = null;\n // Since we don't know if our sent transactions succeeded or not, we need to cancel them.\n this.cancelSentTransactions_();\n // Clear out the pending requests.\n this.requestCBHash_ = {};\n if (this.shouldReconnect_()) {\n if (!this.visible_) {\n this.log_(\"Window isn't visible. Delaying reconnect.\");\n this.reconnectDelay_ = this.maxReconnectDelay_;\n this.lastConnectionAttemptTime_ = new Date().getTime();\n }\n else if (this.lastConnectionEstablishedTime_) {\n // If we've been connected long enough, reset reconnect delay to minimum.\n var timeSinceLastConnectSucceeded = new Date().getTime() - this.lastConnectionEstablishedTime_;\n if (timeSinceLastConnectSucceeded > RECONNECT_DELAY_RESET_TIMEOUT)\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n this.lastConnectionEstablishedTime_ = null;\n }\n var timeSinceLastConnectAttempt = new Date().getTime() - this.lastConnectionAttemptTime_;\n var reconnectDelay = Math.max(0, this.reconnectDelay_ - timeSinceLastConnectAttempt);\n reconnectDelay = Math.random() * reconnectDelay;\n this.log_('Trying to reconnect in ' + reconnectDelay + 'ms');\n this.scheduleConnect_(reconnectDelay);\n // Adjust reconnect delay for next time.\n this.reconnectDelay_ = Math.min(this.maxReconnectDelay_, this.reconnectDelay_ * RECONNECT_DELAY_MULTIPLIER);\n }\n this.onConnectStatus_(false);\n };\n PersistentConnection.prototype.establishConnection_ = function () {\n if (this.shouldReconnect_()) {\n this.log_('Making a connection attempt');\n this.lastConnectionAttemptTime_ = new Date().getTime();\n this.lastConnectionEstablishedTime_ = null;\n var onDataMessage_1 = this.onDataMessage_.bind(this);\n var onReady_1 = this.onReady_.bind(this);\n var onDisconnect_1 = this.onRealtimeDisconnect_.bind(this);\n var connId_1 = this.id + ':' + PersistentConnection.nextConnectionId_++;\n var self_1 = this;\n var lastSessionId_1 = this.lastSessionId;\n var canceled_1 = false;\n var connection_1 = null;\n var closeFn_1 = function () {\n if (connection_1) {\n connection_1.close();\n }\n else {\n canceled_1 = true;\n onDisconnect_1();\n }\n };\n var sendRequestFn = function (msg) {\n util_3.assert(connection_1, \"sendRequest call when we're not connected not allowed.\");\n connection_1.sendRequest(msg);\n };\n this.realtime_ = {\n close: closeFn_1,\n sendRequest: sendRequestFn\n };\n var forceRefresh = this.forceTokenRefresh_;\n this.forceTokenRefresh_ = false;\n // First fetch auth token, and establish connection after fetching the token was successful\n this.authTokenProvider_\n .getToken(forceRefresh)\n .then(function (result) {\n if (!canceled_1) {\n util_4.log('getToken() completed. Creating connection.');\n self_1.authToken_ = result && result.accessToken;\n connection_1 = new Connection_1.Connection(connId_1, self_1.repoInfo_, onDataMessage_1, onReady_1, onDisconnect_1, \n /* onKill= */ function (reason) {\n util_4.warn(reason + ' (' + self_1.repoInfo_.toString() + ')');\n self_1.interrupt(SERVER_KILL_INTERRUPT_REASON);\n }, lastSessionId_1);\n }\n else {\n util_4.log('getToken() completed but was canceled');\n }\n })\n .then(null, function (error) {\n self_1.log_('Failed to get token: ' + error);\n if (!canceled_1) {\n if (util_6.CONSTANTS.NODE_ADMIN) {\n // This may be a critical error for the Admin Node.js SDK, so log a warning.\n // But getToken() may also just have temporarily failed, so we still want to\n // continue retrying.\n util_4.warn(error);\n }\n closeFn_1();\n }\n });\n }\n };\n /**\n * @param {string} reason\n */\n PersistentConnection.prototype.interrupt = function (reason) {\n util_4.log('Interrupting connection for reason: ' + reason);\n this.interruptReasons_[reason] = true;\n if (this.realtime_) {\n this.realtime_.close();\n }\n else {\n if (this.establishConnectionTimer_) {\n clearTimeout(this.establishConnectionTimer_);\n this.establishConnectionTimer_ = null;\n }\n if (this.connected_) {\n this.onRealtimeDisconnect_();\n }\n }\n };\n /**\n * @param {string} reason\n */\n PersistentConnection.prototype.resume = function (reason) {\n util_4.log('Resuming connection for reason: ' + reason);\n delete this.interruptReasons_[reason];\n if (util_1.isEmpty(this.interruptReasons_)) {\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n };\n PersistentConnection.prototype.handleTimestamp_ = function (timestamp) {\n var delta = timestamp - new Date().getTime();\n this.onServerInfoUpdate_({ serverTimeOffset: delta });\n };\n PersistentConnection.prototype.cancelSentTransactions_ = function () {\n for (var i = 0; i < this.outstandingPuts_.length; i++) {\n var put = this.outstandingPuts_[i];\n if (put && /*hash*/ 'h' in put.request && put.queued) {\n if (put.onComplete)\n put.onComplete('disconnect');\n delete this.outstandingPuts_[i];\n this.outstandingPutCount_--;\n }\n }\n // Clean up array occasionally.\n if (this.outstandingPutCount_ === 0)\n this.outstandingPuts_ = [];\n };\n /**\n * @param {!string} pathString\n * @param {Array.<*>=} query\n * @private\n */\n PersistentConnection.prototype.onListenRevoked_ = function (pathString, query) {\n // Remove the listen and manufacture a \"permission_denied\" error for the failed listen.\n var queryId;\n if (!query) {\n queryId = 'default';\n }\n else {\n queryId = query.map(function (q) { return util_4.ObjectToUniqueKey(q); }).join('$');\n }\n var listen = this.removeListen_(pathString, queryId);\n if (listen && listen.onComplete)\n listen.onComplete('permission_denied');\n };\n /**\n * @param {!string} pathString\n * @param {!string} queryId\n * @return {{queries:Array., onComplete:function(string)}}\n * @private\n */\n PersistentConnection.prototype.removeListen_ = function (pathString, queryId) {\n var normalizedPathString = new Path_1.Path(pathString).toString(); // normalize path.\n var listen;\n if (this.listens_[normalizedPathString] !== undefined) {\n listen = this.listens_[normalizedPathString][queryId];\n delete this.listens_[normalizedPathString][queryId];\n if (util_1.getCount(this.listens_[normalizedPathString]) === 0) {\n delete this.listens_[normalizedPathString];\n }\n }\n else {\n // all listens for this path has already been removed\n listen = undefined;\n }\n return listen;\n };\n PersistentConnection.prototype.onAuthRevoked_ = function (statusCode, explanation) {\n util_4.log('Auth token revoked: ' + statusCode + '/' + explanation);\n this.authToken_ = null;\n this.forceTokenRefresh_ = true;\n this.realtime_.close();\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\n // We'll wait a couple times before logging the warning / increasing the\n // retry period since oauth tokens will report as \"invalid\" if they're\n // just expired. Plus there may be transient issues that resolve themselves.\n this.invalidAuthTokenCount_++;\n if (this.invalidAuthTokenCount_ >= INVALID_AUTH_TOKEN_THRESHOLD) {\n // Set a long reconnect delay because recovery is unlikely\n this.reconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\n // Notify the auth token provider that the token is invalid, which will log\n // a warning\n this.authTokenProvider_.notifyForInvalidToken();\n }\n }\n };\n PersistentConnection.prototype.onSecurityDebugPacket_ = function (body) {\n if (this.securityDebugCallback_) {\n this.securityDebugCallback_(body);\n }\n else {\n if ('msg' in body && typeof console !== 'undefined') {\n console.log('FIREBASE: ' + body['msg'].replace('\\n', '\\nFIREBASE: '));\n }\n }\n };\n PersistentConnection.prototype.restoreState_ = function () {\n var _this = this;\n //Re-authenticate ourselves if we have a credential stored.\n this.tryAuth();\n // Puts depend on having received the corresponding data update from the server before they complete, so we must\n // make sure to send listens before puts.\n util_1.forEach(this.listens_, function (pathString, queries) {\n util_1.forEach(queries, function (key, listenSpec) {\n _this.sendListen_(listenSpec);\n });\n });\n for (var i = 0; i < this.outstandingPuts_.length; i++) {\n if (this.outstandingPuts_[i])\n this.sendPut_(i);\n }\n while (this.onDisconnectRequestQueue_.length) {\n var request = this.onDisconnectRequestQueue_.shift();\n this.sendOnDisconnect_(request.action, request.pathString, request.data, request.onComplete);\n }\n };\n /**\n * Sends client stats for first connection\n * @private\n */\n PersistentConnection.prototype.sendConnectStats_ = function () {\n var stats = {};\n var clientName = 'js';\n if (util_6.CONSTANTS.NODE_ADMIN) {\n clientName = 'admin_node';\n }\n else if (util_6.CONSTANTS.NODE_CLIENT) {\n clientName = 'node';\n }\n stats['sdk.' + clientName + '.' + app_1.default.SDK_VERSION.replace(/\\./g, '-')] = 1;\n if (util_7.isMobileCordova()) {\n stats['framework.cordova'] = 1;\n }\n else if (util_7.isReactNative()) {\n stats['framework.reactnative'] = 1;\n }\n this.reportStats(stats);\n };\n /**\n * @return {boolean}\n * @private\n */\n PersistentConnection.prototype.shouldReconnect_ = function () {\n var online = OnlineMonitor_1.OnlineMonitor.getInstance().currentlyOnline();\n return util_1.isEmpty(this.interruptReasons_) && online;\n };\n /**\n * @private\n */\n PersistentConnection.nextPersistentConnectionId_ = 0;\n /**\n * Counter for number of connections created. Mainly used for tagging in the logs\n * @type {number}\n * @private\n */\n PersistentConnection.nextConnectionId_ = 0;\n return PersistentConnection;\n}(ServerActions_1.ServerActions));\nexports.PersistentConnection = PersistentConnection;\n\n//# sourceMappingURL=PersistentConnection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/PersistentConnection.js\n// module id = 49\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Base class to be used if you want to emit events. Call the constructor with\n * the set of allowed event names.\n */\nvar EventEmitter = /** @class */ (function () {\n /**\n * @param {!Array.} allowedEvents_\n */\n function EventEmitter(allowedEvents_) {\n this.allowedEvents_ = allowedEvents_;\n this.listeners_ = {};\n util_1.assert(Array.isArray(allowedEvents_) && allowedEvents_.length > 0, 'Requires a non-empty array');\n }\n /**\n * To be called by derived classes to trigger events.\n * @param {!string} eventType\n * @param {...*} var_args\n */\n EventEmitter.prototype.trigger = function (eventType) {\n var var_args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n var_args[_i - 1] = arguments[_i];\n }\n if (Array.isArray(this.listeners_[eventType])) {\n // Clone the list, since callbacks could add/remove listeners.\n var listeners = this.listeners_[eventType].slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].callback.apply(listeners[i].context, var_args);\n }\n }\n };\n EventEmitter.prototype.on = function (eventType, callback, context) {\n this.validateEventType_(eventType);\n this.listeners_[eventType] = this.listeners_[eventType] || [];\n this.listeners_[eventType].push({ callback: callback, context: context });\n var eventData = this.getInitialEvent(eventType);\n if (eventData) {\n callback.apply(context, eventData);\n }\n };\n EventEmitter.prototype.off = function (eventType, callback, context) {\n this.validateEventType_(eventType);\n var listeners = this.listeners_[eventType] || [];\n for (var i = 0; i < listeners.length; i++) {\n if (listeners[i].callback === callback &&\n (!context || context === listeners[i].context)) {\n listeners.splice(i, 1);\n return;\n }\n }\n };\n EventEmitter.prototype.validateEventType_ = function (eventType) {\n util_1.assert(this.allowedEvents_.find(function (et) {\n return et === eventType;\n }), 'Unknown event: ' + eventType);\n };\n return EventEmitter;\n}());\nexports.EventEmitter = EventEmitter;\n\n//# sourceMappingURL=EventEmitter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/EventEmitter.js\n// module id = 50\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../core/util/util\");\nvar storage_1 = require(\"../core/storage/storage\");\nvar Constants_1 = require(\"./Constants\");\nvar TransportManager_1 = require(\"./TransportManager\");\n// Abort upgrade attempt if it takes longer than 60s.\nvar UPGRADE_TIMEOUT = 60000;\n// For some transports (WebSockets), we need to \"validate\" the transport by exchanging a few requests and responses.\n// If we haven't sent enough requests within 5s, we'll start sending noop ping requests.\nvar DELAY_BEFORE_SENDING_EXTRA_REQUESTS = 5000;\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)\n// then we may not be able to exchange our ping/pong requests within the healthy timeout. So if we reach the timeout\n// but we've sent/received enough bytes, we don't cancel the connection.\nvar BYTES_SENT_HEALTHY_OVERRIDE = 10 * 1024;\nvar BYTES_RECEIVED_HEALTHY_OVERRIDE = 100 * 1024;\nvar MESSAGE_TYPE = 't';\nvar MESSAGE_DATA = 'd';\nvar CONTROL_SHUTDOWN = 's';\nvar CONTROL_RESET = 'r';\nvar CONTROL_ERROR = 'e';\nvar CONTROL_PONG = 'o';\nvar SWITCH_ACK = 'a';\nvar END_TRANSMISSION = 'n';\nvar PING = 'p';\nvar SERVER_HELLO = 'h';\n/**\n * Creates a new real-time connection to the server using whichever method works\n * best in the current browser.\n *\n * @constructor\n */\nvar Connection = /** @class */ (function () {\n /**\n * @param {!string} id - an id for this connection\n * @param {!RepoInfo} repoInfo_ - the info for the endpoint to connect to\n * @param {function(Object)} onMessage_ - the callback to be triggered when a server-push message arrives\n * @param {function(number, string)} onReady_ - the callback to be triggered when this connection is ready to send messages.\n * @param {function()} onDisconnect_ - the callback to be triggered when a connection was lost\n * @param {function(string)} onKill_ - the callback to be triggered when this connection has permanently shut down.\n * @param {string=} lastSessionId - last session id in persistent connection. is used to clean up old session in real-time server\n */\n function Connection(id, repoInfo_, onMessage_, onReady_, onDisconnect_, onKill_, lastSessionId) {\n this.id = id;\n this.repoInfo_ = repoInfo_;\n this.onMessage_ = onMessage_;\n this.onReady_ = onReady_;\n this.onDisconnect_ = onDisconnect_;\n this.onKill_ = onKill_;\n this.lastSessionId = lastSessionId;\n this.connectionCount = 0;\n this.pendingDataMessages = [];\n this.state_ = 0 /* CONNECTING */;\n this.log_ = util_1.logWrapper('c:' + this.id + ':');\n this.transportManager_ = new TransportManager_1.TransportManager(repoInfo_);\n this.log_('Connection created');\n this.start_();\n }\n /**\n * Starts a connection attempt\n * @private\n */\n Connection.prototype.start_ = function () {\n var _this = this;\n var conn = this.transportManager_.initialTransport();\n this.conn_ = new conn(this.nextTransportId_(), this.repoInfo_, undefined, this.lastSessionId);\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\n // can consider the transport healthy.\n this.primaryResponsesRequired_ = conn['responsesRequiredToBeHealthy'] || 0;\n var onMessageReceived = this.connReceiver_(this.conn_);\n var onConnectionLost = this.disconnReceiver_(this.conn_);\n this.tx_ = this.conn_;\n this.rx_ = this.conn_;\n this.secondaryConn_ = null;\n this.isHealthy_ = false;\n /*\n * Firefox doesn't like when code from one iframe tries to create another iframe by way of the parent frame.\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.\n * Somehow, setTimeout seems to make this ok. That doesn't make sense from a security perspective, since you should\n * still have the context of your originating frame.\n */\n setTimeout(function () {\n // this.conn_ gets set to null in some of the tests. Check to make sure it still exists before using it\n _this.conn_ && _this.conn_.open(onMessageReceived, onConnectionLost);\n }, Math.floor(0));\n var healthyTimeout_ms = conn['healthyTimeout'] || 0;\n if (healthyTimeout_ms > 0) {\n this.healthyTimeout_ = util_1.setTimeoutNonBlocking(function () {\n _this.healthyTimeout_ = null;\n if (!_this.isHealthy_) {\n if (_this.conn_ &&\n _this.conn_.bytesReceived > BYTES_RECEIVED_HEALTHY_OVERRIDE) {\n _this.log_('Connection exceeded healthy timeout but has received ' +\n _this.conn_.bytesReceived +\n ' bytes. Marking connection healthy.');\n _this.isHealthy_ = true;\n _this.conn_.markConnectionHealthy();\n }\n else if (_this.conn_ &&\n _this.conn_.bytesSent > BYTES_SENT_HEALTHY_OVERRIDE) {\n _this.log_('Connection exceeded healthy timeout but has sent ' +\n _this.conn_.bytesSent +\n ' bytes. Leaving connection alive.');\n // NOTE: We don't want to mark it healthy, since we have no guarantee that the bytes have made it to\n // the server.\n }\n else {\n _this.log_('Closing unhealthy connection after timeout.');\n _this.close();\n }\n }\n }, Math.floor(healthyTimeout_ms));\n }\n };\n /**\n * @return {!string}\n * @private\n */\n Connection.prototype.nextTransportId_ = function () {\n return 'c:' + this.id + ':' + this.connectionCount++;\n };\n Connection.prototype.disconnReceiver_ = function (conn) {\n var _this = this;\n return function (everConnected) {\n if (conn === _this.conn_) {\n _this.onConnectionLost_(everConnected);\n }\n else if (conn === _this.secondaryConn_) {\n _this.log_('Secondary connection lost.');\n _this.onSecondaryConnectionLost_();\n }\n else {\n _this.log_('closing an old connection');\n }\n };\n };\n Connection.prototype.connReceiver_ = function (conn) {\n var _this = this;\n return function (message) {\n if (_this.state_ != 2 /* DISCONNECTED */) {\n if (conn === _this.rx_) {\n _this.onPrimaryMessageReceived_(message);\n }\n else if (conn === _this.secondaryConn_) {\n _this.onSecondaryMessageReceived_(message);\n }\n else {\n _this.log_('message on old connection');\n }\n }\n };\n };\n /**\n *\n * @param {Object} dataMsg An arbitrary data message to be sent to the server\n */\n Connection.prototype.sendRequest = function (dataMsg) {\n // wrap in a data message envelope and send it on\n var msg = { t: 'd', d: dataMsg };\n this.sendData_(msg);\n };\n Connection.prototype.tryCleanupConnection = function () {\n if (this.tx_ === this.secondaryConn_ && this.rx_ === this.secondaryConn_) {\n this.log_('cleaning up and promoting a connection: ' + this.secondaryConn_.connId);\n this.conn_ = this.secondaryConn_;\n this.secondaryConn_ = null;\n // the server will shutdown the old connection\n }\n };\n Connection.prototype.onSecondaryControl_ = function (controlData) {\n if (MESSAGE_TYPE in controlData) {\n var cmd = controlData[MESSAGE_TYPE];\n if (cmd === SWITCH_ACK) {\n this.upgradeIfSecondaryHealthy_();\n }\n else if (cmd === CONTROL_RESET) {\n // Most likely the session wasn't valid. Abandon the switch attempt\n this.log_('Got a reset on secondary, closing it');\n this.secondaryConn_.close();\n // If we were already using this connection for something, than we need to fully close\n if (this.tx_ === this.secondaryConn_ ||\n this.rx_ === this.secondaryConn_) {\n this.close();\n }\n }\n else if (cmd === CONTROL_PONG) {\n this.log_('got pong on secondary.');\n this.secondaryResponsesRequired_--;\n this.upgradeIfSecondaryHealthy_();\n }\n }\n };\n Connection.prototype.onSecondaryMessageReceived_ = function (parsedData) {\n var layer = util_1.requireKey('t', parsedData);\n var data = util_1.requireKey('d', parsedData);\n if (layer == 'c') {\n this.onSecondaryControl_(data);\n }\n else if (layer == 'd') {\n // got a data message, but we're still second connection. Need to buffer it up\n this.pendingDataMessages.push(data);\n }\n else {\n throw new Error('Unknown protocol layer: ' + layer);\n }\n };\n Connection.prototype.upgradeIfSecondaryHealthy_ = function () {\n if (this.secondaryResponsesRequired_ <= 0) {\n this.log_('Secondary connection is healthy.');\n this.isHealthy_ = true;\n this.secondaryConn_.markConnectionHealthy();\n this.proceedWithUpgrade_();\n }\n else {\n // Send a ping to make sure the connection is healthy.\n this.log_('sending ping on secondary.');\n this.secondaryConn_.send({ t: 'c', d: { t: PING, d: {} } });\n }\n };\n Connection.prototype.proceedWithUpgrade_ = function () {\n // tell this connection to consider itself open\n this.secondaryConn_.start();\n // send ack\n this.log_('sending client ack on secondary');\n this.secondaryConn_.send({ t: 'c', d: { t: SWITCH_ACK, d: {} } });\n // send end packet on primary transport, switch to sending on this one\n // can receive on this one, buffer responses until end received on primary transport\n this.log_('Ending transmission on primary');\n this.conn_.send({ t: 'c', d: { t: END_TRANSMISSION, d: {} } });\n this.tx_ = this.secondaryConn_;\n this.tryCleanupConnection();\n };\n Connection.prototype.onPrimaryMessageReceived_ = function (parsedData) {\n // Must refer to parsedData properties in quotes, so closure doesn't touch them.\n var layer = util_1.requireKey('t', parsedData);\n var data = util_1.requireKey('d', parsedData);\n if (layer == 'c') {\n this.onControl_(data);\n }\n else if (layer == 'd') {\n this.onDataMessage_(data);\n }\n };\n Connection.prototype.onDataMessage_ = function (message) {\n this.onPrimaryResponse_();\n // We don't do anything with data messages, just kick them up a level\n this.onMessage_(message);\n };\n Connection.prototype.onPrimaryResponse_ = function () {\n if (!this.isHealthy_) {\n this.primaryResponsesRequired_--;\n if (this.primaryResponsesRequired_ <= 0) {\n this.log_('Primary connection is healthy.');\n this.isHealthy_ = true;\n this.conn_.markConnectionHealthy();\n }\n }\n };\n Connection.prototype.onControl_ = function (controlData) {\n var cmd = util_1.requireKey(MESSAGE_TYPE, controlData);\n if (MESSAGE_DATA in controlData) {\n var payload = controlData[MESSAGE_DATA];\n if (cmd === SERVER_HELLO) {\n this.onHandshake_(payload);\n }\n else if (cmd === END_TRANSMISSION) {\n this.log_('recvd end transmission on primary');\n this.rx_ = this.secondaryConn_;\n for (var i = 0; i < this.pendingDataMessages.length; ++i) {\n this.onDataMessage_(this.pendingDataMessages[i]);\n }\n this.pendingDataMessages = [];\n this.tryCleanupConnection();\n }\n else if (cmd === CONTROL_SHUTDOWN) {\n // This was previously the 'onKill' callback passed to the lower-level connection\n // payload in this case is the reason for the shutdown. Generally a human-readable error\n this.onConnectionShutdown_(payload);\n }\n else if (cmd === CONTROL_RESET) {\n // payload in this case is the host we should contact\n this.onReset_(payload);\n }\n else if (cmd === CONTROL_ERROR) {\n util_1.error('Server Error: ' + payload);\n }\n else if (cmd === CONTROL_PONG) {\n this.log_('got pong on primary.');\n this.onPrimaryResponse_();\n this.sendPingOnPrimaryIfNecessary_();\n }\n else {\n util_1.error('Unknown control packet command: ' + cmd);\n }\n }\n };\n /**\n *\n * @param {Object} handshake The handshake data returned from the server\n * @private\n */\n Connection.prototype.onHandshake_ = function (handshake) {\n var timestamp = handshake.ts;\n var version = handshake.v;\n var host = handshake.h;\n this.sessionId = handshake.s;\n this.repoInfo_.updateHost(host);\n // if we've already closed the connection, then don't bother trying to progress further\n if (this.state_ == 0 /* CONNECTING */) {\n this.conn_.start();\n this.onConnectionEstablished_(this.conn_, timestamp);\n if (Constants_1.PROTOCOL_VERSION !== version) {\n util_1.warn('Protocol version mismatch detected');\n }\n // TODO: do we want to upgrade? when? maybe a delay?\n this.tryStartUpgrade_();\n }\n };\n Connection.prototype.tryStartUpgrade_ = function () {\n var conn = this.transportManager_.upgradeTransport();\n if (conn) {\n this.startUpgrade_(conn);\n }\n };\n Connection.prototype.startUpgrade_ = function (conn) {\n var _this = this;\n this.secondaryConn_ = new conn(this.nextTransportId_(), this.repoInfo_, this.sessionId);\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\n // can consider the transport healthy.\n this.secondaryResponsesRequired_ =\n conn['responsesRequiredToBeHealthy'] || 0;\n var onMessage = this.connReceiver_(this.secondaryConn_);\n var onDisconnect = this.disconnReceiver_(this.secondaryConn_);\n this.secondaryConn_.open(onMessage, onDisconnect);\n // If we haven't successfully upgraded after UPGRADE_TIMEOUT, give up and kill the secondary.\n util_1.setTimeoutNonBlocking(function () {\n if (_this.secondaryConn_) {\n _this.log_('Timed out trying to upgrade.');\n _this.secondaryConn_.close();\n }\n }, Math.floor(UPGRADE_TIMEOUT));\n };\n Connection.prototype.onReset_ = function (host) {\n this.log_('Reset packet received. New host: ' + host);\n this.repoInfo_.updateHost(host);\n // TODO: if we're already \"connected\", we need to trigger a disconnect at the next layer up.\n // We don't currently support resets after the connection has already been established\n if (this.state_ === 1 /* CONNECTED */) {\n this.close();\n }\n else {\n // Close whatever connections we have open and start again.\n this.closeConnections_();\n this.start_();\n }\n };\n Connection.prototype.onConnectionEstablished_ = function (conn, timestamp) {\n var _this = this;\n this.log_('Realtime connection established.');\n this.conn_ = conn;\n this.state_ = 1 /* CONNECTED */;\n if (this.onReady_) {\n this.onReady_(timestamp, this.sessionId);\n this.onReady_ = null;\n }\n // If after 5 seconds we haven't sent enough requests to the server to get the connection healthy,\n // send some pings.\n if (this.primaryResponsesRequired_ === 0) {\n this.log_('Primary connection is healthy.');\n this.isHealthy_ = true;\n }\n else {\n util_1.setTimeoutNonBlocking(function () {\n _this.sendPingOnPrimaryIfNecessary_();\n }, Math.floor(DELAY_BEFORE_SENDING_EXTRA_REQUESTS));\n }\n };\n Connection.prototype.sendPingOnPrimaryIfNecessary_ = function () {\n // If the connection isn't considered healthy yet, we'll send a noop ping packet request.\n if (!this.isHealthy_ && this.state_ === 1 /* CONNECTED */) {\n this.log_('sending ping on primary.');\n this.sendData_({ t: 'c', d: { t: PING, d: {} } });\n }\n };\n Connection.prototype.onSecondaryConnectionLost_ = function () {\n var conn = this.secondaryConn_;\n this.secondaryConn_ = null;\n if (this.tx_ === conn || this.rx_ === conn) {\n // we are relying on this connection already in some capacity. Therefore, a failure is real\n this.close();\n }\n };\n /**\n *\n * @param {boolean} everConnected Whether or not the connection ever reached a server. Used to determine if\n * we should flush the host cache\n * @private\n */\n Connection.prototype.onConnectionLost_ = function (everConnected) {\n this.conn_ = null;\n // NOTE: IF you're seeing a Firefox error for this line, I think it might be because it's getting\n // called on window close and RealtimeState.CONNECTING is no longer defined. Just a guess.\n if (!everConnected && this.state_ === 0 /* CONNECTING */) {\n this.log_('Realtime connection failed.');\n // Since we failed to connect at all, clear any cached entry for this namespace in case the machine went away\n if (this.repoInfo_.isCacheableHost()) {\n storage_1.PersistentStorage.remove('host:' + this.repoInfo_.host);\n // reset the internal host to what we would show the user, i.e. .firebaseio.com\n this.repoInfo_.internalHost = this.repoInfo_.host;\n }\n }\n else if (this.state_ === 1 /* CONNECTED */) {\n this.log_('Realtime connection lost.');\n }\n this.close();\n };\n /**\n *\n * @param {string} reason\n * @private\n */\n Connection.prototype.onConnectionShutdown_ = function (reason) {\n this.log_('Connection shutdown command received. Shutting down...');\n if (this.onKill_) {\n this.onKill_(reason);\n this.onKill_ = null;\n }\n // We intentionally don't want to fire onDisconnect (kill is a different case),\n // so clear the callback.\n this.onDisconnect_ = null;\n this.close();\n };\n Connection.prototype.sendData_ = function (data) {\n if (this.state_ !== 1 /* CONNECTED */) {\n throw 'Connection is not connected';\n }\n else {\n this.tx_.send(data);\n }\n };\n /**\n * Cleans up this connection, calling the appropriate callbacks\n */\n Connection.prototype.close = function () {\n if (this.state_ !== 2 /* DISCONNECTED */) {\n this.log_('Closing realtime connection.');\n this.state_ = 2 /* DISCONNECTED */;\n this.closeConnections_();\n if (this.onDisconnect_) {\n this.onDisconnect_();\n this.onDisconnect_ = null;\n }\n }\n };\n /**\n *\n * @private\n */\n Connection.prototype.closeConnections_ = function () {\n this.log_('Shutting down all connections');\n if (this.conn_) {\n this.conn_.close();\n this.conn_ = null;\n }\n if (this.secondaryConn_) {\n this.secondaryConn_.close();\n this.secondaryConn_ = null;\n }\n if (this.healthyTimeout_) {\n clearTimeout(this.healthyTimeout_);\n this.healthyTimeout_ = null;\n }\n };\n return Connection;\n}());\nexports.Connection = Connection;\n\n//# sourceMappingURL=Connection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/Connection.js\n// module id = 51\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../core/util/util\");\nvar CountedSet_1 = require(\"../core/util/CountedSet\");\nvar StatsManager_1 = require(\"../core/stats/StatsManager\");\nvar PacketReceiver_1 = require(\"./polling/PacketReceiver\");\nvar Constants_1 = require(\"./Constants\");\nvar util_2 = require(\"@firebase/util\");\nvar util_3 = require(\"@firebase/util\");\n// URL query parameters associated with longpolling\nexports.FIREBASE_LONGPOLL_START_PARAM = 'start';\nexports.FIREBASE_LONGPOLL_CLOSE_COMMAND = 'close';\nexports.FIREBASE_LONGPOLL_COMMAND_CB_NAME = 'pLPCommand';\nexports.FIREBASE_LONGPOLL_DATA_CB_NAME = 'pRTLPCB';\nexports.FIREBASE_LONGPOLL_ID_PARAM = 'id';\nexports.FIREBASE_LONGPOLL_PW_PARAM = 'pw';\nexports.FIREBASE_LONGPOLL_SERIAL_PARAM = 'ser';\nexports.FIREBASE_LONGPOLL_CALLBACK_ID_PARAM = 'cb';\nexports.FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM = 'seg';\nexports.FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET = 'ts';\nexports.FIREBASE_LONGPOLL_DATA_PARAM = 'd';\nexports.FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM = 'disconn';\nexports.FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM = 'dframe';\n//Data size constants.\n//TODO: Perf: the maximum length actually differs from browser to browser.\n// We should check what browser we're on and set accordingly.\nvar MAX_URL_DATA_SIZE = 1870;\nvar SEG_HEADER_SIZE = 30; //ie: &seg=8299234&ts=982389123&d=\nvar MAX_PAYLOAD_SIZE = MAX_URL_DATA_SIZE - SEG_HEADER_SIZE;\n/**\n * Keepalive period\n * send a fresh request at minimum every 25 seconds. Opera has a maximum request\n * length of 30 seconds that we can't exceed.\n * @const\n * @type {number}\n */\nvar KEEPALIVE_REQUEST_INTERVAL = 25000;\n/**\n * How long to wait before aborting a long-polling connection attempt.\n * @const\n * @type {number}\n */\nvar LP_CONNECT_TIMEOUT = 30000;\n/**\n * This class manages a single long-polling connection.\n *\n * @constructor\n * @implements {Transport}\n */\nvar BrowserPollConnection = /** @class */ (function () {\n /**\n * @param {string} connId An identifier for this connection, used for logging\n * @param {RepoInfo} repoInfo The info for the endpoint to send data to.\n * @param {string=} transportSessionId Optional transportSessionid if we are reconnecting for an existing\n * transport session\n * @param {string=} lastSessionId Optional lastSessionId if the PersistentConnection has already created a\n * connection previously\n */\n function BrowserPollConnection(connId, repoInfo, transportSessionId, lastSessionId) {\n this.connId = connId;\n this.repoInfo = repoInfo;\n this.transportSessionId = transportSessionId;\n this.lastSessionId = lastSessionId;\n this.bytesSent = 0;\n this.bytesReceived = 0;\n this.everConnected_ = false;\n this.log_ = util_1.logWrapper(connId);\n this.stats_ = StatsManager_1.StatsManager.getCollection(repoInfo);\n this.urlFn = function (params) {\n return repoInfo.connectionURL(Constants_1.LONG_POLLING, params);\n };\n }\n /**\n *\n * @param {function(Object)} onMessage Callback when messages arrive\n * @param {function()} onDisconnect Callback with connection lost.\n */\n BrowserPollConnection.prototype.open = function (onMessage, onDisconnect) {\n var _this = this;\n this.curSegmentNum = 0;\n this.onDisconnect_ = onDisconnect;\n this.myPacketOrderer = new PacketReceiver_1.PacketReceiver(onMessage);\n this.isClosed_ = false;\n this.connectTimeoutTimer_ = setTimeout(function () {\n _this.log_('Timed out trying to connect.');\n // Make sure we clear the host cache\n _this.onClosed_();\n _this.connectTimeoutTimer_ = null;\n }, Math.floor(LP_CONNECT_TIMEOUT));\n // Ensure we delay the creation of the iframe until the DOM is loaded.\n util_1.executeWhenDOMReady(function () {\n if (_this.isClosed_)\n return;\n //Set up a callback that gets triggered once a connection is set up.\n _this.scriptTagHolder = new FirebaseIFrameScriptHolder(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var command = args[0], arg1 = args[1], arg2 = args[2], arg3 = args[3], arg4 = args[4];\n _this.incrementIncomingBytes_(args);\n if (!_this.scriptTagHolder)\n return; // we closed the connection.\n if (_this.connectTimeoutTimer_) {\n clearTimeout(_this.connectTimeoutTimer_);\n _this.connectTimeoutTimer_ = null;\n }\n _this.everConnected_ = true;\n if (command == exports.FIREBASE_LONGPOLL_START_PARAM) {\n _this.id = arg1;\n _this.password = arg2;\n }\n else if (command === exports.FIREBASE_LONGPOLL_CLOSE_COMMAND) {\n // Don't clear the host cache. We got a response from the server, so we know it's reachable\n if (arg1) {\n // We aren't expecting any more data (other than what the server's already in the process of sending us\n // through our already open polls), so don't send any more.\n _this.scriptTagHolder.sendNewPolls = false;\n // arg1 in this case is the last response number sent by the server. We should try to receive\n // all of the responses up to this one before closing\n _this.myPacketOrderer.closeAfter(arg1, function () {\n _this.onClosed_();\n });\n }\n else {\n _this.onClosed_();\n }\n }\n else {\n throw new Error('Unrecognized command received: ' + command);\n }\n }, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var pN = args[0], data = args[1];\n _this.incrementIncomingBytes_(args);\n _this.myPacketOrderer.handleResponse(pN, data);\n }, function () {\n _this.onClosed_();\n }, _this.urlFn);\n //Send the initial request to connect. The serial number is simply to keep the browser from pulling previous results\n //from cache.\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_START_PARAM] = 't';\n urlParams[exports.FIREBASE_LONGPOLL_SERIAL_PARAM] = Math.floor(Math.random() * 100000000);\n if (_this.scriptTagHolder.uniqueCallbackIdentifier)\n urlParams[exports.FIREBASE_LONGPOLL_CALLBACK_ID_PARAM] = _this.scriptTagHolder.uniqueCallbackIdentifier;\n urlParams[Constants_1.VERSION_PARAM] = Constants_1.PROTOCOL_VERSION;\n if (_this.transportSessionId) {\n urlParams[Constants_1.TRANSPORT_SESSION_PARAM] = _this.transportSessionId;\n }\n if (_this.lastSessionId) {\n urlParams[Constants_1.LAST_SESSION_PARAM] = _this.lastSessionId;\n }\n if (!util_3.isNodeSdk() &&\n typeof location !== 'undefined' &&\n location.href &&\n location.href.indexOf(Constants_1.FORGE_DOMAIN) !== -1) {\n urlParams[Constants_1.REFERER_PARAM] = Constants_1.FORGE_REF;\n }\n var connectURL = _this.urlFn(urlParams);\n _this.log_('Connecting via long-poll to ' + connectURL);\n _this.scriptTagHolder.addTag(connectURL, function () {\n /* do nothing */\n });\n });\n };\n /**\n * Call this when a handshake has completed successfully and we want to consider the connection established\n */\n BrowserPollConnection.prototype.start = function () {\n this.scriptTagHolder.startLongPoll(this.id, this.password);\n this.addDisconnectPingFrame(this.id, this.password);\n };\n /**\n * Forces long polling to be considered as a potential transport\n */\n BrowserPollConnection.forceAllow = function () {\n BrowserPollConnection.forceAllow_ = true;\n };\n /**\n * Forces longpolling to not be considered as a potential transport\n */\n BrowserPollConnection.forceDisallow = function () {\n BrowserPollConnection.forceDisallow_ = true;\n };\n // Static method, use string literal so it can be accessed in a generic way\n BrowserPollConnection.isAvailable = function () {\n // NOTE: In React-Native there's normally no 'document', but if you debug a React-Native app in\n // the Chrome debugger, 'document' is defined, but document.createElement is null (2015/06/08).\n return (BrowserPollConnection.forceAllow_ ||\n (!BrowserPollConnection.forceDisallow_ &&\n typeof document !== 'undefined' &&\n document.createElement != null &&\n !util_1.isChromeExtensionContentScript() &&\n !util_1.isWindowsStoreApp() &&\n !util_3.isNodeSdk()));\n };\n /**\n * No-op for polling\n */\n BrowserPollConnection.prototype.markConnectionHealthy = function () { };\n /**\n * Stops polling and cleans up the iframe\n * @private\n */\n BrowserPollConnection.prototype.shutdown_ = function () {\n this.isClosed_ = true;\n if (this.scriptTagHolder) {\n this.scriptTagHolder.close();\n this.scriptTagHolder = null;\n }\n //remove the disconnect frame, which will trigger an XHR call to the server to tell it we're leaving.\n if (this.myDisconnFrame) {\n document.body.removeChild(this.myDisconnFrame);\n this.myDisconnFrame = null;\n }\n if (this.connectTimeoutTimer_) {\n clearTimeout(this.connectTimeoutTimer_);\n this.connectTimeoutTimer_ = null;\n }\n };\n /**\n * Triggered when this transport is closed\n * @private\n */\n BrowserPollConnection.prototype.onClosed_ = function () {\n if (!this.isClosed_) {\n this.log_('Longpoll is closing itself');\n this.shutdown_();\n if (this.onDisconnect_) {\n this.onDisconnect_(this.everConnected_);\n this.onDisconnect_ = null;\n }\n }\n };\n /**\n * External-facing close handler. RealTime has requested we shut down. Kill our connection and tell the server\n * that we've left.\n */\n BrowserPollConnection.prototype.close = function () {\n if (!this.isClosed_) {\n this.log_('Longpoll is being closed.');\n this.shutdown_();\n }\n };\n /**\n * Send the JSON object down to the server. It will need to be stringified, base64 encoded, and then\n * broken into chunks (since URLs have a small maximum length).\n * @param {!Object} data The JSON data to transmit.\n */\n BrowserPollConnection.prototype.send = function (data) {\n var dataStr = util_2.stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n //first, lets get the base64-encoded data\n var base64data = util_2.base64Encode(dataStr);\n //We can only fit a certain amount in each URL, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n var dataSegs = util_1.splitStringBySize(base64data, MAX_PAYLOAD_SIZE);\n //Enqueue each segment for transmission. We assign each chunk a sequential ID and a total number\n //of segments so that we can reassemble the packet on the server.\n for (var i = 0; i < dataSegs.length; i++) {\n this.scriptTagHolder.enqueueSegment(this.curSegmentNum, dataSegs.length, dataSegs[i]);\n this.curSegmentNum++;\n }\n };\n /**\n * This is how we notify the server that we're leaving.\n * We aren't able to send requests with DHTML on a window close event, but we can\n * trigger XHR requests in some browsers (everything but Opera basically).\n * @param {!string} id\n * @param {!string} pw\n */\n BrowserPollConnection.prototype.addDisconnectPingFrame = function (id, pw) {\n if (util_3.isNodeSdk())\n return;\n this.myDisconnFrame = document.createElement('iframe');\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM] = 't';\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = id;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = pw;\n this.myDisconnFrame.src = this.urlFn(urlParams);\n this.myDisconnFrame.style.display = 'none';\n document.body.appendChild(this.myDisconnFrame);\n };\n /**\n * Used to track the bytes received by this client\n * @param {*} args\n * @private\n */\n BrowserPollConnection.prototype.incrementIncomingBytes_ = function (args) {\n // TODO: This is an annoying perf hit just to track the number of incoming bytes. Maybe it should be opt-in.\n var bytesReceived = util_2.stringify(args).length;\n this.bytesReceived += bytesReceived;\n this.stats_.incrementCounter('bytes_received', bytesReceived);\n };\n return BrowserPollConnection;\n}());\nexports.BrowserPollConnection = BrowserPollConnection;\n/*********************************************************************************************\n * A wrapper around an iframe that is used as a long-polling script holder.\n * @constructor\n *********************************************************************************************/\nvar FirebaseIFrameScriptHolder = /** @class */ (function () {\n /**\n * @param commandCB - The callback to be called when control commands are recevied from the server.\n * @param onMessageCB - The callback to be triggered when responses arrive from the server.\n * @param onDisconnect - The callback to be triggered when this tag holder is closed\n * @param urlFn - A function that provides the URL of the endpoint to send data to.\n */\n function FirebaseIFrameScriptHolder(commandCB, onMessageCB, onDisconnect, urlFn) {\n this.onDisconnect = onDisconnect;\n this.urlFn = urlFn;\n //We maintain a count of all of the outstanding requests, because if we have too many active at once it can cause\n //problems in some browsers.\n /**\n * @type {CountedSet.}\n */\n this.outstandingRequests = new CountedSet_1.CountedSet();\n //A queue of the pending segments waiting for transmission to the server.\n this.pendingSegs = [];\n //A serial number. We use this for two things:\n // 1) A way to ensure the browser doesn't cache responses to polls\n // 2) A way to make the server aware when long-polls arrive in a different order than we started them. The\n // server needs to release both polls in this case or it will cause problems in Opera since Opera can only execute\n // JSONP code in the order it was added to the iframe.\n this.currentSerial = Math.floor(Math.random() * 100000000);\n // This gets set to false when we're \"closing down\" the connection (e.g. we're switching transports but there's still\n // incoming data from the server that we're waiting for).\n this.sendNewPolls = true;\n if (!util_3.isNodeSdk()) {\n //Each script holder registers a couple of uniquely named callbacks with the window. These are called from the\n //iframes where we put the long-polling script tags. We have two callbacks:\n // 1) Command Callback - Triggered for control issues, like starting a connection.\n // 2) Message Callback - Triggered when new data arrives.\n this.uniqueCallbackIdentifier = util_1.LUIDGenerator();\n window[exports.FIREBASE_LONGPOLL_COMMAND_CB_NAME + this.uniqueCallbackIdentifier] = commandCB;\n window[exports.FIREBASE_LONGPOLL_DATA_CB_NAME + this.uniqueCallbackIdentifier] = onMessageCB;\n //Create an iframe for us to add script tags to.\n this.myIFrame = FirebaseIFrameScriptHolder.createIFrame_();\n // Set the iframe's contents.\n var script = '';\n // if we set a javascript url, it's IE and we need to set the document domain. The javascript url is sufficient\n // for ie9, but ie8 needs to do it again in the document itself.\n if (this.myIFrame.src &&\n this.myIFrame.src.substr(0, 'javascript:'.length) === 'javascript:') {\n var currentDomain = document.domain;\n script = '';\n }\n var iframeContents = '' + script + '';\n try {\n this.myIFrame.doc.open();\n this.myIFrame.doc.write(iframeContents);\n this.myIFrame.doc.close();\n }\n catch (e) {\n util_1.log('frame writing exception');\n if (e.stack) {\n util_1.log(e.stack);\n }\n util_1.log(e);\n }\n }\n else {\n this.commandCB = commandCB;\n this.onMessageCB = onMessageCB;\n }\n }\n /**\n * Each browser has its own funny way to handle iframes. Here we mush them all together into one object that I can\n * actually use.\n * @private\n * @return {Element}\n */\n FirebaseIFrameScriptHolder.createIFrame_ = function () {\n var iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n // This is necessary in order to initialize the document inside the iframe\n if (document.body) {\n document.body.appendChild(iframe);\n try {\n // If document.domain has been modified in IE, this will throw an error, and we need to set the\n // domain of the iframe's document manually. We can do this via a javascript: url as the src attribute\n // Also note that we must do this *after* the iframe has been appended to the page. Otherwise it doesn't work.\n var a = iframe.contentWindow.document;\n if (!a) {\n // Apologies for the log-spam, I need to do something to keep closure from optimizing out the assignment above.\n util_1.log('No IE domain setting required');\n }\n }\n catch (e) {\n var domain = document.domain;\n iframe.src =\n \"javascript:void((function(){document.open();document.domain='\" +\n domain +\n \"';document.close();})())\";\n }\n }\n else {\n // LongPollConnection attempts to delay initialization until the document is ready, so hopefully this\n // never gets hit.\n throw 'Document body has not initialized. Wait to initialize Firebase until after the document is ready.';\n }\n // Get the document of the iframe in a browser-specific way.\n if (iframe.contentDocument) {\n iframe.doc = iframe.contentDocument; // Firefox, Opera, Safari\n }\n else if (iframe.contentWindow) {\n iframe.doc = iframe.contentWindow.document; // Internet Explorer\n }\n else if (iframe.document) {\n iframe.doc = iframe.document; //others?\n }\n return iframe;\n };\n /**\n * Cancel all outstanding queries and remove the frame.\n */\n FirebaseIFrameScriptHolder.prototype.close = function () {\n var _this = this;\n //Mark this iframe as dead, so no new requests are sent.\n this.alive = false;\n if (this.myIFrame) {\n //We have to actually remove all of the html inside this iframe before removing it from the\n //window, or IE will continue loading and executing the script tags we've already added, which\n //can lead to some errors being thrown. Setting innerHTML seems to be the easiest way to do this.\n this.myIFrame.doc.body.innerHTML = '';\n setTimeout(function () {\n if (_this.myIFrame !== null) {\n document.body.removeChild(_this.myIFrame);\n _this.myIFrame = null;\n }\n }, Math.floor(0));\n }\n if (util_3.isNodeSdk() && this.myID) {\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM] = 't';\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n var theURL = this.urlFn(urlParams);\n FirebaseIFrameScriptHolder.nodeRestRequest(theURL);\n }\n // Protect from being called recursively.\n var onDisconnect = this.onDisconnect;\n if (onDisconnect) {\n this.onDisconnect = null;\n onDisconnect();\n }\n };\n /**\n * Actually start the long-polling session by adding the first script tag(s) to the iframe.\n * @param {!string} id - The ID of this connection\n * @param {!string} pw - The password for this connection\n */\n FirebaseIFrameScriptHolder.prototype.startLongPoll = function (id, pw) {\n this.myID = id;\n this.myPW = pw;\n this.alive = true;\n //send the initial request. If there are requests queued, make sure that we transmit as many as we are currently able to.\n while (this.newRequest_()) { }\n };\n /**\n * This is called any time someone might want a script tag to be added. It adds a script tag when there aren't\n * too many outstanding requests and we are still alive.\n *\n * If there are outstanding packet segments to send, it sends one. If there aren't, it sends a long-poll anyways if\n * needed.\n */\n FirebaseIFrameScriptHolder.prototype.newRequest_ = function () {\n // We keep one outstanding request open all the time to receive data, but if we need to send data\n // (pendingSegs.length > 0) then we create a new request to send the data. The server will automatically\n // close the old request.\n if (this.alive &&\n this.sendNewPolls &&\n this.outstandingRequests.count() < (this.pendingSegs.length > 0 ? 2 : 1)) {\n //construct our url\n this.currentSerial++;\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n urlParams[exports.FIREBASE_LONGPOLL_SERIAL_PARAM] = this.currentSerial;\n var theURL = this.urlFn(urlParams);\n //Now add as much data as we can.\n var curDataString = '';\n var i = 0;\n while (this.pendingSegs.length > 0) {\n //first, lets see if the next segment will fit.\n var nextSeg = this.pendingSegs[0];\n if (nextSeg.d.length + SEG_HEADER_SIZE + curDataString.length <=\n MAX_URL_DATA_SIZE) {\n //great, the segment will fit. Lets append it.\n var theSeg = this.pendingSegs.shift();\n curDataString =\n curDataString +\n '&' +\n exports.FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM +\n i +\n '=' +\n theSeg.seg +\n '&' +\n exports.FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET +\n i +\n '=' +\n theSeg.ts +\n '&' +\n exports.FIREBASE_LONGPOLL_DATA_PARAM +\n i +\n '=' +\n theSeg.d;\n i++;\n }\n else {\n break;\n }\n }\n theURL = theURL + curDataString;\n this.addLongPollTag_(theURL, this.currentSerial);\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Queue a packet for transmission to the server.\n * @param segnum - A sequential id for this packet segment used for reassembly\n * @param totalsegs - The total number of segments in this packet\n * @param data - The data for this segment.\n */\n FirebaseIFrameScriptHolder.prototype.enqueueSegment = function (segnum, totalsegs, data) {\n //add this to the queue of segments to send.\n this.pendingSegs.push({ seg: segnum, ts: totalsegs, d: data });\n //send the data immediately if there isn't already data being transmitted, unless\n //startLongPoll hasn't been called yet.\n if (this.alive) {\n this.newRequest_();\n }\n };\n /**\n * Add a script tag for a regular long-poll request.\n * @param {!string} url - The URL of the script tag.\n * @param {!number} serial - The serial number of the request.\n * @private\n */\n FirebaseIFrameScriptHolder.prototype.addLongPollTag_ = function (url, serial) {\n var _this = this;\n //remember that we sent this request.\n this.outstandingRequests.add(serial, 1);\n var doNewRequest = function () {\n _this.outstandingRequests.remove(serial);\n _this.newRequest_();\n };\n // If this request doesn't return on its own accord (by the server sending us some data), we'll\n // create a new one after the KEEPALIVE interval to make sure we always keep a fresh request open.\n var keepaliveTimeout = setTimeout(doNewRequest, Math.floor(KEEPALIVE_REQUEST_INTERVAL));\n var readyStateCB = function () {\n // Request completed. Cancel the keepalive.\n clearTimeout(keepaliveTimeout);\n // Trigger a new request so we can continue receiving data.\n doNewRequest();\n };\n this.addTag(url, readyStateCB);\n };\n /**\n * Add an arbitrary script tag to the iframe.\n * @param {!string} url - The URL for the script tag source.\n * @param {!function()} loadCB - A callback to be triggered once the script has loaded.\n */\n FirebaseIFrameScriptHolder.prototype.addTag = function (url, loadCB) {\n var _this = this;\n if (util_3.isNodeSdk()) {\n this.doNodeLongPoll(url, loadCB);\n }\n else {\n setTimeout(function () {\n try {\n // if we're already closed, don't add this poll\n if (!_this.sendNewPolls)\n return;\n var newScript_1 = _this.myIFrame.doc.createElement('script');\n newScript_1.type = 'text/javascript';\n newScript_1.async = true;\n newScript_1.src = url;\n newScript_1.onload = newScript_1.onreadystatechange = function () {\n var rstate = newScript_1.readyState;\n if (!rstate || rstate === 'loaded' || rstate === 'complete') {\n newScript_1.onload = newScript_1.onreadystatechange = null;\n if (newScript_1.parentNode) {\n newScript_1.parentNode.removeChild(newScript_1);\n }\n loadCB();\n }\n };\n newScript_1.onerror = function () {\n util_1.log('Long-poll script failed to load: ' + url);\n _this.sendNewPolls = false;\n _this.close();\n };\n _this.myIFrame.doc.body.appendChild(newScript_1);\n }\n catch (e) {\n // TODO: we should make this error visible somehow\n }\n }, Math.floor(1));\n }\n };\n return FirebaseIFrameScriptHolder;\n}());\nexports.FirebaseIFrameScriptHolder = FirebaseIFrameScriptHolder;\n\n//# sourceMappingURL=BrowserPollConnection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/BrowserPollConnection.js\n// module id = 52\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = require(\"@firebase/app\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../core/util/util\");\nvar StatsManager_1 = require(\"../core/stats/StatsManager\");\nvar Constants_1 = require(\"./Constants\");\nvar util_3 = require(\"@firebase/util\");\nvar storage_1 = require(\"../core/storage/storage\");\nvar util_4 = require(\"@firebase/util\");\nvar util_5 = require(\"@firebase/util\");\nvar WEBSOCKET_MAX_FRAME_SIZE = 16384;\nvar WEBSOCKET_KEEPALIVE_INTERVAL = 45000;\nvar WebSocketImpl = null;\nif (typeof MozWebSocket !== 'undefined') {\n WebSocketImpl = MozWebSocket;\n}\nelse if (typeof WebSocket !== 'undefined') {\n WebSocketImpl = WebSocket;\n}\nfunction setWebSocketImpl(impl) {\n WebSocketImpl = impl;\n}\nexports.setWebSocketImpl = setWebSocketImpl;\n/**\n * Create a new websocket connection with the given callbacks.\n * @constructor\n * @implements {Transport}\n */\nvar WebSocketConnection = /** @class */ (function () {\n /**\n * @param {string} connId identifier for this transport\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\n */\n function WebSocketConnection(connId, repoInfo, transportSessionId, lastSessionId) {\n this.connId = connId;\n this.keepaliveTimer = null;\n this.frames = null;\n this.totalFrames = 0;\n this.bytesSent = 0;\n this.bytesReceived = 0;\n this.log_ = util_2.logWrapper(this.connId);\n this.stats_ = StatsManager_1.StatsManager.getCollection(repoInfo);\n this.connURL = WebSocketConnection.connectionURL_(repoInfo, transportSessionId, lastSessionId);\n }\n /**\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\n * @return {string} connection url\n * @private\n */\n WebSocketConnection.connectionURL_ = function (repoInfo, transportSessionId, lastSessionId) {\n var urlParams = {};\n urlParams[Constants_1.VERSION_PARAM] = Constants_1.PROTOCOL_VERSION;\n if (!util_5.isNodeSdk() &&\n typeof location !== 'undefined' &&\n location.href &&\n location.href.indexOf(Constants_1.FORGE_DOMAIN) !== -1) {\n urlParams[Constants_1.REFERER_PARAM] = Constants_1.FORGE_REF;\n }\n if (transportSessionId) {\n urlParams[Constants_1.TRANSPORT_SESSION_PARAM] = transportSessionId;\n }\n if (lastSessionId) {\n urlParams[Constants_1.LAST_SESSION_PARAM] = lastSessionId;\n }\n return repoInfo.connectionURL(Constants_1.WEBSOCKET, urlParams);\n };\n /**\n *\n * @param onMessage Callback when messages arrive\n * @param onDisconnect Callback with connection lost.\n */\n WebSocketConnection.prototype.open = function (onMessage, onDisconnect) {\n var _this = this;\n this.onDisconnect = onDisconnect;\n this.onMessage = onMessage;\n this.log_('Websocket connecting to ' + this.connURL);\n this.everConnected_ = false;\n // Assume failure until proven otherwise.\n storage_1.PersistentStorage.set('previous_websocket_failure', true);\n try {\n if (util_5.isNodeSdk()) {\n var device = util_3.CONSTANTS.NODE_ADMIN ? 'AdminNode' : 'Node';\n // UA Format: Firebase////\n var options = {\n headers: {\n 'User-Agent': \"Firebase/\" + Constants_1.PROTOCOL_VERSION + \"/\" + app_1.default.SDK_VERSION + \"/\" + process.platform + \"/\" + device\n }\n };\n // Plumb appropriate http_proxy environment variable into faye-websocket if it exists.\n var env = process['env'];\n var proxy = this.connURL.indexOf('wss://') == 0\n ? env['HTTPS_PROXY'] || env['https_proxy']\n : env['HTTP_PROXY'] || env['http_proxy'];\n if (proxy) {\n options['proxy'] = { origin: proxy };\n }\n this.mySock = new WebSocketImpl(this.connURL, [], options);\n }\n else {\n this.mySock = new WebSocketImpl(this.connURL);\n }\n }\n catch (e) {\n this.log_('Error instantiating WebSocket.');\n var error = e.message || e.data;\n if (error) {\n this.log_(error);\n }\n this.onClosed_();\n return;\n }\n this.mySock.onopen = function () {\n _this.log_('Websocket connected.');\n _this.everConnected_ = true;\n };\n this.mySock.onclose = function () {\n _this.log_('Websocket connection was disconnected.');\n _this.mySock = null;\n _this.onClosed_();\n };\n this.mySock.onmessage = function (m) {\n _this.handleIncomingFrame(m);\n };\n this.mySock.onerror = function (e) {\n _this.log_('WebSocket error. Closing connection.');\n var error = e.message || e.data;\n if (error) {\n _this.log_(error);\n }\n _this.onClosed_();\n };\n };\n /**\n * No-op for websockets, we don't need to do anything once the connection is confirmed as open\n */\n WebSocketConnection.prototype.start = function () { };\n WebSocketConnection.forceDisallow = function () {\n WebSocketConnection.forceDisallow_ = true;\n };\n WebSocketConnection.isAvailable = function () {\n var isOldAndroid = false;\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n var oldAndroidRegex = /Android ([0-9]{0,}\\.[0-9]{0,})/;\n var oldAndroidMatch = navigator.userAgent.match(oldAndroidRegex);\n if (oldAndroidMatch && oldAndroidMatch.length > 1) {\n if (parseFloat(oldAndroidMatch[1]) < 4.4) {\n isOldAndroid = true;\n }\n }\n }\n return (!isOldAndroid &&\n WebSocketImpl !== null &&\n !WebSocketConnection.forceDisallow_);\n };\n /**\n * Returns true if we previously failed to connect with this transport.\n * @return {boolean}\n */\n WebSocketConnection.previouslyFailed = function () {\n // If our persistent storage is actually only in-memory storage,\n // we default to assuming that it previously failed to be safe.\n return (storage_1.PersistentStorage.isInMemoryStorage ||\n storage_1.PersistentStorage.get('previous_websocket_failure') === true);\n };\n WebSocketConnection.prototype.markConnectionHealthy = function () {\n storage_1.PersistentStorage.remove('previous_websocket_failure');\n };\n WebSocketConnection.prototype.appendFrame_ = function (data) {\n this.frames.push(data);\n if (this.frames.length == this.totalFrames) {\n var fullMess = this.frames.join('');\n this.frames = null;\n var jsonMess = util_4.jsonEval(fullMess);\n //handle the message\n this.onMessage(jsonMess);\n }\n };\n /**\n * @param {number} frameCount The number of frames we are expecting from the server\n * @private\n */\n WebSocketConnection.prototype.handleNewFrameCount_ = function (frameCount) {\n this.totalFrames = frameCount;\n this.frames = [];\n };\n /**\n * Attempts to parse a frame count out of some text. If it can't, assumes a value of 1\n * @param {!String} data\n * @return {?String} Any remaining data to be process, or null if there is none\n * @private\n */\n WebSocketConnection.prototype.extractFrameCount_ = function (data) {\n util_1.assert(this.frames === null, 'We already have a frame buffer');\n // TODO: The server is only supposed to send up to 9999 frames (i.e. length <= 4), but that isn't being enforced\n // currently. So allowing larger frame counts (length <= 6). See https://app.asana.com/0/search/8688598998380/8237608042508\n if (data.length <= 6) {\n var frameCount = Number(data);\n if (!isNaN(frameCount)) {\n this.handleNewFrameCount_(frameCount);\n return null;\n }\n }\n this.handleNewFrameCount_(1);\n return data;\n };\n /**\n * Process a websocket frame that has arrived from the server.\n * @param mess The frame data\n */\n WebSocketConnection.prototype.handleIncomingFrame = function (mess) {\n if (this.mySock === null)\n return; // Chrome apparently delivers incoming packets even after we .close() the connection sometimes.\n var data = mess['data'];\n this.bytesReceived += data.length;\n this.stats_.incrementCounter('bytes_received', data.length);\n this.resetKeepAlive();\n if (this.frames !== null) {\n // we're buffering\n this.appendFrame_(data);\n }\n else {\n // try to parse out a frame count, otherwise, assume 1 and process it\n var remainingData = this.extractFrameCount_(data);\n if (remainingData !== null) {\n this.appendFrame_(remainingData);\n }\n }\n };\n /**\n * Send a message to the server\n * @param {Object} data The JSON object to transmit\n */\n WebSocketConnection.prototype.send = function (data) {\n this.resetKeepAlive();\n var dataStr = util_4.stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n //We can only fit a certain amount in each websocket frame, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n var dataSegs = util_2.splitStringBySize(dataStr, WEBSOCKET_MAX_FRAME_SIZE);\n //Send the length header\n if (dataSegs.length > 1) {\n this.sendString_(String(dataSegs.length));\n }\n //Send the actual data in segments.\n for (var i = 0; i < dataSegs.length; i++) {\n this.sendString_(dataSegs[i]);\n }\n };\n WebSocketConnection.prototype.shutdown_ = function () {\n this.isClosed_ = true;\n if (this.keepaliveTimer) {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = null;\n }\n if (this.mySock) {\n this.mySock.close();\n this.mySock = null;\n }\n };\n WebSocketConnection.prototype.onClosed_ = function () {\n if (!this.isClosed_) {\n this.log_('WebSocket is closing itself');\n this.shutdown_();\n // since this is an internal close, trigger the close listener\n if (this.onDisconnect) {\n this.onDisconnect(this.everConnected_);\n this.onDisconnect = null;\n }\n }\n };\n /**\n * External-facing close handler.\n * Close the websocket and kill the connection.\n */\n WebSocketConnection.prototype.close = function () {\n if (!this.isClosed_) {\n this.log_('WebSocket is being closed');\n this.shutdown_();\n }\n };\n /**\n * Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after\n * the last activity.\n */\n WebSocketConnection.prototype.resetKeepAlive = function () {\n var _this = this;\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = setInterval(function () {\n //If there has been no websocket activity for a while, send a no-op\n if (_this.mySock) {\n _this.sendString_('0');\n }\n _this.resetKeepAlive();\n }, Math.floor(WEBSOCKET_KEEPALIVE_INTERVAL));\n };\n /**\n * Send a string over the websocket.\n *\n * @param {string} str String to send.\n * @private\n */\n WebSocketConnection.prototype.sendString_ = function (str) {\n // Firefox seems to sometimes throw exceptions (NS_ERROR_UNEXPECTED) from websocket .send()\n // calls for some unknown reason. We treat these as an error and disconnect.\n // See https://app.asana.com/0/58926111402292/68021340250410\n try {\n this.mySock.send(str);\n }\n catch (e) {\n this.log_('Exception thrown from WebSocket.send():', e.message || e.data, 'Closing connection.');\n setTimeout(this.onClosed_.bind(this), 0);\n }\n };\n /**\n * Number of response before we consider the connection \"healthy.\"\n * @type {number}\n */\n WebSocketConnection.responsesRequiredToBeHealthy = 2;\n /**\n * Time to wait for the connection te become healthy before giving up.\n * @type {number}\n */\n WebSocketConnection.healthyTimeout = 30000;\n return WebSocketConnection;\n}());\nexports.WebSocketConnection = WebSocketConnection;\n\n//# sourceMappingURL=WebSocketConnection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/WebSocketConnection.js\n// module id = 53\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Interface defining the set of actions that can be performed against the Firebase server\n * (basically corresponds to our wire protocol).\n *\n * @interface\n */\nvar ServerActions = /** @class */ (function () {\n function ServerActions() {\n }\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n * @param {string=} hash\n */\n ServerActions.prototype.put = function (pathString, data, onComplete, hash) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, ?string)} onComplete\n * @param {string=} hash\n */\n ServerActions.prototype.merge = function (pathString, data, onComplete, hash) { };\n /**\n * Refreshes the auth token for the current connection.\n * @param {string} token The authentication token\n */\n ServerActions.prototype.refreshAuthToken = function (token) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectPut = function (pathString, data, onComplete) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectMerge = function (pathString, data, onComplete) { };\n /**\n * @param {string} pathString\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectCancel = function (pathString, onComplete) { };\n /**\n * @param {Object.} stats\n */\n ServerActions.prototype.reportStats = function (stats) { };\n return ServerActions;\n}());\nexports.ServerActions = ServerActions;\n\n//# sourceMappingURL=ServerActions.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/ServerActions.js\n// module id = 54\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IndexedFilter_1 = require(\"./IndexedFilter\");\nvar PriorityIndex_1 = require(\"../../snap/indexes/PriorityIndex\");\nvar Node_1 = require(\"../../../core/snap/Node\");\nvar ChildrenNode_1 = require(\"../../snap/ChildrenNode\");\n/**\n * Filters nodes by range and uses an IndexFilter to track any changes after filtering the node\n *\n * @constructor\n * @implements {NodeFilter}\n */\nvar RangedFilter = /** @class */ (function () {\n /**\n * @param {!QueryParams} params\n */\n function RangedFilter(params) {\n this.indexedFilter_ = new IndexedFilter_1.IndexedFilter(params.getIndex());\n this.index_ = params.getIndex();\n this.startPost_ = RangedFilter.getStartPost_(params);\n this.endPost_ = RangedFilter.getEndPost_(params);\n }\n /**\n * @return {!NamedNode}\n */\n RangedFilter.prototype.getStartPost = function () {\n return this.startPost_;\n };\n /**\n * @return {!NamedNode}\n */\n RangedFilter.prototype.getEndPost = function () {\n return this.endPost_;\n };\n /**\n * @param {!NamedNode} node\n * @return {boolean}\n */\n RangedFilter.prototype.matches = function (node) {\n return (this.index_.compare(this.getStartPost(), node) <= 0 &&\n this.index_.compare(node, this.getEndPost()) <= 0);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.matches(new Node_1.NamedNode(key, newChild))) {\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n return this.indexedFilter_.updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n if (newSnap.isLeafNode()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n newSnap = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n var filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var self = this;\n newSnap.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n if (!self.matches(new Node_1.NamedNode(key, childNode))) {\n filtered = filtered.updateImmediateChild(key, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n });\n return this.indexedFilter_.updateFullNode(oldSnap, filtered, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.filtersNodes = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.getIndexedFilter = function () {\n return this.indexedFilter_;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @param {!QueryParams} params\n * @return {!NamedNode}\n * @private\n */\n RangedFilter.getStartPost_ = function (params) {\n if (params.hasStart()) {\n var startName = params.getIndexStartName();\n return params.getIndex().makePost(params.getIndexStartValue(), startName);\n }\n else {\n return params.getIndex().minPost();\n }\n };\n /**\n * @param {!QueryParams} params\n * @return {!NamedNode}\n * @private\n */\n RangedFilter.getEndPost_ = function (params) {\n if (params.hasEnd()) {\n var endName = params.getIndexEndName();\n return params.getIndex().makePost(params.getIndexEndValue(), endName);\n }\n else {\n return params.getIndex().maxPost();\n }\n };\n return RangedFilter;\n}());\nexports.RangedFilter = RangedFilter;\n\n//# sourceMappingURL=RangedFilter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/filter/RangedFilter.js\n// module id = 55\n// module chunks = 0","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nmodule.exports = require('@firebase/database');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./database/index.js\n// module id = 77\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = require(\"@firebase/app\");\nvar Database_1 = require(\"./src/api/Database\");\nvar Query_1 = require(\"./src/api/Query\");\nvar Reference_1 = require(\"./src/api/Reference\");\nvar util_1 = require(\"./src/core/util/util\");\nvar RepoManager_1 = require(\"./src/core/RepoManager\");\nvar INTERNAL = require(\"./src/api/internal\");\nvar TEST_ACCESS = require(\"./src/api/test_access\");\nvar util_2 = require(\"@firebase/util\");\nfunction registerDatabase(instance) {\n // Register the Database Service with the 'firebase' namespace.\n var namespace = instance.INTERNAL.registerService('database', function (app, unused, url) { return RepoManager_1.RepoManager.getInstance().databaseFromApp(app, url); }, \n // firebase.database namespace properties\n {\n Reference: Reference_1.Reference,\n Query: Query_1.Query,\n Database: Database_1.Database,\n enableLogging: util_1.enableLogging,\n INTERNAL: INTERNAL,\n ServerValue: Database_1.Database.ServerValue,\n TEST_ACCESS: TEST_ACCESS\n }, null, true);\n if (util_2.isNodeSdk()) {\n module.exports = namespace;\n }\n}\nexports.registerDatabase = registerDatabase;\nregisterDatabase(app_1.default);\n\n//# sourceMappingURL=index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/index.js\n// module id = 78\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Wraps a DOM Storage object and:\n * - automatically encode objects as JSON strings before storing them to allow us to store arbitrary types.\n * - prefixes names with \"firebase:\" to avoid collisions with app data.\n *\n * We automatically (see storage.js) create two such wrappers, one for sessionStorage,\n * and one for localStorage.\n *\n * @constructor\n */\nvar DOMStorageWrapper = /** @class */ (function () {\n /**\n * @param {Storage} domStorage_ The underlying storage object (e.g. localStorage or sessionStorage)\n */\n function DOMStorageWrapper(domStorage_) {\n this.domStorage_ = domStorage_;\n // Use a prefix to avoid collisions with other stuff saved by the app.\n this.prefix_ = 'firebase:';\n }\n /**\n * @param {string} key The key to save the value under\n * @param {?Object} value The value being stored, or null to remove the key.\n */\n DOMStorageWrapper.prototype.set = function (key, value) {\n if (value == null) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n }\n else {\n this.domStorage_.setItem(this.prefixedName_(key), util_1.stringify(value));\n }\n };\n /**\n * @param {string} key\n * @return {*} The value that was stored under this key, or null\n */\n DOMStorageWrapper.prototype.get = function (key) {\n var storedVal = this.domStorage_.getItem(this.prefixedName_(key));\n if (storedVal == null) {\n return null;\n }\n else {\n return util_1.jsonEval(storedVal);\n }\n };\n /**\n * @param {string} key\n */\n DOMStorageWrapper.prototype.remove = function (key) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n };\n /**\n * @param {string} name\n * @return {string}\n */\n DOMStorageWrapper.prototype.prefixedName_ = function (name) {\n return this.prefix_ + name;\n };\n DOMStorageWrapper.prototype.toString = function () {\n return this.domStorage_.toString();\n };\n return DOMStorageWrapper;\n}());\nexports.DOMStorageWrapper = DOMStorageWrapper;\n\n//# sourceMappingURL=DOMStorageWrapper.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/storage/DOMStorageWrapper.js\n// module id = 79\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * An in-memory storage implementation that matches the API of DOMStorageWrapper\n * (TODO: create interface for both to implement).\n *\n * @constructor\n */\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n this.cache_ = {};\n this.isInMemoryStorage = true;\n }\n MemoryStorage.prototype.set = function (key, value) {\n if (value == null) {\n delete this.cache_[key];\n }\n else {\n this.cache_[key] = value;\n }\n };\n MemoryStorage.prototype.get = function (key) {\n if (util_1.contains(this.cache_, key)) {\n return this.cache_[key];\n }\n return null;\n };\n MemoryStorage.prototype.remove = function (key) {\n delete this.cache_[key];\n };\n return MemoryStorage;\n}());\nexports.MemoryStorage = MemoryStorage;\n\n//# sourceMappingURL=MemoryStorage.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/storage/MemoryStorage.js\n// module id = 80\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar validation_1 = require(\"../core/util/validation\");\nvar util_2 = require(\"../core/util/util\");\nvar util_3 = require(\"@firebase/util\");\n/**\n * @constructor\n */\nvar OnDisconnect = /** @class */ (function () {\n /**\n * @param {!Repo} repo_\n * @param {!Path} path_\n */\n function OnDisconnect(repo_, path_) {\n this.repo_ = repo_;\n this.path_ = path_;\n }\n /**\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.cancel = function (onComplete) {\n util_1.validateArgCount('OnDisconnect.cancel', 0, 1, arguments.length);\n util_1.validateCallback('OnDisconnect.cancel', 1, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectCancel(this.path_, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.remove = function (onComplete) {\n util_1.validateArgCount('OnDisconnect.remove', 0, 1, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.remove', this.path_);\n util_1.validateCallback('OnDisconnect.remove', 1, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectSet(this.path_, null, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*} value\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.set = function (value, onComplete) {\n util_1.validateArgCount('OnDisconnect.set', 1, 2, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.set', this.path_);\n validation_1.validateFirebaseDataArg('OnDisconnect.set', 1, value, this.path_, false);\n util_1.validateCallback('OnDisconnect.set', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectSet(this.path_, value, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*} value\n * @param {number|string|null} priority\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.setWithPriority = function (value, priority, onComplete) {\n util_1.validateArgCount('OnDisconnect.setWithPriority', 2, 3, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.setWithPriority', this.path_);\n validation_1.validateFirebaseDataArg('OnDisconnect.setWithPriority', 1, value, this.path_, false);\n validation_1.validatePriority('OnDisconnect.setWithPriority', 2, priority, false);\n util_1.validateCallback('OnDisconnect.setWithPriority', 3, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectSetWithPriority(this.path_, value, priority, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {!Object} objectToMerge\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.update = function (objectToMerge, onComplete) {\n util_1.validateArgCount('OnDisconnect.update', 1, 2, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.update', this.path_);\n if (Array.isArray(objectToMerge)) {\n var newObjectToMerge = {};\n for (var i = 0; i < objectToMerge.length; ++i) {\n newObjectToMerge['' + i] = objectToMerge[i];\n }\n objectToMerge = newObjectToMerge;\n util_2.warn('Passing an Array to firebase.database.onDisconnect().update() is deprecated. Use set() if you want to overwrite the ' +\n 'existing data, or an Object with integer keys if you really do want to only update some of the children.');\n }\n validation_1.validateFirebaseMergeDataArg('OnDisconnect.update', 1, objectToMerge, this.path_, false);\n util_1.validateCallback('OnDisconnect.update', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectUpdate(this.path_, objectToMerge, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n return OnDisconnect;\n}());\nexports.OnDisconnect = OnDisconnect;\n\n//# sourceMappingURL=onDisconnect.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/onDisconnect.js\n// module id = 81\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar TransactionResult = /** @class */ (function () {\n /**\n * A type for the resolve value of Firebase.transaction.\n * @constructor\n * @dict\n * @param {boolean} committed\n * @param {DataSnapshot} snapshot\n */\n function TransactionResult(committed, snapshot) {\n this.committed = committed;\n this.snapshot = snapshot;\n }\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\n // for end-users\n TransactionResult.prototype.toJSON = function () {\n util_1.validateArgCount('TransactionResult.toJSON', 0, 1, arguments.length);\n return { committed: this.committed, snapshot: this.snapshot.toJSON() };\n };\n return TransactionResult;\n}());\nexports.TransactionResult = TransactionResult;\n\n//# sourceMappingURL=TransactionResult.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/TransactionResult.js\n// module id = 82\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Fancy ID generator that creates 20-character string identifiers with the\n * following properties:\n *\n * 1. They're based on timestamp so that they sort *after* any existing ids.\n * 2. They contain 72-bits of random data after the timestamp so that IDs won't\n * collide with other clients' IDs.\n * 3. They sort *lexicographically* (so the timestamp is converted to characters\n * that will sort properly).\n * 4. They're monotonically increasing. Even if you generate more than one in\n * the same timestamp, the latter ones will sort after the former ones. We do\n * this by using the previous random bits but \"incrementing\" them by 1 (only\n * in the case of a timestamp collision).\n */\nexports.nextPushId = (function () {\n // Modeled after base64 web-safe chars, but ordered by ASCII.\n var PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n // Timestamp of last push, used to prevent local collisions if you push twice\n // in one ms.\n var lastPushTime = 0;\n // We generate 72-bits of randomness which get turned into 12 characters and\n // appended to the timestamp to prevent collisions with other clients. We\n // store the last characters we generated because in the event of a collision,\n // we'll use those same characters except \"incremented\" by one.\n var lastRandChars = [];\n return function (now) {\n var duplicateTime = now === lastPushTime;\n lastPushTime = now;\n var i;\n var timeStampChars = new Array(8);\n for (i = 7; i >= 0; i--) {\n timeStampChars[i] = PUSH_CHARS.charAt(now % 64);\n // NOTE: Can't use << here because javascript will convert to int and lose\n // the upper bits.\n now = Math.floor(now / 64);\n }\n util_1.assert(now === 0, 'Cannot push at time == 0');\n var id = timeStampChars.join('');\n if (!duplicateTime) {\n for (i = 0; i < 12; i++) {\n lastRandChars[i] = Math.floor(Math.random() * 64);\n }\n }\n else {\n // If the timestamp hasn't changed since last push, use the same random\n // number, except incremented by 1.\n for (i = 11; i >= 0 && lastRandChars[i] === 63; i--) {\n lastRandChars[i] = 0;\n }\n lastRandChars[i]++;\n }\n for (i = 0; i < 12; i++) {\n id += PUSH_CHARS.charAt(lastRandChars[i]);\n }\n util_1.assert(id.length === 20, 'nextPushId: Length should be 20.');\n return id;\n };\n})();\n\n//# sourceMappingURL=NextPushId.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/NextPushId.js\n// module id = 83\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DataSnapshot_1 = require(\"../../api/DataSnapshot\");\nvar Event_1 = require(\"./Event\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * Represents registration for 'value' events.\n */\nvar ValueEventRegistration = /** @class */ (function () {\n /**\n * @param {?function(!DataSnapshot)} callback_\n * @param {?function(Error)} cancelCallback_\n * @param {?Object} context_\n */\n function ValueEventRegistration(callback_, cancelCallback_, context_) {\n this.callback_ = callback_;\n this.cancelCallback_ = cancelCallback_;\n this.context_ = context_;\n }\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.respondsTo = function (eventType) {\n return eventType === 'value';\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.createEvent = function (change, query) {\n var index = query.getQueryParams().getIndex();\n return new Event_1.DataEvent('value', this, new DataSnapshot_1.DataSnapshot(change.snapshotNode, query.getRef(), index));\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.getEventRunner = function (eventData) {\n var ctx = this.context_;\n if (eventData.getEventType() === 'cancel') {\n util_2.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\n var cancelCB_1 = this.cancelCallback_;\n return function () {\n // We know that error exists, we checked above that this is a cancel event\n cancelCB_1.call(ctx, eventData.error);\n };\n }\n else {\n var cb_1 = this.callback_;\n return function () {\n cb_1.call(ctx, eventData.snapshot);\n };\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.createCancelEvent = function (error, path) {\n if (this.cancelCallback_) {\n return new Event_1.CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.matches = function (other) {\n if (!(other instanceof ValueEventRegistration)) {\n return false;\n }\n else if (!other.callback_ || !this.callback_) {\n // If no callback specified, we consider it to match any callback.\n return true;\n }\n else {\n return (other.callback_ === this.callback_ && other.context_ === this.context_);\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.hasAnyCallback = function () {\n return this.callback_ !== null;\n };\n return ValueEventRegistration;\n}());\nexports.ValueEventRegistration = ValueEventRegistration;\n/**\n * Represents the registration of 1 or more child_xxx events.\n *\n * Currently, it is always exactly 1 child_xxx event, but the idea is we might let you\n * register a group of callbacks together in the future.\n *\n * @constructor\n * @implements {EventRegistration}\n */\nvar ChildEventRegistration = /** @class */ (function () {\n /**\n * @param {?Object.} callbacks_\n * @param {?function(Error)} cancelCallback_\n * @param {Object=} context_\n */\n function ChildEventRegistration(callbacks_, cancelCallback_, context_) {\n this.callbacks_ = callbacks_;\n this.cancelCallback_ = cancelCallback_;\n this.context_ = context_;\n }\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.respondsTo = function (eventType) {\n var eventToCheck = eventType === 'children_added' ? 'child_added' : eventType;\n eventToCheck =\n eventToCheck === 'children_removed' ? 'child_removed' : eventToCheck;\n return util_1.contains(this.callbacks_, eventToCheck);\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.createCancelEvent = function (error, path) {\n if (this.cancelCallback_) {\n return new Event_1.CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.createEvent = function (change, query) {\n util_2.assert(change.childName != null, 'Child events should have a childName.');\n var ref = query.getRef().child(/** @type {!string} */ (change.childName));\n var index = query.getQueryParams().getIndex();\n return new Event_1.DataEvent(change.type, this, new DataSnapshot_1.DataSnapshot(change.snapshotNode, ref, index), change.prevName);\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.getEventRunner = function (eventData) {\n var ctx = this.context_;\n if (eventData.getEventType() === 'cancel') {\n util_2.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\n var cancelCB_2 = this.cancelCallback_;\n return function () {\n // We know that error exists, we checked above that this is a cancel event\n cancelCB_2.call(ctx, eventData.error);\n };\n }\n else {\n var cb_2 = this.callbacks_[eventData.eventType];\n return function () {\n cb_2.call(ctx, eventData.snapshot, eventData.prevName);\n };\n }\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.matches = function (other) {\n if (other instanceof ChildEventRegistration) {\n if (!this.callbacks_ || !other.callbacks_) {\n return true;\n }\n else if (this.context_ === other.context_) {\n var otherCount = util_1.getCount(other.callbacks_);\n var thisCount = util_1.getCount(this.callbacks_);\n if (otherCount === thisCount) {\n // If count is 1, do an exact match on eventType, if either is defined but null, it's a match.\n // If event types don't match, not a match\n // If count is not 1, exact match across all\n if (otherCount === 1) {\n var otherKey /** @type {!string} */ = util_1.getAnyKey(other.callbacks_);\n var thisKey /** @type {!string} */ = util_1.getAnyKey(this.callbacks_);\n return (thisKey === otherKey &&\n (!other.callbacks_[otherKey] ||\n !this.callbacks_[thisKey] ||\n other.callbacks_[otherKey] === this.callbacks_[thisKey]));\n }\n else {\n // Exact match on each key.\n return util_1.every(this.callbacks_, function (eventType, cb) { return other.callbacks_[eventType] === cb; });\n }\n }\n }\n }\n return false;\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.hasAnyCallback = function () {\n return this.callbacks_ !== null;\n };\n return ChildEventRegistration;\n}());\nexports.ChildEventRegistration = ChildEventRegistration;\n\n//# sourceMappingURL=EventRegistration.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/EventRegistration.js\n// module id = 84\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Encapsulates the data needed to raise an event\n * @implements {Event}\n */\nvar DataEvent = /** @class */ (function () {\n /**\n * @param {!string} eventType One of: value, child_added, child_changed, child_moved, child_removed\n * @param {!EventRegistration} eventRegistration The function to call to with the event data. User provided\n * @param {!DataSnapshot} snapshot The data backing the event\n * @param {?string=} prevName Optional, the name of the previous child for child_* events.\n */\n function DataEvent(eventType, eventRegistration, snapshot, prevName) {\n this.eventType = eventType;\n this.eventRegistration = eventRegistration;\n this.snapshot = snapshot;\n this.prevName = prevName;\n }\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getPath = function () {\n var ref = this.snapshot.getRef();\n if (this.eventType === 'value') {\n return ref.path;\n }\n else {\n return ref.getParent().path;\n }\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getEventType = function () {\n return this.eventType;\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getEventRunner = function () {\n return this.eventRegistration.getEventRunner(this);\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.toString = function () {\n return (this.getPath().toString() +\n ':' +\n this.eventType +\n ':' +\n util_1.stringify(this.snapshot.exportVal()));\n };\n return DataEvent;\n}());\nexports.DataEvent = DataEvent;\nvar CancelEvent = /** @class */ (function () {\n /**\n * @param {EventRegistration} eventRegistration\n * @param {Error} error\n * @param {!Path} path\n */\n function CancelEvent(eventRegistration, error, path) {\n this.eventRegistration = eventRegistration;\n this.error = error;\n this.path = path;\n }\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getPath = function () {\n return this.path;\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getEventType = function () {\n return 'cancel';\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getEventRunner = function () {\n return this.eventRegistration.getEventRunner(this);\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.toString = function () {\n return this.path.toString() + ':cancel';\n };\n return CancelEvent;\n}());\nexports.CancelEvent = CancelEvent;\n\n//# sourceMappingURL=Event.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/Event.js\n// module id = 85\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"./util/util\");\nvar AckUserWrite_1 = require(\"./operation/AckUserWrite\");\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\nvar util_3 = require(\"@firebase/util\");\nvar ImmutableTree_1 = require(\"./util/ImmutableTree\");\nvar ListenComplete_1 = require(\"./operation/ListenComplete\");\nvar Merge_1 = require(\"./operation/Merge\");\nvar Operation_1 = require(\"./operation/Operation\");\nvar Overwrite_1 = require(\"./operation/Overwrite\");\nvar Path_1 = require(\"./util/Path\");\nvar SyncPoint_1 = require(\"./SyncPoint\");\nvar WriteTree_1 = require(\"./WriteTree\");\n/**\n * SyncTree is the central class for managing event callback registration, data caching, views\n * (query processing), and event generation. There are typically two SyncTree instances for\n * each Repo, one for the normal Firebase data, and one for the .info data.\n *\n * It has a number of responsibilities, including:\n * - Tracking all user event callbacks (registered via addEventRegistration() and removeEventRegistration()).\n * - Applying and caching data changes for user set(), transaction(), and update() calls\n * (applyUserOverwrite(), applyUserMerge()).\n * - Applying and caching data changes for server data changes (applyServerOverwrite(),\n * applyServerMerge()).\n * - Generating user-facing events for server and user changes (all of the apply* methods\n * return the set of events that need to be raised as a result).\n * - Maintaining the appropriate set of server listens to ensure we are always subscribed\n * to the correct set of paths and queries to satisfy the current set of user event\n * callbacks (listens are started/stopped using the provided listenProvider).\n *\n * NOTE: Although SyncTree tracks event callbacks and calculates events to raise, the actual\n * events are returned to the caller rather than raised synchronously.\n *\n * @constructor\n */\nvar SyncTree = /** @class */ (function () {\n /**\n * @param {!ListenProvider} listenProvider_ Used by SyncTree to start / stop listening\n * to server data.\n */\n function SyncTree(listenProvider_) {\n this.listenProvider_ = listenProvider_;\n /**\n * Tree of SyncPoints. There's a SyncPoint at any location that has 1 or more views.\n * @type {!ImmutableTree.}\n * @private\n */\n this.syncPointTree_ = ImmutableTree_1.ImmutableTree.Empty;\n /**\n * A tree of all pending user writes (user-initiated set()'s, transaction()'s, update()'s, etc.).\n * @type {!WriteTree}\n * @private\n */\n this.pendingWriteTree_ = new WriteTree_1.WriteTree();\n this.tagToQueryMap_ = {};\n this.queryToTagMap_ = {};\n }\n /**\n * Apply the data changes for a user-generated set() or transaction() call.\n *\n * @param {!Path} path\n * @param {!Node} newData\n * @param {number} writeId\n * @param {boolean=} visible\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyUserOverwrite = function (path, newData, writeId, visible) {\n // Record pending write.\n this.pendingWriteTree_.addOverwrite(path, newData, writeId, visible);\n if (!visible) {\n return [];\n }\n else {\n return this.applyOperationToSyncPoints_(new Overwrite_1.Overwrite(Operation_1.OperationSource.User, path, newData));\n }\n };\n /**\n * Apply the data from a user-generated update() call\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} writeId\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyUserMerge = function (path, changedChildren, writeId) {\n // Record pending merge.\n this.pendingWriteTree_.addMerge(path, changedChildren, writeId);\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n return this.applyOperationToSyncPoints_(new Merge_1.Merge(Operation_1.OperationSource.User, path, changeTree));\n };\n /**\n * Acknowledge a pending user write that was previously registered with applyUserOverwrite() or applyUserMerge().\n *\n * @param {!number} writeId\n * @param {boolean=} revert True if the given write failed and needs to be reverted\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.ackUserWrite = function (writeId, revert) {\n if (revert === void 0) { revert = false; }\n var write = this.pendingWriteTree_.getWrite(writeId);\n var needToReevaluate = this.pendingWriteTree_.removeWrite(writeId);\n if (!needToReevaluate) {\n return [];\n }\n else {\n var affectedTree_1 = ImmutableTree_1.ImmutableTree.Empty;\n if (write.snap != null) {\n // overwrite\n affectedTree_1 = affectedTree_1.set(Path_1.Path.Empty, true);\n }\n else {\n util_3.forEach(write.children, function (pathString, node) {\n affectedTree_1 = affectedTree_1.set(new Path_1.Path(pathString), node);\n });\n }\n return this.applyOperationToSyncPoints_(new AckUserWrite_1.AckUserWrite(write.path, affectedTree_1, revert));\n }\n };\n /**\n * Apply new server data for the specified path..\n *\n * @param {!Path} path\n * @param {!Node} newData\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyServerOverwrite = function (path, newData) {\n return this.applyOperationToSyncPoints_(new Overwrite_1.Overwrite(Operation_1.OperationSource.Server, path, newData));\n };\n /**\n * Apply new server data to be merged in at the specified path.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyServerMerge = function (path, changedChildren) {\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n return this.applyOperationToSyncPoints_(new Merge_1.Merge(Operation_1.OperationSource.Server, path, changeTree));\n };\n /**\n * Apply a listen complete for a query\n *\n * @param {!Path} path\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyListenComplete = function (path) {\n return this.applyOperationToSyncPoints_(new ListenComplete_1.ListenComplete(Operation_1.OperationSource.Server, path));\n };\n /**\n * Apply new server data for the specified tagged query.\n *\n * @param {!Path} path\n * @param {!Node} snap\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedQueryOverwrite = function (path, snap, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey != null) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var op = new Overwrite_1.Overwrite(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath, snap);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // Query must have been removed already\n return [];\n }\n };\n /**\n * Apply server data to be merged in for the specified tagged query.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedQueryMerge = function (path, changedChildren, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n var op = new Merge_1.Merge(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath, changeTree);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n };\n /**\n * Apply a listen complete for a tagged query\n *\n * @param {!Path} path\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedListenComplete = function (path, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var op = new ListenComplete_1.ListenComplete(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n };\n /**\n * Add an event callback for the specified query.\n *\n * @param {!Query} query\n * @param {!EventRegistration} eventRegistration\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.addEventRegistration = function (query, eventRegistration) {\n var path = query.path;\n var serverCache = null;\n var foundAncestorDefaultView = false;\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\n this.syncPointTree_.foreachOnPath(path, function (pathToSyncPoint, sp) {\n var relativePath = Path_1.Path.relativePath(pathToSyncPoint, path);\n serverCache = serverCache || sp.getCompleteServerCache(relativePath);\n foundAncestorDefaultView =\n foundAncestorDefaultView || sp.hasCompleteView();\n });\n var syncPoint = this.syncPointTree_.get(path);\n if (!syncPoint) {\n syncPoint = new SyncPoint_1.SyncPoint();\n this.syncPointTree_ = this.syncPointTree_.set(path, syncPoint);\n }\n else {\n foundAncestorDefaultView =\n foundAncestorDefaultView || syncPoint.hasCompleteView();\n serverCache = serverCache || syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var serverCacheComplete;\n if (serverCache != null) {\n serverCacheComplete = true;\n }\n else {\n serverCacheComplete = false;\n serverCache = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var subtree = this.syncPointTree_.subtree(path);\n subtree.foreachChild(function (childName, childSyncPoint) {\n var completeCache = childSyncPoint.getCompleteServerCache(Path_1.Path.Empty);\n if (completeCache) {\n serverCache = serverCache.updateImmediateChild(childName, completeCache);\n }\n });\n }\n var viewAlreadyExists = syncPoint.viewExistsForQuery(query);\n if (!viewAlreadyExists && !query.getQueryParams().loadsAllData()) {\n // We need to track a tag for this query\n var queryKey = SyncTree.makeQueryKey_(query);\n util_1.assert(!(queryKey in this.queryToTagMap_), 'View does not exist, but we have a tag');\n var tag = SyncTree.getNextQueryTag_();\n this.queryToTagMap_[queryKey] = tag;\n // Coerce to string to avoid sparse arrays.\n this.tagToQueryMap_['_' + tag] = queryKey;\n }\n var writesCache = this.pendingWriteTree_.childWrites(path);\n var events = syncPoint.addEventRegistration(query, eventRegistration, writesCache, serverCache, serverCacheComplete);\n if (!viewAlreadyExists && !foundAncestorDefaultView) {\n var view /** @type !View */ = syncPoint.viewForQuery(query);\n events = events.concat(this.setupListener_(query, view));\n }\n return events;\n };\n /**\n * Remove event callback(s).\n *\n * If query is the default query, we'll check all queries for the specified eventRegistration.\n * If eventRegistration is null, we'll remove all callbacks for the specified query/queries.\n *\n * @param {!Query} query\n * @param {?EventRegistration} eventRegistration If null, all callbacks are removed.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {!Array.} Cancel events, if cancelError was provided.\n */\n SyncTree.prototype.removeEventRegistration = function (query, eventRegistration, cancelError) {\n var _this = this;\n // Find the syncPoint first. Then deal with whether or not it has matching listeners\n var path = query.path;\n var maybeSyncPoint = this.syncPointTree_.get(path);\n var cancelEvents = [];\n // A removal on a default query affects all queries at that location. A removal on an indexed query, even one without\n // other query constraints, does *not* affect all queries at that location. So this check must be for 'default', and\n // not loadsAllData().\n if (maybeSyncPoint &&\n (query.queryIdentifier() === 'default' ||\n maybeSyncPoint.viewExistsForQuery(query))) {\n /**\n * @type {{removed: !Array., events: !Array.}}\n */\n var removedAndEvents = maybeSyncPoint.removeEventRegistration(query, eventRegistration, cancelError);\n if (maybeSyncPoint.isEmpty()) {\n this.syncPointTree_ = this.syncPointTree_.remove(path);\n }\n var removed = removedAndEvents.removed;\n cancelEvents = removedAndEvents.events;\n // We may have just removed one of many listeners and can short-circuit this whole process\n // We may also not have removed a default listener, in which case all of the descendant listeners should already be\n // properly set up.\n //\n // Since indexed queries can shadow if they don't have other query constraints, check for loadsAllData(), instead of\n // queryId === 'default'\n var removingDefault = -1 !==\n removed.findIndex(function (query) {\n return query.getQueryParams().loadsAllData();\n });\n var covered = this.syncPointTree_.findOnPath(path, function (relativePath, parentSyncPoint) {\n return parentSyncPoint.hasCompleteView();\n });\n if (removingDefault && !covered) {\n var subtree = this.syncPointTree_.subtree(path);\n // There are potentially child listeners. Determine what if any listens we need to send before executing the\n // removal\n if (!subtree.isEmpty()) {\n // We need to fold over our subtree and collect the listeners to send\n var newViews = this.collectDistinctViewsForSubTree_(subtree);\n // Ok, we've collected all the listens we need. Set them up.\n for (var i = 0; i < newViews.length; ++i) {\n var view = newViews[i], newQuery = view.getQuery();\n var listener = this.createListenerForView_(view);\n this.listenProvider_.startListening(SyncTree.queryForListening_(newQuery), this.tagForQuery_(newQuery), listener.hashFn, listener.onComplete);\n }\n }\n else {\n // There's nothing below us, so nothing we need to start listening on\n }\n }\n // If we removed anything and we're not covered by a higher up listen, we need to stop listening on this query\n // The above block has us covered in terms of making sure we're set up on listens lower in the tree.\n // Also, note that if we have a cancelError, it's already been removed at the provider level.\n if (!covered && removed.length > 0 && !cancelError) {\n // If we removed a default, then we weren't listening on any of the other queries here. Just cancel the one\n // default. Otherwise, we need to iterate through and cancel each individual query\n if (removingDefault) {\n // We don't tag default listeners\n var defaultTag = null;\n this.listenProvider_.stopListening(SyncTree.queryForListening_(query), defaultTag);\n }\n else {\n removed.forEach(function (queryToRemove) {\n var tagToRemove = _this.queryToTagMap_[SyncTree.makeQueryKey_(queryToRemove)];\n _this.listenProvider_.stopListening(SyncTree.queryForListening_(queryToRemove), tagToRemove);\n });\n }\n }\n // Now, clear all of the tags we're tracking for the removed listens\n this.removeTags_(removed);\n }\n else {\n // No-op, this listener must've been already removed\n }\n return cancelEvents;\n };\n /**\n * Returns a complete cache, if we have one, of the data at a particular path. The location must have a listener above\n * it, but as this is only used by transaction code, that should always be the case anyways.\n *\n * Note: this method will *include* hidden writes from transaction with applyLocally set to false.\n * @param {!Path} path The path to the data we want\n * @param {Array.=} writeIdsToExclude A specific set to be excluded\n * @return {?Node}\n */\n SyncTree.prototype.calcCompleteEventCache = function (path, writeIdsToExclude) {\n var includeHiddenSets = true;\n var writeTree = this.pendingWriteTree_;\n var serverCache = this.syncPointTree_.findOnPath(path, function (pathSoFar, syncPoint) {\n var relativePath = Path_1.Path.relativePath(pathSoFar, path);\n var serverCache = syncPoint.getCompleteServerCache(relativePath);\n if (serverCache) {\n return serverCache;\n }\n });\n return writeTree.calcCompleteEventCache(path, serverCache, writeIdsToExclude, includeHiddenSets);\n };\n /**\n * This collapses multiple unfiltered views into a single view, since we only need a single\n * listener for them.\n *\n * @param {!ImmutableTree.} subtree\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.collectDistinctViewsForSubTree_ = function (subtree) {\n return subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\n if (maybeChildSyncPoint && maybeChildSyncPoint.hasCompleteView()) {\n var completeView = maybeChildSyncPoint.getCompleteView();\n return [completeView];\n }\n else {\n // No complete view here, flatten any deeper listens into an array\n var views_1 = [];\n if (maybeChildSyncPoint) {\n views_1 = maybeChildSyncPoint.getQueryViews();\n }\n util_3.forEach(childMap, function (key, childViews) {\n views_1 = views_1.concat(childViews);\n });\n return views_1;\n }\n });\n };\n /**\n * @param {!Array.} queries\n * @private\n */\n SyncTree.prototype.removeTags_ = function (queries) {\n for (var j = 0; j < queries.length; ++j) {\n var removedQuery = queries[j];\n if (!removedQuery.getQueryParams().loadsAllData()) {\n // We should have a tag for this\n var removedQueryKey = SyncTree.makeQueryKey_(removedQuery);\n var removedQueryTag = this.queryToTagMap_[removedQueryKey];\n delete this.queryToTagMap_[removedQueryKey];\n delete this.tagToQueryMap_['_' + removedQueryTag];\n }\n }\n };\n /**\n * Normalizes a query to a query we send the server for listening\n * @param {!Query} query\n * @return {!Query} The normalized query\n * @private\n */\n SyncTree.queryForListening_ = function (query) {\n if (query.getQueryParams().loadsAllData() &&\n !query.getQueryParams().isDefault()) {\n // We treat queries that load all data as default queries\n // Cast is necessary because ref() technically returns Firebase which is actually fb.api.Firebase which inherits\n // from Query\n return /** @type {!Query} */ query.getRef();\n }\n else {\n return query;\n }\n };\n /**\n * For a given new listen, manage the de-duplication of outstanding subscriptions.\n *\n * @param {!Query} query\n * @param {!View} view\n * @return {!Array.} This method can return events to support synchronous data sources\n * @private\n */\n SyncTree.prototype.setupListener_ = function (query, view) {\n var path = query.path;\n var tag = this.tagForQuery_(query);\n var listener = this.createListenerForView_(view);\n var events = this.listenProvider_.startListening(SyncTree.queryForListening_(query), tag, listener.hashFn, listener.onComplete);\n var subtree = this.syncPointTree_.subtree(path);\n // The root of this subtree has our query. We're here because we definitely need to send a listen for that, but we\n // may need to shadow other listens as well.\n if (tag) {\n util_1.assert(!subtree.value.hasCompleteView(), \"If we're adding a query, it shouldn't be shadowed\");\n }\n else {\n // Shadow everything at or below this location, this is a default listener.\n var queriesToStop = subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\n if (!relativePath.isEmpty() &&\n maybeChildSyncPoint &&\n maybeChildSyncPoint.hasCompleteView()) {\n return [maybeChildSyncPoint.getCompleteView().getQuery()];\n }\n else {\n // No default listener here, flatten any deeper queries into an array\n var queries_1 = [];\n if (maybeChildSyncPoint) {\n queries_1 = queries_1.concat(maybeChildSyncPoint.getQueryViews().map(function (view) { return view.getQuery(); }));\n }\n util_3.forEach(childMap, function (key, childQueries) {\n queries_1 = queries_1.concat(childQueries);\n });\n return queries_1;\n }\n });\n for (var i = 0; i < queriesToStop.length; ++i) {\n var queryToStop = queriesToStop[i];\n this.listenProvider_.stopListening(SyncTree.queryForListening_(queryToStop), this.tagForQuery_(queryToStop));\n }\n }\n return events;\n };\n /**\n *\n * @param {!View} view\n * @return {{hashFn: function(), onComplete: function(!string, *)}}\n * @private\n */\n SyncTree.prototype.createListenerForView_ = function (view) {\n var _this = this;\n var query = view.getQuery();\n var tag = this.tagForQuery_(query);\n return {\n hashFn: function () {\n var cache = view.getServerCache() || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return cache.hash();\n },\n onComplete: function (status) {\n if (status === 'ok') {\n if (tag) {\n return _this.applyTaggedListenComplete(query.path, tag);\n }\n else {\n return _this.applyListenComplete(query.path);\n }\n }\n else {\n // If a listen failed, kill all of the listeners here, not just the one that triggered the error.\n // Note that this may need to be scoped to just this listener if we change permissions on filtered children\n var error = util_2.errorForServerCode(status, query);\n return _this.removeEventRegistration(query, \n /*eventRegistration*/ null, error);\n }\n }\n };\n };\n /**\n * Given a query, computes a \"queryKey\" suitable for use in our queryToTagMap_.\n * @private\n * @param {!Query} query\n * @return {string}\n */\n SyncTree.makeQueryKey_ = function (query) {\n return query.path.toString() + '$' + query.queryIdentifier();\n };\n /**\n * Given a queryKey (created by makeQueryKey), parse it back into a path and queryId.\n * @private\n * @param {!string} queryKey\n * @return {{queryId: !string, path: !Path}}\n */\n SyncTree.parseQueryKey_ = function (queryKey) {\n var splitIndex = queryKey.indexOf('$');\n util_1.assert(splitIndex !== -1 && splitIndex < queryKey.length - 1, 'Bad queryKey.');\n return {\n queryId: queryKey.substr(splitIndex + 1),\n path: new Path_1.Path(queryKey.substr(0, splitIndex))\n };\n };\n /**\n * Return the query associated with the given tag, if we have one\n * @param {!number} tag\n * @return {?string}\n * @private\n */\n SyncTree.prototype.queryKeyForTag_ = function (tag) {\n return this.tagToQueryMap_['_' + tag];\n };\n /**\n * Return the tag associated with the given query.\n * @param {!Query} query\n * @return {?number}\n * @private\n */\n SyncTree.prototype.tagForQuery_ = function (query) {\n var queryKey = SyncTree.makeQueryKey_(query);\n return util_3.safeGet(this.queryToTagMap_, queryKey);\n };\n /**\n * Static accessor for query tags.\n * @return {number}\n * @private\n */\n SyncTree.getNextQueryTag_ = function () {\n return SyncTree.nextQueryTag_++;\n };\n /**\n * A helper method to apply tagged operations\n *\n * @param {!Path} queryPath\n * @param {!Operation} operation\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.applyTaggedOperation_ = function (queryPath, operation) {\n var syncPoint = this.syncPointTree_.get(queryPath);\n util_1.assert(syncPoint, \"Missing sync point for query tag that we're tracking\");\n var writesCache = this.pendingWriteTree_.childWrites(queryPath);\n return syncPoint.applyOperation(operation, writesCache, \n /*serverCache=*/ null);\n };\n /**\n * A helper method that visits all descendant and ancestor SyncPoints, applying the operation.\n *\n * NOTES:\n * - Descendant SyncPoints will be visited first (since we raise events depth-first).\n \n * - We call applyOperation() on each SyncPoint passing three things:\n * 1. A version of the Operation that has been made relative to the SyncPoint location.\n * 2. A WriteTreeRef of any writes we have cached at the SyncPoint location.\n * 3. A snapshot Node with cached server data, if we have it.\n \n * - We concatenate all of the events returned by each SyncPoint and return the result.\n *\n * @param {!Operation} operation\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.applyOperationToSyncPoints_ = function (operation) {\n return this.applyOperationHelper_(operation, this.syncPointTree_, \n /*serverCache=*/ null, this.pendingWriteTree_.childWrites(Path_1.Path.Empty));\n };\n /**\n * Recursive helper for applyOperationToSyncPoints_\n *\n * @private\n * @param {!Operation} operation\n * @param {ImmutableTree.} syncPointTree\n * @param {?Node} serverCache\n * @param {!WriteTreeRef} writesCache\n * @return {!Array.}\n */\n SyncTree.prototype.applyOperationHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\n if (operation.path.isEmpty()) {\n return this.applyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache);\n }\n else {\n var syncPoint = syncPointTree.get(Path_1.Path.Empty);\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var events = [];\n var childName = operation.path.getFront();\n var childOperation = operation.operationForChild(childName);\n var childTree = syncPointTree.children.get(childName);\n if (childTree && childOperation) {\n var childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n var childWritesCache = writesCache.child(childName);\n events = events.concat(this.applyOperationHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n if (syncPoint) {\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\n }\n return events;\n }\n };\n /**\n * Recursive helper for applyOperationToSyncPoints_\n *\n * @private\n * @param {!Operation} operation\n * @param {ImmutableTree.} syncPointTree\n * @param {?Node} serverCache\n * @param {!WriteTreeRef} writesCache\n * @return {!Array.}\n */\n SyncTree.prototype.applyOperationDescendantsHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\n var _this = this;\n var syncPoint = syncPointTree.get(Path_1.Path.Empty);\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var events = [];\n syncPointTree.children.inorderTraversal(function (childName, childTree) {\n var childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n var childWritesCache = writesCache.child(childName);\n var childOperation = operation.operationForChild(childName);\n if (childOperation) {\n events = events.concat(_this.applyOperationDescendantsHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n });\n if (syncPoint) {\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\n }\n return events;\n };\n /**\n * Static tracker for next query tag.\n * @type {number}\n * @private\n */\n SyncTree.nextQueryTag_ = 1;\n return SyncTree;\n}());\nexports.SyncTree = SyncTree;\n\n//# sourceMappingURL=SyncTree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/SyncTree.js\n// module id = 86\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Path_1 = require(\"../util/Path\");\nvar Operation_1 = require(\"./Operation\");\nvar AckUserWrite = /** @class */ (function () {\n /**\n *\n * @param {!Path} path\n * @param {!ImmutableTree} affectedTree A tree containing true for each affected path. Affected paths can't overlap.\n * @param {!boolean} revert\n */\n function AckUserWrite(\n /**@inheritDoc */ path, \n /**@inheritDoc */ affectedTree, \n /**@inheritDoc */ revert) {\n this.path = path;\n this.affectedTree = affectedTree;\n this.revert = revert;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.ACK_USER_WRITE;\n /** @inheritDoc */\n this.source = Operation_1.OperationSource.User;\n }\n /**\n * @inheritDoc\n */\n AckUserWrite.prototype.operationForChild = function (childName) {\n if (!this.path.isEmpty()) {\n util_1.assert(this.path.getFront() === childName, 'operationForChild called for unrelated child.');\n return new AckUserWrite(this.path.popFront(), this.affectedTree, this.revert);\n }\n else if (this.affectedTree.value != null) {\n util_1.assert(this.affectedTree.children.isEmpty(), 'affectedTree should not have overlapping affected paths.');\n // All child locations are affected as well; just return same operation.\n return this;\n }\n else {\n var childTree = this.affectedTree.subtree(new Path_1.Path(childName));\n return new AckUserWrite(Path_1.Path.Empty, childTree, this.revert);\n }\n };\n return AckUserWrite;\n}());\nexports.AckUserWrite = AckUserWrite;\n\n//# sourceMappingURL=AckUserWrite.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/AckUserWrite.js\n// module id = 87\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = require(\"../util/Path\");\nvar Operation_1 = require(\"./Operation\");\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @constructor\n * @implements {Operation}\n */\nvar ListenComplete = /** @class */ (function () {\n function ListenComplete(source, path) {\n this.source = source;\n this.path = path;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.LISTEN_COMPLETE;\n }\n ListenComplete.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n return new ListenComplete(this.source, Path_1.Path.Empty);\n }\n else {\n return new ListenComplete(this.source, this.path.popFront());\n }\n };\n return ListenComplete;\n}());\nexports.ListenComplete = ListenComplete;\n\n//# sourceMappingURL=ListenComplete.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/ListenComplete.js\n// module id = 88\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = require(\"./Operation\");\nvar Overwrite_1 = require(\"./Overwrite\");\nvar Path_1 = require(\"../util/Path\");\nvar util_1 = require(\"@firebase/util\");\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @param {!ImmutableTree.} children\n * @constructor\n * @implements {Operation}\n */\nvar Merge = /** @class */ (function () {\n function Merge(\n /**@inheritDoc */ source, \n /**@inheritDoc */ path, \n /**@inheritDoc */ children) {\n this.source = source;\n this.path = path;\n this.children = children;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.MERGE;\n }\n /**\n * @inheritDoc\n */\n Merge.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n var childTree = this.children.subtree(new Path_1.Path(childName));\n if (childTree.isEmpty()) {\n // This child is unaffected\n return null;\n }\n else if (childTree.value) {\n // We have a snapshot for the child in question. This becomes an overwrite of the child.\n return new Overwrite_1.Overwrite(this.source, Path_1.Path.Empty, childTree.value);\n }\n else {\n // This is a merge at a deeper level\n return new Merge(this.source, Path_1.Path.Empty, childTree);\n }\n }\n else {\n util_1.assert(this.path.getFront() === childName, \"Can't get a merge for a child not on the path of the operation\");\n return new Merge(this.source, this.path.popFront(), this.children);\n }\n };\n /**\n * @inheritDoc\n */\n Merge.prototype.toString = function () {\n return ('Operation(' +\n this.path +\n ': ' +\n this.source.toString() +\n ' merge: ' +\n this.children.toString() +\n ')');\n };\n return Merge;\n}());\nexports.Merge = Merge;\n\n//# sourceMappingURL=Merge.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/Merge.js\n// module id = 89\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IndexedFilter_1 = require(\"./filter/IndexedFilter\");\nvar ViewProcessor_1 = require(\"./ViewProcessor\");\nvar ChildrenNode_1 = require(\"../snap/ChildrenNode\");\nvar CacheNode_1 = require(\"./CacheNode\");\nvar ViewCache_1 = require(\"./ViewCache\");\nvar EventGenerator_1 = require(\"./EventGenerator\");\nvar util_1 = require(\"@firebase/util\");\nvar Operation_1 = require(\"../operation/Operation\");\nvar Change_1 = require(\"./Change\");\nvar PriorityIndex_1 = require(\"../snap/indexes/PriorityIndex\");\n/**\n * A view represents a specific location and query that has 1 or more event registrations.\n *\n * It does several things:\n * - Maintains the list of event registrations for this location/query.\n * - Maintains a cache of the data visible for this location/query.\n * - Applies new operations (via applyOperation), updates the cache, and based on the event\n * registrations returns the set of events to be raised.\n * @constructor\n */\nvar View = /** @class */ (function () {\n /**\n *\n * @param {!Query} query_\n * @param {!ViewCache} initialViewCache\n */\n function View(query_, initialViewCache) {\n this.query_ = query_;\n this.eventRegistrations_ = [];\n var params = this.query_.getQueryParams();\n var indexFilter = new IndexedFilter_1.IndexedFilter(params.getIndex());\n var filter = params.getNodeFilter();\n /**\n * @type {ViewProcessor}\n * @private\n */\n this.processor_ = new ViewProcessor_1.ViewProcessor(filter);\n var initialServerCache = initialViewCache.getServerCache();\n var initialEventCache = initialViewCache.getEventCache();\n // Don't filter server node with other filter than index, wait for tagged listen\n var serverSnap = indexFilter.updateFullNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, initialServerCache.getNode(), null);\n var eventSnap = filter.updateFullNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, initialEventCache.getNode(), null);\n var newServerCache = new CacheNode_1.CacheNode(serverSnap, initialServerCache.isFullyInitialized(), indexFilter.filtersNodes());\n var newEventCache = new CacheNode_1.CacheNode(eventSnap, initialEventCache.isFullyInitialized(), filter.filtersNodes());\n /**\n * @type {!ViewCache}\n * @private\n */\n this.viewCache_ = new ViewCache_1.ViewCache(newEventCache, newServerCache);\n /**\n * @type {!EventGenerator}\n * @private\n */\n this.eventGenerator_ = new EventGenerator_1.EventGenerator(this.query_);\n }\n /**\n * @return {!Query}\n */\n View.prototype.getQuery = function () {\n return this.query_;\n };\n /**\n * @return {?Node}\n */\n View.prototype.getServerCache = function () {\n return this.viewCache_.getServerCache().getNode();\n };\n /**\n * @param {!Path} path\n * @return {?Node}\n */\n View.prototype.getCompleteServerCache = function (path) {\n var cache = this.viewCache_.getCompleteServerSnap();\n if (cache) {\n // If this isn't a \"loadsAllData\" view, then cache isn't actually a complete cache and\n // we need to see if it contains the child we're interested in.\n if (this.query_.getQueryParams().loadsAllData() ||\n (!path.isEmpty() && !cache.getImmediateChild(path.getFront()).isEmpty())) {\n return cache.getChild(path);\n }\n }\n return null;\n };\n /**\n * @return {boolean}\n */\n View.prototype.isEmpty = function () {\n return this.eventRegistrations_.length === 0;\n };\n /**\n * @param {!EventRegistration} eventRegistration\n */\n View.prototype.addEventRegistration = function (eventRegistration) {\n this.eventRegistrations_.push(eventRegistration);\n };\n /**\n * @param {?EventRegistration} eventRegistration If null, remove all callbacks.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {!Array.} Cancel events, if cancelError was provided.\n */\n View.prototype.removeEventRegistration = function (eventRegistration, cancelError) {\n var cancelEvents = [];\n if (cancelError) {\n util_1.assert(eventRegistration == null, 'A cancel should cancel all event registrations.');\n var path_1 = this.query_.path;\n this.eventRegistrations_.forEach(function (registration) {\n cancelError /** @type {!Error} */ = cancelError;\n var maybeEvent = registration.createCancelEvent(cancelError, path_1);\n if (maybeEvent) {\n cancelEvents.push(maybeEvent);\n }\n });\n }\n if (eventRegistration) {\n var remaining = [];\n for (var i = 0; i < this.eventRegistrations_.length; ++i) {\n var existing = this.eventRegistrations_[i];\n if (!existing.matches(eventRegistration)) {\n remaining.push(existing);\n }\n else if (eventRegistration.hasAnyCallback()) {\n // We're removing just this one\n remaining = remaining.concat(this.eventRegistrations_.slice(i + 1));\n break;\n }\n }\n this.eventRegistrations_ = remaining;\n }\n else {\n this.eventRegistrations_ = [];\n }\n return cancelEvents;\n };\n /**\n * Applies the given Operation, updates our cache, and returns the appropriate events.\n *\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeServerCache\n * @return {!Array.}\n */\n View.prototype.applyOperation = function (operation, writesCache, completeServerCache) {\n if (operation.type === Operation_1.OperationType.MERGE &&\n operation.source.queryId !== null) {\n util_1.assert(this.viewCache_.getCompleteServerSnap(), 'We should always have a full cache before handling merges');\n util_1.assert(this.viewCache_.getCompleteEventSnap(), 'Missing event cache, even though we have a server cache');\n }\n var oldViewCache = this.viewCache_;\n var result = this.processor_.applyOperation(oldViewCache, operation, writesCache, completeServerCache);\n this.processor_.assertIndexed(result.viewCache);\n util_1.assert(result.viewCache.getServerCache().isFullyInitialized() ||\n !oldViewCache.getServerCache().isFullyInitialized(), 'Once a server snap is complete, it should never go back');\n this.viewCache_ = result.viewCache;\n return this.generateEventsForChanges_(result.changes, result.viewCache.getEventCache().getNode(), null);\n };\n /**\n * @param {!EventRegistration} registration\n * @return {!Array.}\n */\n View.prototype.getInitialEvents = function (registration) {\n var eventSnap = this.viewCache_.getEventCache();\n var initialChanges = [];\n if (!eventSnap.getNode().isLeafNode()) {\n var eventNode = eventSnap.getNode();\n eventNode.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n initialChanges.push(Change_1.Change.childAddedChange(key, childNode));\n });\n }\n if (eventSnap.isFullyInitialized()) {\n initialChanges.push(Change_1.Change.valueChange(eventSnap.getNode()));\n }\n return this.generateEventsForChanges_(initialChanges, eventSnap.getNode(), registration);\n };\n /**\n * @private\n * @param {!Array.} changes\n * @param {!Node} eventCache\n * @param {EventRegistration=} eventRegistration\n * @return {!Array.}\n */\n View.prototype.generateEventsForChanges_ = function (changes, eventCache, eventRegistration) {\n var registrations = eventRegistration\n ? [eventRegistration]\n : this.eventRegistrations_;\n return this.eventGenerator_.generateEventsForChanges(changes, eventCache, registrations);\n };\n return View;\n}());\nexports.View = View;\n\n//# sourceMappingURL=View.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/View.js\n// module id = 90\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = require(\"../operation/Operation\");\nvar util_1 = require(\"@firebase/util\");\nvar ChildChangeAccumulator_1 = require(\"./ChildChangeAccumulator\");\nvar Change_1 = require(\"./Change\");\nvar ChildrenNode_1 = require(\"../snap/ChildrenNode\");\nvar KeyIndex_1 = require(\"../snap/indexes/KeyIndex\");\nvar ImmutableTree_1 = require(\"../util/ImmutableTree\");\nvar Path_1 = require(\"../util/Path\");\nvar CompleteChildSource_1 = require(\"./CompleteChildSource\");\n/**\n * @constructor\n * @struct\n */\nvar ProcessorResult = /** @class */ (function () {\n /**\n * @param {!ViewCache} viewCache\n * @param {!Array.} changes\n */\n function ProcessorResult(viewCache, changes) {\n this.viewCache = viewCache;\n this.changes = changes;\n }\n return ProcessorResult;\n}());\nexports.ProcessorResult = ProcessorResult;\n/**\n * @constructor\n */\nvar ViewProcessor = /** @class */ (function () {\n /**\n * @param {!NodeFilter} filter_\n */\n function ViewProcessor(filter_) {\n this.filter_ = filter_;\n }\n /**\n * @param {!ViewCache} viewCache\n */\n ViewProcessor.prototype.assertIndexed = function (viewCache) {\n util_1.assert(viewCache\n .getEventCache()\n .getNode()\n .isIndexed(this.filter_.getIndex()), 'Event snap not indexed');\n util_1.assert(viewCache\n .getServerCache()\n .getNode()\n .isIndexed(this.filter_.getIndex()), 'Server snap not indexed');\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @return {!ProcessorResult}\n */\n ViewProcessor.prototype.applyOperation = function (oldViewCache, operation, writesCache, completeCache) {\n var accumulator = new ChildChangeAccumulator_1.ChildChangeAccumulator();\n var newViewCache, filterServerNode;\n if (operation.type === Operation_1.OperationType.OVERWRITE) {\n var overwrite = operation;\n if (overwrite.source.fromUser) {\n newViewCache = this.applyUserOverwrite_(oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, accumulator);\n }\n else {\n util_1.assert(overwrite.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered and the\n // update is not at the root in which case it is ok (and necessary) to mark the node unfiltered\n // again\n filterServerNode =\n overwrite.source.tagged ||\n (oldViewCache.getServerCache().isFiltered() &&\n !overwrite.path.isEmpty());\n newViewCache = this.applyServerOverwrite_(oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.MERGE) {\n var merge = operation;\n if (merge.source.fromUser) {\n newViewCache = this.applyUserMerge_(oldViewCache, merge.path, merge.children, writesCache, completeCache, accumulator);\n }\n else {\n util_1.assert(merge.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered\n filterServerNode =\n merge.source.tagged || oldViewCache.getServerCache().isFiltered();\n newViewCache = this.applyServerMerge_(oldViewCache, merge.path, merge.children, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.ACK_USER_WRITE) {\n var ackUserWrite = operation;\n if (!ackUserWrite.revert) {\n newViewCache = this.ackUserWrite_(oldViewCache, ackUserWrite.path, ackUserWrite.affectedTree, writesCache, completeCache, accumulator);\n }\n else {\n newViewCache = this.revertUserWrite_(oldViewCache, ackUserWrite.path, writesCache, completeCache, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.LISTEN_COMPLETE) {\n newViewCache = this.listenComplete_(oldViewCache, operation.path, writesCache, accumulator);\n }\n else {\n throw util_1.assertionError('Unknown operation type: ' + operation.type);\n }\n var changes = accumulator.getChanges();\n ViewProcessor.maybeAddValueEvent_(oldViewCache, newViewCache, changes);\n return new ProcessorResult(newViewCache, changes);\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!ViewCache} newViewCache\n * @param {!Array.} accumulator\n * @private\n */\n ViewProcessor.maybeAddValueEvent_ = function (oldViewCache, newViewCache, accumulator) {\n var eventSnap = newViewCache.getEventCache();\n if (eventSnap.isFullyInitialized()) {\n var isLeafOrEmpty = eventSnap.getNode().isLeafNode() || eventSnap.getNode().isEmpty();\n var oldCompleteSnap = oldViewCache.getCompleteEventSnap();\n if (accumulator.length > 0 ||\n !oldViewCache.getEventCache().isFullyInitialized() ||\n (isLeafOrEmpty &&\n !eventSnap\n .getNode()\n .equals(/** @type {!Node} */ (oldCompleteSnap))) ||\n !eventSnap\n .getNode()\n .getPriority()\n .equals(oldCompleteSnap.getPriority())) {\n accumulator.push(Change_1.Change.valueChange(\n /** @type {!Node} */ newViewCache.getCompleteEventSnap()));\n }\n }\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} changePath\n * @param {!WriteTreeRef} writesCache\n * @param {!CompleteChildSource} source\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.generateEventCacheAfterServerEvent_ = function (viewCache, changePath, writesCache, source, accumulator) {\n var oldEventSnap = viewCache.getEventCache();\n if (writesCache.shadowingWrite(changePath) != null) {\n // we have a shadowing write, ignore changes\n return viewCache;\n }\n else {\n var newEventCache = void 0, serverNode = void 0;\n if (changePath.isEmpty()) {\n // TODO: figure out how this plays with \"sliding ack windows\"\n util_1.assert(viewCache.getServerCache().isFullyInitialized(), 'If change path is empty, we must have complete server data');\n if (viewCache.getServerCache().isFiltered()) {\n // We need to special case this, because we need to only apply writes to complete children, or\n // we might end up raising events for incomplete children. If the server data is filtered deep\n // writes cannot be guaranteed to be complete\n var serverCache = viewCache.getCompleteServerSnap();\n var completeChildren = serverCache instanceof ChildrenNode_1.ChildrenNode\n ? serverCache\n : ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var completeEventChildren = writesCache.calcCompleteEventChildren(completeChildren);\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeEventChildren, accumulator);\n }\n else {\n var completeNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeNode, accumulator);\n }\n }\n else {\n var childKey = changePath.getFront();\n if (childKey == '.priority') {\n util_1.assert(changePath.getLength() == 1, \"Can't have a priority with additional path components\");\n var oldEventNode = oldEventSnap.getNode();\n serverNode = viewCache.getServerCache().getNode();\n // we might have overwrites for this priority\n var updatedPriority = writesCache.calcEventCacheAfterServerOverwrite(changePath, oldEventNode, serverNode);\n if (updatedPriority != null) {\n newEventCache = this.filter_.updatePriority(oldEventNode, updatedPriority);\n }\n else {\n // priority didn't change, keep old node\n newEventCache = oldEventSnap.getNode();\n }\n }\n else {\n var childChangePath = changePath.popFront();\n // update child\n var newEventChild = void 0;\n if (oldEventSnap.isCompleteForChild(childKey)) {\n serverNode = viewCache.getServerCache().getNode();\n var eventChildUpdate = writesCache.calcEventCacheAfterServerOverwrite(changePath, oldEventSnap.getNode(), serverNode);\n if (eventChildUpdate != null) {\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey)\n .updateChild(childChangePath, eventChildUpdate);\n }\n else {\n // Nothing changed, just keep the old child\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey);\n }\n }\n else {\n newEventChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\n }\n if (newEventChild != null) {\n newEventCache = this.filter_.updateChild(oldEventSnap.getNode(), childKey, newEventChild, childChangePath, source, accumulator);\n }\n else {\n // no complete child available or no change\n newEventCache = oldEventSnap.getNode();\n }\n }\n }\n return viewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized() || changePath.isEmpty(), this.filter_.filtersNodes());\n }\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Path} changePath\n * @param {!Node} changedSnap\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {boolean} filterServerNode\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyServerOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, filterServerNode, accumulator) {\n var oldServerSnap = oldViewCache.getServerCache();\n var newServerCache;\n var serverFilter = filterServerNode\n ? this.filter_\n : this.filter_.getIndexedFilter();\n if (changePath.isEmpty()) {\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), changedSnap, null);\n }\n else if (serverFilter.filtersNodes() && !oldServerSnap.isFiltered()) {\n // we want to filter the server node, but we didn't filter the server node yet, so simulate a full update\n var newServerNode = oldServerSnap\n .getNode()\n .updateChild(changePath, changedSnap);\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), newServerNode, null);\n }\n else {\n var childKey = changePath.getFront();\n if (!oldServerSnap.isCompleteForPath(changePath) &&\n changePath.getLength() > 1) {\n // We don't update incomplete nodes with updates intended for other listeners\n return oldViewCache;\n }\n var childChangePath = changePath.popFront();\n var childNode = oldServerSnap.getNode().getImmediateChild(childKey);\n var newChildNode = childNode.updateChild(childChangePath, changedSnap);\n if (childKey == '.priority') {\n newServerCache = serverFilter.updatePriority(oldServerSnap.getNode(), newChildNode);\n }\n else {\n newServerCache = serverFilter.updateChild(oldServerSnap.getNode(), childKey, newChildNode, childChangePath, CompleteChildSource_1.NO_COMPLETE_CHILD_SOURCE, null);\n }\n }\n var newViewCache = oldViewCache.updateServerSnap(newServerCache, oldServerSnap.isFullyInitialized() || changePath.isEmpty(), serverFilter.filtersNodes());\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, newViewCache, completeCache);\n return this.generateEventCacheAfterServerEvent_(newViewCache, changePath, writesCache, source, accumulator);\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Path} changePath\n * @param {!Node} changedSnap\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyUserOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, accumulator) {\n var oldEventSnap = oldViewCache.getEventCache();\n var newViewCache, newEventCache;\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, oldViewCache, completeCache);\n if (changePath.isEmpty()) {\n newEventCache = this.filter_.updateFullNode(oldViewCache.getEventCache().getNode(), changedSnap, accumulator);\n newViewCache = oldViewCache.updateEventSnap(newEventCache, true, this.filter_.filtersNodes());\n }\n else {\n var childKey = changePath.getFront();\n if (childKey === '.priority') {\n newEventCache = this.filter_.updatePriority(oldViewCache.getEventCache().getNode(), changedSnap);\n newViewCache = oldViewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized(), oldEventSnap.isFiltered());\n }\n else {\n var childChangePath = changePath.popFront();\n var oldChild = oldEventSnap.getNode().getImmediateChild(childKey);\n var newChild = void 0;\n if (childChangePath.isEmpty()) {\n // Child overwrite, we can replace the child\n newChild = changedSnap;\n }\n else {\n var childNode = source.getCompleteChild(childKey);\n if (childNode != null) {\n if (childChangePath.getBack() === '.priority' &&\n childNode.getChild(childChangePath.parent()).isEmpty()) {\n // This is a priority update on an empty node. If this node exists on the server, the\n // server will send down the priority in the update, so ignore for now\n newChild = childNode;\n }\n else {\n newChild = childNode.updateChild(childChangePath, changedSnap);\n }\n }\n else {\n // There is no complete child node available\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n }\n if (!oldChild.equals(newChild)) {\n var newEventSnap = this.filter_.updateChild(oldEventSnap.getNode(), childKey, newChild, childChangePath, source, accumulator);\n newViewCache = oldViewCache.updateEventSnap(newEventSnap, oldEventSnap.isFullyInitialized(), this.filter_.filtersNodes());\n }\n else {\n newViewCache = oldViewCache;\n }\n }\n }\n return newViewCache;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {string} childKey\n * @return {boolean}\n * @private\n */\n ViewProcessor.cacheHasChild_ = function (viewCache, childKey) {\n return viewCache.getEventCache().isCompleteForChild(childKey);\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {ImmutableTree.} changedChildren\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyUserMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, accumulator) {\n var _this = this;\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n var curViewCache = viewCache;\n changedChildren.foreach(function (relativePath, childNode) {\n var writePath = path.child(relativePath);\n if (ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n changedChildren.foreach(function (relativePath, childNode) {\n var writePath = path.child(relativePath);\n if (!ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n return curViewCache;\n };\n /**\n * @param {!Node} node\n * @param {ImmutableTree.} merge\n * @return {!Node}\n * @private\n */\n ViewProcessor.prototype.applyMerge_ = function (node, merge) {\n merge.foreach(function (relativePath, childNode) {\n node = node.updateChild(relativePath, childNode);\n });\n return node;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!ImmutableTree.} changedChildren\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache\n * @param {boolean} filterServerNode\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyServerMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, filterServerNode, accumulator) {\n var _this = this;\n // If we don't have a cache yet, this merge was intended for a previously listen in the same location. Ignore it and\n // wait for the complete data update coming soon.\n if (viewCache\n .getServerCache()\n .getNode()\n .isEmpty() &&\n !viewCache.getServerCache().isFullyInitialized()) {\n return viewCache;\n }\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n var curViewCache = viewCache;\n var viewMergeTree;\n if (path.isEmpty()) {\n viewMergeTree = changedChildren;\n }\n else {\n viewMergeTree = ImmutableTree_1.ImmutableTree.Empty.setTree(path, changedChildren);\n }\n var serverNode = viewCache.getServerCache().getNode();\n viewMergeTree.children.inorderTraversal(function (childKey, childTree) {\n if (serverNode.hasChild(childKey)) {\n var serverChild = viewCache\n .getServerCache()\n .getNode()\n .getImmediateChild(childKey);\n var newChild = _this.applyMerge_(serverChild, childTree);\n curViewCache = _this.applyServerOverwrite_(curViewCache, new Path_1.Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n viewMergeTree.children.inorderTraversal(function (childKey, childMergeTree) {\n var isUnknownDeepMerge = !viewCache.getServerCache().isCompleteForChild(childKey) &&\n childMergeTree.value == null;\n if (!serverNode.hasChild(childKey) && !isUnknownDeepMerge) {\n var serverChild = viewCache\n .getServerCache()\n .getNode()\n .getImmediateChild(childKey);\n var newChild = _this.applyMerge_(serverChild, childMergeTree);\n curViewCache = _this.applyServerOverwrite_(curViewCache, new Path_1.Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n return curViewCache;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} ackPath\n * @param {!ImmutableTree} affectedTree\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.ackUserWrite_ = function (viewCache, ackPath, affectedTree, writesCache, completeCache, accumulator) {\n if (writesCache.shadowingWrite(ackPath) != null) {\n return viewCache;\n }\n // Only filter server node if it is currently filtered\n var filterServerNode = viewCache.getServerCache().isFiltered();\n // Essentially we'll just get our existing server cache for the affected paths and re-apply it as a server update\n // now that it won't be shadowed.\n var serverCache = viewCache.getServerCache();\n if (affectedTree.value != null) {\n // This is an overwrite.\n if ((ackPath.isEmpty() && serverCache.isFullyInitialized()) ||\n serverCache.isCompleteForPath(ackPath)) {\n return this.applyServerOverwrite_(viewCache, ackPath, serverCache.getNode().getChild(ackPath), writesCache, completeCache, filterServerNode, accumulator);\n }\n else if (ackPath.isEmpty()) {\n // This is a goofy edge case where we are acking data at this location but don't have full data. We\n // should just re-apply whatever we have in our cache as a merge.\n var changedChildren_1 = ImmutableTree_1.ImmutableTree.Empty;\n serverCache.getNode().forEachChild(KeyIndex_1.KEY_INDEX, function (name, node) {\n changedChildren_1 = changedChildren_1.set(new Path_1.Path(name), node);\n });\n return this.applyServerMerge_(viewCache, ackPath, changedChildren_1, writesCache, completeCache, filterServerNode, accumulator);\n }\n else {\n return viewCache;\n }\n }\n else {\n // This is a merge.\n var changedChildren_2 = ImmutableTree_1.ImmutableTree.Empty;\n affectedTree.foreach(function (mergePath, value) {\n var serverCachePath = ackPath.child(mergePath);\n if (serverCache.isCompleteForPath(serverCachePath)) {\n changedChildren_2 = changedChildren_2.set(mergePath, serverCache.getNode().getChild(serverCachePath));\n }\n });\n return this.applyServerMerge_(viewCache, ackPath, changedChildren_2, writesCache, completeCache, filterServerNode, accumulator);\n }\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!WriteTreeRef} writesCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.listenComplete_ = function (viewCache, path, writesCache, accumulator) {\n var oldServerNode = viewCache.getServerCache();\n var newViewCache = viewCache.updateServerSnap(oldServerNode.getNode(), oldServerNode.isFullyInitialized() || path.isEmpty(), oldServerNode.isFiltered());\n return this.generateEventCacheAfterServerEvent_(newViewCache, path, writesCache, CompleteChildSource_1.NO_COMPLETE_CHILD_SOURCE, accumulator);\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeServerCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.revertUserWrite_ = function (viewCache, path, writesCache, completeServerCache, accumulator) {\n var complete;\n if (writesCache.shadowingWrite(path) != null) {\n return viewCache;\n }\n else {\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, viewCache, completeServerCache);\n var oldEventCache = viewCache.getEventCache().getNode();\n var newEventCache = void 0;\n if (path.isEmpty() || path.getFront() === '.priority') {\n var newNode = void 0;\n if (viewCache.getServerCache().isFullyInitialized()) {\n newNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n }\n else {\n var serverChildren = viewCache.getServerCache().getNode();\n util_1.assert(serverChildren instanceof ChildrenNode_1.ChildrenNode, 'serverChildren would be complete if leaf node');\n newNode = writesCache.calcCompleteEventChildren(serverChildren);\n }\n newNode = newNode;\n newEventCache = this.filter_.updateFullNode(oldEventCache, newNode, accumulator);\n }\n else {\n var childKey = path.getFront();\n var newChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\n if (newChild == null &&\n viewCache.getServerCache().isCompleteForChild(childKey)) {\n newChild = oldEventCache.getImmediateChild(childKey);\n }\n if (newChild != null) {\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, newChild, path.popFront(), source, accumulator);\n }\n else if (viewCache\n .getEventCache()\n .getNode()\n .hasChild(childKey)) {\n // No complete child available, delete the existing one, if any\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, ChildrenNode_1.ChildrenNode.EMPTY_NODE, path.popFront(), source, accumulator);\n }\n else {\n newEventCache = oldEventCache;\n }\n if (newEventCache.isEmpty() &&\n viewCache.getServerCache().isFullyInitialized()) {\n // We might have reverted all child writes. Maybe the old event was a leaf node\n complete = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n if (complete.isLeafNode()) {\n newEventCache = this.filter_.updateFullNode(newEventCache, complete, accumulator);\n }\n }\n }\n complete =\n viewCache.getServerCache().isFullyInitialized() ||\n writesCache.shadowingWrite(Path_1.Path.Empty) != null;\n return viewCache.updateEventSnap(newEventCache, complete, this.filter_.filtersNodes());\n }\n };\n return ViewProcessor;\n}());\nexports.ViewProcessor = ViewProcessor;\n\n//# sourceMappingURL=ViewProcessor.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/ViewProcessor.js\n// module id = 91\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Change_1 = require(\"./Change\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * @constructor\n */\nvar ChildChangeAccumulator = /** @class */ (function () {\n function ChildChangeAccumulator() {\n this.changeMap_ = {};\n }\n /**\n * @param {!Change} change\n */\n ChildChangeAccumulator.prototype.trackChildChange = function (change) {\n var type = change.type;\n var childKey /** @type {!string} */ = change.childName;\n util_2.assert(type == Change_1.Change.CHILD_ADDED ||\n type == Change_1.Change.CHILD_CHANGED ||\n type == Change_1.Change.CHILD_REMOVED, 'Only child changes supported for tracking');\n util_2.assert(childKey !== '.priority', 'Only non-priority child changes can be tracked.');\n var oldChange = util_1.safeGet(this.changeMap_, childKey);\n if (oldChange) {\n var oldType = oldChange.type;\n if (type == Change_1.Change.CHILD_ADDED && oldType == Change_1.Change.CHILD_REMOVED) {\n this.changeMap_[childKey] = Change_1.Change.childChangedChange(childKey, change.snapshotNode, oldChange.snapshotNode);\n }\n else if (type == Change_1.Change.CHILD_REMOVED &&\n oldType == Change_1.Change.CHILD_ADDED) {\n delete this.changeMap_[childKey];\n }\n else if (type == Change_1.Change.CHILD_REMOVED &&\n oldType == Change_1.Change.CHILD_CHANGED) {\n this.changeMap_[childKey] = Change_1.Change.childRemovedChange(childKey, oldChange.oldSnap);\n }\n else if (type == Change_1.Change.CHILD_CHANGED &&\n oldType == Change_1.Change.CHILD_ADDED) {\n this.changeMap_[childKey] = Change_1.Change.childAddedChange(childKey, change.snapshotNode);\n }\n else if (type == Change_1.Change.CHILD_CHANGED &&\n oldType == Change_1.Change.CHILD_CHANGED) {\n this.changeMap_[childKey] = Change_1.Change.childChangedChange(childKey, change.snapshotNode, oldChange.oldSnap);\n }\n else {\n throw util_2.assertionError('Illegal combination of changes: ' +\n change +\n ' occurred after ' +\n oldChange);\n }\n }\n else {\n this.changeMap_[childKey] = change;\n }\n };\n /**\n * @return {!Array.}\n */\n ChildChangeAccumulator.prototype.getChanges = function () {\n return util_1.getValues(this.changeMap_);\n };\n return ChildChangeAccumulator;\n}());\nexports.ChildChangeAccumulator = ChildChangeAccumulator;\n\n//# sourceMappingURL=ChildChangeAccumulator.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/ChildChangeAccumulator.js\n// module id = 92\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CacheNode_1 = require(\"./CacheNode\");\n/**\n * An implementation of CompleteChildSource that never returns any additional children\n *\n * @private\n * @constructor\n * @implements CompleteChildSource\n */\nvar NoCompleteChildSource_ = /** @class */ (function () {\n function NoCompleteChildSource_() {\n }\n /**\n * @inheritDoc\n */\n NoCompleteChildSource_.prototype.getCompleteChild = function (childKey) {\n return null;\n };\n /**\n * @inheritDoc\n */\n NoCompleteChildSource_.prototype.getChildAfterChild = function (index, child, reverse) {\n return null;\n };\n return NoCompleteChildSource_;\n}());\nexports.NoCompleteChildSource_ = NoCompleteChildSource_;\n/**\n * Singleton instance.\n * @const\n * @type {!CompleteChildSource}\n */\nexports.NO_COMPLETE_CHILD_SOURCE = new NoCompleteChildSource_();\n/**\n * An implementation of CompleteChildSource that uses a WriteTree in addition to any other server data or\n * old event caches available to calculate complete children.\n *\n *\n * @implements CompleteChildSource\n */\nvar WriteTreeCompleteChildSource = /** @class */ (function () {\n /**\n * @param {!WriteTreeRef} writes_\n * @param {!ViewCache} viewCache_\n * @param {?Node} optCompleteServerCache_\n */\n function WriteTreeCompleteChildSource(writes_, viewCache_, optCompleteServerCache_) {\n if (optCompleteServerCache_ === void 0) { optCompleteServerCache_ = null; }\n this.writes_ = writes_;\n this.viewCache_ = viewCache_;\n this.optCompleteServerCache_ = optCompleteServerCache_;\n }\n /**\n * @inheritDoc\n */\n WriteTreeCompleteChildSource.prototype.getCompleteChild = function (childKey) {\n var node = this.viewCache_.getEventCache();\n if (node.isCompleteForChild(childKey)) {\n return node.getNode().getImmediateChild(childKey);\n }\n else {\n var serverNode = this.optCompleteServerCache_ != null\n ? new CacheNode_1.CacheNode(this.optCompleteServerCache_, true, false)\n : this.viewCache_.getServerCache();\n return this.writes_.calcCompleteChild(childKey, serverNode);\n }\n };\n /**\n * @inheritDoc\n */\n WriteTreeCompleteChildSource.prototype.getChildAfterChild = function (index, child, reverse) {\n var completeServerData = this.optCompleteServerCache_ != null\n ? this.optCompleteServerCache_\n : this.viewCache_.getCompleteServerSnap();\n var nodes = this.writes_.calcIndexedSlice(completeServerData, child, 1, reverse, index);\n if (nodes.length === 0) {\n return null;\n }\n else {\n return nodes[0];\n }\n };\n return WriteTreeCompleteChildSource;\n}());\nexports.WriteTreeCompleteChildSource = WriteTreeCompleteChildSource;\n\n//# sourceMappingURL=CompleteChildSource.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/CompleteChildSource.js\n// module id = 93\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Node_1 = require(\"../snap/Node\");\nvar Change_1 = require(\"./Change\");\nvar util_1 = require(\"@firebase/util\");\n/**\n * An EventGenerator is used to convert \"raw\" changes (Change) as computed by the\n * CacheDiffer into actual events (Event) that can be raised. See generateEventsForChanges()\n * for details.\n *\n * @constructor\n */\nvar EventGenerator = /** @class */ (function () {\n /**\n *\n * @param {!Query} query_\n */\n function EventGenerator(query_) {\n this.query_ = query_;\n /**\n * @private\n * @type {!Index}\n */\n this.index_ = this.query_.getQueryParams().getIndex();\n }\n /**\n * Given a set of raw changes (no moved events and prevName not specified yet), and a set of\n * EventRegistrations that should be notified of these changes, generate the actual events to be raised.\n *\n * Notes:\n * - child_moved events will be synthesized at this time for any child_changed events that affect\n * our index.\n * - prevName will be calculated based on the index ordering.\n *\n * @param {!Array.} changes\n * @param {!Node} eventCache\n * @param {!Array.} eventRegistrations\n * @return {!Array.}\n */\n EventGenerator.prototype.generateEventsForChanges = function (changes, eventCache, eventRegistrations) {\n var _this = this;\n var events = [];\n var moves = [];\n changes.forEach(function (change) {\n if (change.type === Change_1.Change.CHILD_CHANGED &&\n _this.index_.indexedValueChanged(change.oldSnap, change.snapshotNode)) {\n moves.push(Change_1.Change.childMovedChange(change.childName, change.snapshotNode));\n }\n });\n this.generateEventsForType_(events, Change_1.Change.CHILD_REMOVED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_ADDED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_MOVED, moves, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_CHANGED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.VALUE, changes, eventRegistrations, eventCache);\n return events;\n };\n /**\n * Given changes of a single change type, generate the corresponding events.\n *\n * @param {!Array.} events\n * @param {!string} eventType\n * @param {!Array.} changes\n * @param {!Array.} registrations\n * @param {!Node} eventCache\n * @private\n */\n EventGenerator.prototype.generateEventsForType_ = function (events, eventType, changes, registrations, eventCache) {\n var _this = this;\n var filteredChanges = changes.filter(function (change) { return change.type === eventType; });\n filteredChanges.sort(this.compareChanges_.bind(this));\n filteredChanges.forEach(function (change) {\n var materializedChange = _this.materializeSingleChange_(change, eventCache);\n registrations.forEach(function (registration) {\n if (registration.respondsTo(change.type)) {\n events.push(registration.createEvent(materializedChange, _this.query_));\n }\n });\n });\n };\n /**\n * @param {!Change} change\n * @param {!Node} eventCache\n * @return {!Change}\n * @private\n */\n EventGenerator.prototype.materializeSingleChange_ = function (change, eventCache) {\n if (change.type === 'value' || change.type === 'child_removed') {\n return change;\n }\n else {\n change.prevName = eventCache.getPredecessorChildName(\n /** @type {!string} */\n change.childName, change.snapshotNode, this.index_);\n return change;\n }\n };\n /**\n * @param {!Change} a\n * @param {!Change} b\n * @return {number}\n * @private\n */\n EventGenerator.prototype.compareChanges_ = function (a, b) {\n if (a.childName == null || b.childName == null) {\n throw util_1.assertionError('Should only compare child_ events.');\n }\n var aWrapped = new Node_1.NamedNode(a.childName, a.snapshotNode);\n var bWrapped = new Node_1.NamedNode(b.childName, b.snapshotNode);\n return this.index_.compare(aWrapped, bWrapped);\n };\n return EventGenerator;\n}());\nexports.EventGenerator = EventGenerator;\n\n//# sourceMappingURL=EventGenerator.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/EventGenerator.js\n// module id = 94\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar Path_1 = require(\"./util/Path\");\nvar CompoundWrite_1 = require(\"./CompoundWrite\");\nvar PriorityIndex_1 = require(\"./snap/indexes/PriorityIndex\");\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\n/**\n * WriteTree tracks all pending user-initiated writes and has methods to calculate the result of merging them\n * with underlying server data (to create \"event cache\" data). Pending writes are added with addOverwrite()\n * and addMerge(), and removed with removeWrite().\n *\n * @constructor\n */\nvar WriteTree = /** @class */ (function () {\n function WriteTree() {\n /**\n * A tree tracking the result of applying all visible writes. This does not include transactions with\n * applyLocally=false or writes that are completely shadowed by other writes.\n *\n * @type {!CompoundWrite}\n * @private\n */\n this.visibleWrites_ = CompoundWrite_1.CompoundWrite.Empty;\n /**\n * A list of all pending writes, regardless of visibility and shadowed-ness. Used to calculate arbitrary\n * sets of the changed data, such as hidden writes (from transactions) or changes with certain writes excluded (also\n * used by transactions).\n *\n * @type {!Array.}\n * @private\n */\n this.allWrites_ = [];\n this.lastWriteId_ = -1;\n }\n /**\n * Create a new WriteTreeRef for the given path. For use with a new sync point at the given path.\n *\n * @param {!Path} path\n * @return {!WriteTreeRef}\n */\n WriteTree.prototype.childWrites = function (path) {\n return new WriteTreeRef(path, this);\n };\n /**\n * Record a new overwrite from user code.\n *\n * @param {!Path} path\n * @param {!Node} snap\n * @param {!number} writeId\n * @param {boolean=} visible This is set to false by some transactions. It should be excluded from event caches\n */\n WriteTree.prototype.addOverwrite = function (path, snap, writeId, visible) {\n util_2.assert(writeId > this.lastWriteId_, 'Stacking an older write on top of newer ones');\n if (visible === undefined) {\n visible = true;\n }\n this.allWrites_.push({\n path: path,\n snap: snap,\n writeId: writeId,\n visible: visible\n });\n if (visible) {\n this.visibleWrites_ = this.visibleWrites_.addWrite(path, snap);\n }\n this.lastWriteId_ = writeId;\n };\n /**\n * Record a new merge from user code.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} writeId\n */\n WriteTree.prototype.addMerge = function (path, changedChildren, writeId) {\n util_2.assert(writeId > this.lastWriteId_, 'Stacking an older merge on top of newer ones');\n this.allWrites_.push({\n path: path,\n children: changedChildren,\n writeId: writeId,\n visible: true\n });\n this.visibleWrites_ = this.visibleWrites_.addWrites(path, changedChildren);\n this.lastWriteId_ = writeId;\n };\n /**\n * @param {!number} writeId\n * @return {?WriteRecord}\n */\n WriteTree.prototype.getWrite = function (writeId) {\n for (var i = 0; i < this.allWrites_.length; i++) {\n var record = this.allWrites_[i];\n if (record.writeId === writeId) {\n return record;\n }\n }\n return null;\n };\n /**\n * Remove a write (either an overwrite or merge) that has been successfully acknowledge by the server. Recalculates\n * the tree if necessary. We return true if it may have been visible, meaning views need to reevaluate.\n *\n * @param {!number} writeId\n * @return {boolean} true if the write may have been visible (meaning we'll need to reevaluate / raise\n * events as a result).\n */\n WriteTree.prototype.removeWrite = function (writeId) {\n // Note: disabling this check. It could be a transaction that preempted another transaction, and thus was applied\n // out of order.\n //const validClear = revert || this.allWrites_.length === 0 || writeId <= this.allWrites_[0].writeId;\n //assert(validClear, \"Either we don't have this write, or it's the first one in the queue\");\n var _this = this;\n var idx = this.allWrites_.findIndex(function (s) {\n return s.writeId === writeId;\n });\n util_2.assert(idx >= 0, 'removeWrite called with nonexistent writeId.');\n var writeToRemove = this.allWrites_[idx];\n this.allWrites_.splice(idx, 1);\n var removedWriteWasVisible = writeToRemove.visible;\n var removedWriteOverlapsWithOtherWrites = false;\n var i = this.allWrites_.length - 1;\n while (removedWriteWasVisible && i >= 0) {\n var currentWrite = this.allWrites_[i];\n if (currentWrite.visible) {\n if (i >= idx &&\n this.recordContainsPath_(currentWrite, writeToRemove.path)) {\n // The removed write was completely shadowed by a subsequent write.\n removedWriteWasVisible = false;\n }\n else if (writeToRemove.path.contains(currentWrite.path)) {\n // Either we're covering some writes or they're covering part of us (depending on which came first).\n removedWriteOverlapsWithOtherWrites = true;\n }\n }\n i--;\n }\n if (!removedWriteWasVisible) {\n return false;\n }\n else if (removedWriteOverlapsWithOtherWrites) {\n // There's some shadowing going on. Just rebuild the visible writes from scratch.\n this.resetTree_();\n return true;\n }\n else {\n // There's no shadowing. We can safely just remove the write(s) from visibleWrites.\n if (writeToRemove.snap) {\n this.visibleWrites_ = this.visibleWrites_.removeWrite(writeToRemove.path);\n }\n else {\n var children = writeToRemove.children;\n util_1.forEach(children, function (childName) {\n _this.visibleWrites_ = _this.visibleWrites_.removeWrite(writeToRemove.path.child(childName));\n });\n }\n return true;\n }\n };\n /**\n * Return a complete snapshot for the given path if there's visible write data at that path, else null.\n * No server data is considered.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTree.prototype.getCompleteWriteData = function (path) {\n return this.visibleWrites_.getCompleteNode(path);\n };\n /**\n * Given optional, underlying server data, and an optional set of constraints (exclude some sets, include hidden\n * writes), attempt to calculate a complete snapshot for the given path\n *\n * @param {!Path} treePath\n * @param {?Node} completeServerCache\n * @param {Array.=} writeIdsToExclude An optional set to be excluded\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\n * @return {?Node}\n */\n WriteTree.prototype.calcCompleteEventCache = function (treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n if (!writeIdsToExclude && !includeHiddenWrites) {\n var shadowingNode = this.visibleWrites_.getCompleteNode(treePath);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n var subMerge = this.visibleWrites_.childCompoundWrite(treePath);\n if (subMerge.isEmpty()) {\n return completeServerCache;\n }\n else if (completeServerCache == null &&\n !subMerge.hasCompleteWrite(Path_1.Path.Empty)) {\n // We wouldn't have a complete snapshot, since there's no underlying data and no complete shadow\n return null;\n }\n else {\n var layeredCache = completeServerCache || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return subMerge.apply(layeredCache);\n }\n }\n }\n else {\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n if (!includeHiddenWrites && merge.isEmpty()) {\n return completeServerCache;\n }\n else {\n // If the server cache is null, and we don't have a complete cache, we need to return null\n if (!includeHiddenWrites &&\n completeServerCache == null &&\n !merge.hasCompleteWrite(Path_1.Path.Empty)) {\n return null;\n }\n else {\n var filter = function (write) {\n return ((write.visible || includeHiddenWrites) &&\n (!writeIdsToExclude ||\n !~writeIdsToExclude.indexOf(write.writeId)) &&\n (write.path.contains(treePath) || treePath.contains(write.path)));\n };\n var mergeAtPath = WriteTree.layerTree_(this.allWrites_, filter, treePath);\n var layeredCache = completeServerCache || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return mergeAtPath.apply(layeredCache);\n }\n }\n }\n };\n /**\n * With optional, underlying server data, attempt to return a children node of children that we have complete data for.\n * Used when creating new views, to pre-fill their complete event children snapshot.\n *\n * @param {!Path} treePath\n * @param {?ChildrenNode} completeServerChildren\n * @return {!ChildrenNode}\n */\n WriteTree.prototype.calcCompleteEventChildren = function (treePath, completeServerChildren) {\n var completeChildren = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var topLevelSet = this.visibleWrites_.getCompleteNode(treePath);\n if (topLevelSet) {\n if (!topLevelSet.isLeafNode()) {\n // we're shadowing everything. Return the children.\n topLevelSet.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childSnap) {\n completeChildren = completeChildren.updateImmediateChild(childName, childSnap);\n });\n }\n return completeChildren;\n }\n else if (completeServerChildren) {\n // Layer any children we have on top of this\n // We know we don't have a top-level set, so just enumerate existing children\n var merge_1 = this.visibleWrites_.childCompoundWrite(treePath);\n completeServerChildren.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n var node = merge_1\n .childCompoundWrite(new Path_1.Path(childName))\n .apply(childNode);\n completeChildren = completeChildren.updateImmediateChild(childName, node);\n });\n // Add any complete children we have from the set\n merge_1.getCompleteChildren().forEach(function (namedNode) {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n else {\n // We don't have anything to layer on top of. Layer on any children we have\n // Note that we can return an empty snap if we have a defined delete\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n merge.getCompleteChildren().forEach(function (namedNode) {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n };\n /**\n * Given that the underlying server data has updated, determine what, if anything, needs to be\n * applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events\n *\n * Either existingEventSnap or existingServerSnap must exist\n *\n * @param {!Path} treePath\n * @param {!Path} childPath\n * @param {?Node} existingEventSnap\n * @param {?Node} existingServerSnap\n * @return {?Node}\n */\n WriteTree.prototype.calcEventCacheAfterServerOverwrite = function (treePath, childPath, existingEventSnap, existingServerSnap) {\n util_2.assert(existingEventSnap || existingServerSnap, 'Either existingEventSnap or existingServerSnap must exist');\n var path = treePath.child(childPath);\n if (this.visibleWrites_.hasCompleteWrite(path)) {\n // At this point we can probably guarantee that we're in case 2, meaning no events\n // May need to check visibility while doing the findRootMostValueAndPath call\n return null;\n }\n else {\n // No complete shadowing. We're either partially shadowing or not shadowing at all.\n var childMerge = this.visibleWrites_.childCompoundWrite(path);\n if (childMerge.isEmpty()) {\n // We're not shadowing at all. Case 1\n return existingServerSnap.getChild(childPath);\n }\n else {\n // This could be more efficient if the serverNode + updates doesn't change the eventSnap\n // However this is tricky to find out, since user updates don't necessary change the server\n // snap, e.g. priority updates on empty nodes, or deep deletes. Another special case is if the server\n // adds nodes, but doesn't change any existing writes. It is therefore not enough to\n // only check if the updates change the serverNode.\n // Maybe check if the merge tree contains these special cases and only do a full overwrite in that case?\n return childMerge.apply(existingServerSnap.getChild(childPath));\n }\n }\n };\n /**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n *\n * @param {!Path} treePath\n * @param {!string} childKey\n * @param {!CacheNode} existingServerSnap\n * @return {?Node}\n */\n WriteTree.prototype.calcCompleteChild = function (treePath, childKey, existingServerSnap) {\n var path = treePath.child(childKey);\n var shadowingNode = this.visibleWrites_.getCompleteNode(path);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n if (existingServerSnap.isCompleteForChild(childKey)) {\n var childMerge = this.visibleWrites_.childCompoundWrite(path);\n return childMerge.apply(existingServerSnap.getNode().getImmediateChild(childKey));\n }\n else {\n return null;\n }\n }\n };\n /**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTree.prototype.shadowingWrite = function (path) {\n return this.visibleWrites_.getCompleteNode(path);\n };\n /**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window.\n *\n * @param {!Path} treePath\n * @param {?Node} completeServerData\n * @param {!NamedNode} startPost\n * @param {!number} count\n * @param {boolean} reverse\n * @param {!Index} index\n * @return {!Array.}\n */\n WriteTree.prototype.calcIndexedSlice = function (treePath, completeServerData, startPost, count, reverse, index) {\n var toIterate;\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n var shadowingNode = merge.getCompleteNode(Path_1.Path.Empty);\n if (shadowingNode != null) {\n toIterate = shadowingNode;\n }\n else if (completeServerData != null) {\n toIterate = merge.apply(completeServerData);\n }\n else {\n // no children to iterate on\n return [];\n }\n toIterate = toIterate.withIndex(index);\n if (!toIterate.isEmpty() && !toIterate.isLeafNode()) {\n var nodes = [];\n var cmp = index.getCompare();\n var iter = reverse\n ? toIterate.getReverseIteratorFrom(startPost, index)\n : toIterate.getIteratorFrom(startPost, index);\n var next = iter.getNext();\n while (next && nodes.length < count) {\n if (cmp(next, startPost) !== 0) {\n nodes.push(next);\n }\n next = iter.getNext();\n }\n return nodes;\n }\n else {\n return [];\n }\n };\n /**\n * @param {!WriteRecord} writeRecord\n * @param {!Path} path\n * @return {boolean}\n * @private\n */\n WriteTree.prototype.recordContainsPath_ = function (writeRecord, path) {\n if (writeRecord.snap) {\n return writeRecord.path.contains(path);\n }\n else {\n // findKey can return undefined, so use !! to coerce to boolean\n return !!util_1.findKey(writeRecord.children, function (childSnap, childName) {\n return writeRecord.path.child(childName).contains(path);\n });\n }\n };\n /**\n * Re-layer the writes and merges into a tree so we can efficiently calculate event snapshots\n * @private\n */\n WriteTree.prototype.resetTree_ = function () {\n this.visibleWrites_ = WriteTree.layerTree_(this.allWrites_, WriteTree.DefaultFilter_, Path_1.Path.Empty);\n if (this.allWrites_.length > 0) {\n this.lastWriteId_ = this.allWrites_[this.allWrites_.length - 1].writeId;\n }\n else {\n this.lastWriteId_ = -1;\n }\n };\n /**\n * The default filter used when constructing the tree. Keep everything that's visible.\n *\n * @param {!WriteRecord} write\n * @return {boolean}\n * @private\n */\n WriteTree.DefaultFilter_ = function (write) {\n return write.visible;\n };\n /**\n * Static method. Given an array of WriteRecords, a filter for which ones to include, and a path, construct the tree of\n * event data at that path.\n *\n * @param {!Array.} writes\n * @param {!function(!WriteRecord):boolean} filter\n * @param {!Path} treeRoot\n * @return {!CompoundWrite}\n * @private\n */\n WriteTree.layerTree_ = function (writes, filter, treeRoot) {\n var compoundWrite = CompoundWrite_1.CompoundWrite.Empty;\n for (var i = 0; i < writes.length; ++i) {\n var write = writes[i];\n // Theory, a later set will either:\n // a) abort a relevant transaction, so no need to worry about excluding it from calculating that transaction\n // b) not be relevant to a transaction (separate branch), so again will not affect the data for that transaction\n if (filter(write)) {\n var writePath = write.path;\n var relativePath = void 0;\n if (write.snap) {\n if (treeRoot.contains(writePath)) {\n relativePath = Path_1.Path.relativePath(treeRoot, writePath);\n compoundWrite = compoundWrite.addWrite(relativePath, write.snap);\n }\n else if (writePath.contains(treeRoot)) {\n relativePath = Path_1.Path.relativePath(writePath, treeRoot);\n compoundWrite = compoundWrite.addWrite(Path_1.Path.Empty, write.snap.getChild(relativePath));\n }\n else {\n // There is no overlap between root path and write path, ignore write\n }\n }\n else if (write.children) {\n if (treeRoot.contains(writePath)) {\n relativePath = Path_1.Path.relativePath(treeRoot, writePath);\n compoundWrite = compoundWrite.addWrites(relativePath, write.children);\n }\n else if (writePath.contains(treeRoot)) {\n relativePath = Path_1.Path.relativePath(writePath, treeRoot);\n if (relativePath.isEmpty()) {\n compoundWrite = compoundWrite.addWrites(Path_1.Path.Empty, write.children);\n }\n else {\n var child = util_1.safeGet(write.children, relativePath.getFront());\n if (child) {\n // There exists a child in this node that matches the root path\n var deepNode = child.getChild(relativePath.popFront());\n compoundWrite = compoundWrite.addWrite(Path_1.Path.Empty, deepNode);\n }\n }\n }\n else {\n // There is no overlap between root path and write path, ignore write\n }\n }\n else {\n throw util_2.assertionError('WriteRecord should have .snap or .children');\n }\n }\n }\n return compoundWrite;\n };\n return WriteTree;\n}());\nexports.WriteTree = WriteTree;\n/**\n * A WriteTreeRef wraps a WriteTree and a path, for convenient access to a particular subtree. All of the methods\n * just proxy to the underlying WriteTree.\n *\n * @constructor\n */\nvar WriteTreeRef = /** @class */ (function () {\n /**\n * @param {!Path} path\n * @param {!WriteTree} writeTree\n */\n function WriteTreeRef(path, writeTree) {\n this.treePath_ = path;\n this.writeTree_ = writeTree;\n }\n /**\n * If possible, returns a complete event cache, using the underlying server data if possible. In addition, can be used\n * to get a cache that includes hidden writes, and excludes arbitrary writes. Note that customizing the returned node\n * can lead to a more expensive calculation.\n *\n * @param {?Node} completeServerCache\n * @param {Array.=} writeIdsToExclude Optional writes to exclude.\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcCompleteEventCache = function (completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n return this.writeTree_.calcCompleteEventCache(this.treePath_, completeServerCache, writeIdsToExclude, includeHiddenWrites);\n };\n /**\n * If possible, returns a children node containing all of the complete children we have data for. The returned data is a\n * mix of the given server data and write data.\n *\n * @param {?ChildrenNode} completeServerChildren\n * @return {!ChildrenNode}\n */\n WriteTreeRef.prototype.calcCompleteEventChildren = function (completeServerChildren) {\n return this.writeTree_.calcCompleteEventChildren(this.treePath_, completeServerChildren);\n };\n /**\n * Given that either the underlying server data has updated or the outstanding writes have updated, determine what,\n * if anything, needs to be applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events should be raised\n *\n * Either existingEventSnap or existingServerSnap must exist, this is validated via an assert\n *\n * @param {!Path} path\n * @param {?Node} existingEventSnap\n * @param {?Node} existingServerSnap\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcEventCacheAfterServerOverwrite = function (path, existingEventSnap, existingServerSnap) {\n return this.writeTree_.calcEventCacheAfterServerOverwrite(this.treePath_, path, existingEventSnap, existingServerSnap);\n };\n /**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTreeRef.prototype.shadowingWrite = function (path) {\n return this.writeTree_.shadowingWrite(this.treePath_.child(path));\n };\n /**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window\n *\n * @param {?Node} completeServerData\n * @param {!NamedNode} startPost\n * @param {!number} count\n * @param {boolean} reverse\n * @param {!Index} index\n * @return {!Array.}\n */\n WriteTreeRef.prototype.calcIndexedSlice = function (completeServerData, startPost, count, reverse, index) {\n return this.writeTree_.calcIndexedSlice(this.treePath_, completeServerData, startPost, count, reverse, index);\n };\n /**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n *\n * @param {!string} childKey\n * @param {!CacheNode} existingServerCache\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcCompleteChild = function (childKey, existingServerCache) {\n return this.writeTree_.calcCompleteChild(this.treePath_, childKey, existingServerCache);\n };\n /**\n * Return a WriteTreeRef for a child.\n *\n * @param {string} childName\n * @return {!WriteTreeRef}\n */\n WriteTreeRef.prototype.child = function (childName) {\n return new WriteTreeRef(this.treePath_.child(childName), this.writeTree_);\n };\n return WriteTreeRef;\n}());\nexports.WriteTreeRef = WriteTreeRef;\n\n//# sourceMappingURL=WriteTree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/WriteTree.js\n// module id = 95\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ImmutableTree_1 = require(\"./util/ImmutableTree\");\nvar Path_1 = require(\"./util/Path\");\nvar util_1 = require(\"@firebase/util\");\nvar Node_1 = require(\"./snap/Node\");\nvar PriorityIndex_1 = require(\"./snap/indexes/PriorityIndex\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * This class holds a collection of writes that can be applied to nodes in unison. It abstracts away the logic with\n * dealing with priority writes and multiple nested writes. At any given path there is only allowed to be one write\n * modifying that path. Any write to an existing path or shadowing an existing path will modify that existing write\n * to reflect the write added.\n *\n * @constructor\n * @param {!ImmutableTree.} writeTree\n */\nvar CompoundWrite = /** @class */ (function () {\n function CompoundWrite(writeTree_) {\n this.writeTree_ = writeTree_;\n }\n /**\n * @param {!Path} path\n * @param {!Node} node\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.addWrite = function (path, node) {\n if (path.isEmpty()) {\n return new CompoundWrite(new ImmutableTree_1.ImmutableTree(node));\n }\n else {\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n var rootMostPath = rootmost.path;\n var value = rootmost.value;\n var relativePath = Path_1.Path.relativePath(rootMostPath, path);\n value = value.updateChild(relativePath, node);\n return new CompoundWrite(this.writeTree_.set(rootMostPath, value));\n }\n else {\n var subtree = new ImmutableTree_1.ImmutableTree(node);\n var newWriteTree = this.writeTree_.setTree(path, subtree);\n return new CompoundWrite(newWriteTree);\n }\n }\n };\n /**\n * @param {!Path} path\n * @param {!Object.} updates\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.addWrites = function (path, updates) {\n var newWrite = this;\n util_1.forEach(updates, function (childKey, node) {\n newWrite = newWrite.addWrite(path.child(childKey), node);\n });\n return newWrite;\n };\n /**\n * Will remove a write at the given path and deeper paths. This will not modify a write at a higher\n * location, which must be removed by calling this method with that path.\n *\n * @param {!Path} path The path at which a write and all deeper writes should be removed\n * @return {!CompoundWrite} The new CompoundWrite with the removed path\n */\n CompoundWrite.prototype.removeWrite = function (path) {\n if (path.isEmpty()) {\n return CompoundWrite.Empty;\n }\n else {\n var newWriteTree = this.writeTree_.setTree(path, ImmutableTree_1.ImmutableTree.Empty);\n return new CompoundWrite(newWriteTree);\n }\n };\n /**\n * Returns whether this CompoundWrite will fully overwrite a node at a given location and can therefore be\n * considered \"complete\".\n *\n * @param {!Path} path The path to check for\n * @return {boolean} Whether there is a complete write at that path\n */\n CompoundWrite.prototype.hasCompleteWrite = function (path) {\n return this.getCompleteNode(path) != null;\n };\n /**\n * Returns a node for a path if and only if the node is a \"complete\" overwrite at that path. This will not aggregate\n * writes from deeper paths, but will return child nodes from a more shallow path.\n *\n * @param {!Path} path The path to get a complete write\n * @return {?Node} The node if complete at that path, or null otherwise.\n */\n CompoundWrite.prototype.getCompleteNode = function (path) {\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n return this.writeTree_\n .get(rootmost.path)\n .getChild(Path_1.Path.relativePath(rootmost.path, path));\n }\n else {\n return null;\n }\n };\n /**\n * Returns all children that are guaranteed to be a complete overwrite.\n *\n * @return {!Array.} A list of all complete children.\n */\n CompoundWrite.prototype.getCompleteChildren = function () {\n var children = [];\n var node = this.writeTree_.value;\n if (node != null) {\n // If it's a leaf node, it has no children; so nothing to do.\n if (!node.isLeafNode()) {\n node.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n children.push(new Node_1.NamedNode(childName, childNode));\n });\n }\n }\n else {\n this.writeTree_.children.inorderTraversal(function (childName, childTree) {\n if (childTree.value != null) {\n children.push(new Node_1.NamedNode(childName, childTree.value));\n }\n });\n }\n return children;\n };\n /**\n * @param {!Path} path\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.childCompoundWrite = function (path) {\n if (path.isEmpty()) {\n return this;\n }\n else {\n var shadowingNode = this.getCompleteNode(path);\n if (shadowingNode != null) {\n return new CompoundWrite(new ImmutableTree_1.ImmutableTree(shadowingNode));\n }\n else {\n return new CompoundWrite(this.writeTree_.subtree(path));\n }\n }\n };\n /**\n * Returns true if this CompoundWrite is empty and therefore does not modify any nodes.\n * @return {boolean} Whether this CompoundWrite is empty\n */\n CompoundWrite.prototype.isEmpty = function () {\n return this.writeTree_.isEmpty();\n };\n /**\n * Applies this CompoundWrite to a node. The node is returned with all writes from this CompoundWrite applied to the\n * node\n * @param {!Node} node The node to apply this CompoundWrite to\n * @return {!Node} The node with all writes applied\n */\n CompoundWrite.prototype.apply = function (node) {\n return CompoundWrite.applySubtreeWrite_(Path_1.Path.Empty, this.writeTree_, node);\n };\n /**\n * @type {!CompoundWrite}\n */\n CompoundWrite.Empty = new CompoundWrite(new ImmutableTree_1.ImmutableTree(null));\n /**\n * @param {!Path} relativePath\n * @param {!ImmutableTree.} writeTree\n * @param {!Node} node\n * @return {!Node}\n * @private\n */\n CompoundWrite.applySubtreeWrite_ = function (relativePath, writeTree, node) {\n if (writeTree.value != null) {\n // Since there a write is always a leaf, we're done here\n return node.updateChild(relativePath, writeTree.value);\n }\n else {\n var priorityWrite_1 = null;\n writeTree.children.inorderTraversal(function (childKey, childTree) {\n if (childKey === '.priority') {\n // Apply priorities at the end so we don't update priorities for either empty nodes or forget\n // to apply priorities to empty nodes that are later filled\n util_2.assert(childTree.value !== null, 'Priority writes must always be leaf nodes');\n priorityWrite_1 = childTree.value;\n }\n else {\n node = CompoundWrite.applySubtreeWrite_(relativePath.child(childKey), childTree, node);\n }\n });\n // If there was a priority write, we only apply it if the node is not empty\n if (!node.getChild(relativePath).isEmpty() && priorityWrite_1 !== null) {\n node = node.updateChild(relativePath.child('.priority'), priorityWrite_1);\n }\n return node;\n }\n };\n return CompoundWrite;\n}());\nexports.CompoundWrite = CompoundWrite;\n\n//# sourceMappingURL=CompoundWrite.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/CompoundWrite.js\n// module id = 96\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\n/**\n * Mutable object which basically just stores a reference to the \"latest\" immutable snapshot.\n *\n * @constructor\n */\nvar SnapshotHolder = /** @class */ (function () {\n function SnapshotHolder() {\n this.rootNode_ = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n SnapshotHolder.prototype.getNode = function (path) {\n return this.rootNode_.getChild(path);\n };\n SnapshotHolder.prototype.updateSnapshot = function (path, newSnapshotNode) {\n this.rootNode_ = this.rootNode_.updateChild(path, newSnapshotNode);\n };\n return SnapshotHolder;\n}());\nexports.SnapshotHolder = SnapshotHolder;\n\n//# sourceMappingURL=SnapshotHolder.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/SnapshotHolder.js\n// module id = 97\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"./util/util\");\n/**\n * Abstraction around FirebaseApp's token fetching capabilities.\n */\nvar AuthTokenProvider = /** @class */ (function () {\n /**\n * @param {!FirebaseApp} app_\n */\n function AuthTokenProvider(app_) {\n this.app_ = app_;\n }\n /**\n * @param {boolean} forceRefresh\n * @return {!Promise}\n */\n AuthTokenProvider.prototype.getToken = function (forceRefresh) {\n return this.app_['INTERNAL']['getToken'](forceRefresh).then(null, \n // .catch\n function (error) {\n // TODO: Need to figure out all the cases this is raised and whether\n // this makes sense.\n if (error && error.code === 'auth/token-not-initialized') {\n util_1.log('Got auth/token-not-initialized error. Treating as null token.');\n return null;\n }\n else {\n return Promise.reject(error);\n }\n });\n };\n AuthTokenProvider.prototype.addTokenChangeListener = function (listener) {\n // TODO: We might want to wrap the listener and call it with no args to\n // avoid a leaky abstraction, but that makes removing the listener harder.\n this.app_['INTERNAL']['addAuthTokenListener'](listener);\n };\n AuthTokenProvider.prototype.removeTokenChangeListener = function (listener) {\n this.app_['INTERNAL']['removeAuthTokenListener'](listener);\n };\n AuthTokenProvider.prototype.notifyForInvalidToken = function () {\n var errorMessage = 'Provided authentication credentials for the app named \"' +\n this.app_.name +\n '\" are invalid. This usually indicates your app was not ' +\n 'initialized correctly. ';\n if ('credential' in this.app_.options) {\n errorMessage +=\n 'Make sure the \"credential\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else if ('serviceAccount' in this.app_.options) {\n errorMessage +=\n 'Make sure the \"serviceAccount\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else {\n errorMessage +=\n 'Make sure the \"apiKey\" and \"databaseURL\" properties provided to ' +\n 'initializeApp() match the values provided for your app at ' +\n 'https://console.firebase.google.com/.';\n }\n util_1.warn(errorMessage);\n };\n return AuthTokenProvider;\n}());\nexports.AuthTokenProvider = AuthTokenProvider;\n\n//# sourceMappingURL=AuthTokenProvider.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/AuthTokenProvider.js\n// module id = 98\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * Tracks a collection of stats.\n *\n * @constructor\n */\nvar StatsCollection = /** @class */ (function () {\n function StatsCollection() {\n this.counters_ = {};\n }\n StatsCollection.prototype.incrementCounter = function (name, amount) {\n if (amount === void 0) { amount = 1; }\n if (!util_2.contains(this.counters_, name))\n this.counters_[name] = 0;\n this.counters_[name] += amount;\n };\n StatsCollection.prototype.get = function () {\n return util_1.deepCopy(this.counters_);\n };\n return StatsCollection;\n}());\nexports.StatsCollection = StatsCollection;\n\n//# sourceMappingURL=StatsCollection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/stats/StatsCollection.js\n// module id = 99\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar StatsListener_1 = require(\"./StatsListener\");\n// Assuming some apps may have a short amount of time on page, and a bulk of firebase operations probably\n// happen on page load, we try to report our first set of stats pretty quickly, but we wait at least 10\n// seconds to try to ensure the Firebase connection is established / settled.\nvar FIRST_STATS_MIN_TIME = 10 * 1000;\nvar FIRST_STATS_MAX_TIME = 30 * 1000;\n// We'll continue to report stats on average every 5 minutes.\nvar REPORT_STATS_INTERVAL = 5 * 60 * 1000;\n/**\n * @constructor\n */\nvar StatsReporter = /** @class */ (function () {\n /**\n * @param collection\n * @param server_\n */\n function StatsReporter(collection, server_) {\n this.server_ = server_;\n this.statsToReport_ = {};\n this.statsListener_ = new StatsListener_1.StatsListener(collection);\n var timeout = FIRST_STATS_MIN_TIME +\n (FIRST_STATS_MAX_TIME - FIRST_STATS_MIN_TIME) * Math.random();\n util_2.setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(timeout));\n }\n StatsReporter.prototype.includeStat = function (stat) {\n this.statsToReport_[stat] = true;\n };\n StatsReporter.prototype.reportStats_ = function () {\n var _this = this;\n var stats = this.statsListener_.get();\n var reportedStats = {};\n var haveStatsToReport = false;\n util_1.forEach(stats, function (stat, value) {\n if (value > 0 && util_1.contains(_this.statsToReport_, stat)) {\n reportedStats[stat] = value;\n haveStatsToReport = true;\n }\n });\n if (haveStatsToReport) {\n this.server_.reportStats(reportedStats);\n }\n // queue our next run.\n util_2.setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(Math.random() * 2 * REPORT_STATS_INTERVAL));\n };\n return StatsReporter;\n}());\nexports.StatsReporter = StatsReporter;\n\n//# sourceMappingURL=StatsReporter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/stats/StatsReporter.js\n// module id = 100\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../util/util\");\n/**\n * The event queue serves a few purposes:\n * 1. It ensures we maintain event order in the face of event callbacks doing operations that result in more\n * events being queued.\n * 2. raiseQueuedEvents() handles being called reentrantly nicely. That is, if in the course of raising events,\n * raiseQueuedEvents() is called again, the \"inner\" call will pick up raising events where the \"outer\" call\n * left off, ensuring that the events are still raised synchronously and in order.\n * 3. You can use raiseEventsAtPath and raiseEventsForChangedPath to ensure only relevant previously-queued\n * events are raised synchronously.\n *\n * NOTE: This can all go away if/when we move to async events.\n *\n * @constructor\n */\nvar EventQueue = /** @class */ (function () {\n function EventQueue() {\n /**\n * @private\n * @type {!Array.}\n */\n this.eventLists_ = [];\n /**\n * Tracks recursion depth of raiseQueuedEvents_, for debugging purposes.\n * @private\n * @type {!number}\n */\n this.recursionDepth_ = 0;\n }\n /**\n * @param {!Array.} eventDataList The new events to queue.\n */\n EventQueue.prototype.queueEvents = function (eventDataList) {\n // We group events by path, storing them in a single EventList, to make it easier to skip over them quickly.\n var currList = null;\n for (var i = 0; i < eventDataList.length; i++) {\n var eventData = eventDataList[i];\n var eventPath = eventData.getPath();\n if (currList !== null && !eventPath.equals(currList.getPath())) {\n this.eventLists_.push(currList);\n currList = null;\n }\n if (currList === null) {\n currList = new EventList(eventPath);\n }\n currList.add(eventData);\n }\n if (currList) {\n this.eventLists_.push(currList);\n }\n };\n /**\n * Queues the specified events and synchronously raises all events (including previously queued ones)\n * for the specified path.\n *\n * It is assumed that the new events are all for the specified path.\n *\n * @param {!Path} path The path to raise events for.\n * @param {!Array.} eventDataList The new events to raise.\n */\n EventQueue.prototype.raiseEventsAtPath = function (path, eventDataList) {\n this.queueEvents(eventDataList);\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\n return eventPath.equals(path);\n });\n };\n /**\n * Queues the specified events and synchronously raises all events (including previously queued ones) for\n * locations related to the specified change path (i.e. all ancestors and descendants).\n *\n * It is assumed that the new events are all related (ancestor or descendant) to the specified path.\n *\n * @param {!Path} changedPath The path to raise events for.\n * @param {!Array.} eventDataList The events to raise\n */\n EventQueue.prototype.raiseEventsForChangedPath = function (changedPath, eventDataList) {\n this.queueEvents(eventDataList);\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\n return eventPath.contains(changedPath) || changedPath.contains(eventPath);\n });\n };\n /**\n * @param {!function(!Path):boolean} predicate\n * @private\n */\n EventQueue.prototype.raiseQueuedEventsMatchingPredicate_ = function (predicate) {\n this.recursionDepth_++;\n var sentAll = true;\n for (var i = 0; i < this.eventLists_.length; i++) {\n var eventList = this.eventLists_[i];\n if (eventList) {\n var eventPath = eventList.getPath();\n if (predicate(eventPath)) {\n this.eventLists_[i].raise();\n this.eventLists_[i] = null;\n }\n else {\n sentAll = false;\n }\n }\n }\n if (sentAll) {\n this.eventLists_ = [];\n }\n this.recursionDepth_--;\n };\n return EventQueue;\n}());\nexports.EventQueue = EventQueue;\n/**\n * @param {!Path} path\n * @constructor\n */\nvar EventList = /** @class */ (function () {\n function EventList(path_) {\n this.path_ = path_;\n /**\n * @type {!Array.}\n * @private\n */\n this.events_ = [];\n }\n /**\n * @param {!Event} eventData\n */\n EventList.prototype.add = function (eventData) {\n this.events_.push(eventData);\n };\n /**\n * Iterates through the list and raises each event\n */\n EventList.prototype.raise = function () {\n for (var i = 0; i < this.events_.length; i++) {\n var eventData = this.events_[i];\n if (eventData !== null) {\n this.events_[i] = null;\n var eventFn = eventData.getEventRunner();\n if (util_1.logger) {\n util_1.log('event: ' + eventData.toString());\n }\n util_1.exceptionGuard(eventFn);\n }\n }\n };\n /**\n * @return {!Path}\n */\n EventList.prototype.getPath = function () {\n return this.path_;\n };\n return EventList;\n}());\nexports.EventList = EventList;\n\n//# sourceMappingURL=EventQueue.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/EventQueue.js\n// module id = 101\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EventEmitter_1 = require(\"./EventEmitter\");\nvar util_1 = require(\"@firebase/util\");\n/**\n * @extends {EventEmitter}\n */\nvar VisibilityMonitor = /** @class */ (function (_super) {\n __extends(VisibilityMonitor, _super);\n function VisibilityMonitor() {\n var _this = _super.call(this, ['visible']) || this;\n var hidden;\n var visibilityChange;\n if (typeof document !== 'undefined' &&\n typeof document.addEventListener !== 'undefined') {\n if (typeof document['hidden'] !== 'undefined') {\n // Opera 12.10 and Firefox 18 and later support\n visibilityChange = 'visibilitychange';\n hidden = 'hidden';\n }\n else if (typeof document['mozHidden'] !== 'undefined') {\n visibilityChange = 'mozvisibilitychange';\n hidden = 'mozHidden';\n }\n else if (typeof document['msHidden'] !== 'undefined') {\n visibilityChange = 'msvisibilitychange';\n hidden = 'msHidden';\n }\n else if (typeof document['webkitHidden'] !== 'undefined') {\n visibilityChange = 'webkitvisibilitychange';\n hidden = 'webkitHidden';\n }\n }\n // Initially, we always assume we are visible. This ensures that in browsers\n // without page visibility support or in cases where we are never visible\n // (e.g. chrome extension), we act as if we are visible, i.e. don't delay\n // reconnects\n _this.visible_ = true;\n if (visibilityChange) {\n document.addEventListener(visibilityChange, function () {\n var visible = !document[hidden];\n if (visible !== _this.visible_) {\n _this.visible_ = visible;\n _this.trigger('visible', visible);\n }\n }, false);\n }\n return _this;\n }\n VisibilityMonitor.getInstance = function () {\n return new VisibilityMonitor();\n };\n /**\n * @param {!string} eventType\n * @return {Array.}\n */\n VisibilityMonitor.prototype.getInitialEvent = function (eventType) {\n util_1.assert(eventType === 'visible', 'Unknown event type: ' + eventType);\n return [this.visible_];\n };\n return VisibilityMonitor;\n}(EventEmitter_1.EventEmitter));\nexports.VisibilityMonitor = VisibilityMonitor;\n\n//# sourceMappingURL=VisibilityMonitor.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/VisibilityMonitor.js\n// module id = 102\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar EventEmitter_1 = require(\"./EventEmitter\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * Monitors online state (as reported by window.online/offline events).\n *\n * The expectation is that this could have many false positives (thinks we are online\n * when we're not), but no false negatives. So we can safely use it to determine when\n * we definitely cannot reach the internet.\n *\n * @extends {EventEmitter}\n */\nvar OnlineMonitor = /** @class */ (function (_super) {\n __extends(OnlineMonitor, _super);\n function OnlineMonitor() {\n var _this = _super.call(this, ['online']) || this;\n _this.online_ = true;\n // We've had repeated complaints that Cordova apps can get stuck \"offline\", e.g.\n // https://forum.ionicframework.com/t/firebase-connection-is-lost-and-never-come-back/43810\n // It would seem that the 'online' event does not always fire consistently. So we disable it\n // for Cordova.\n if (typeof window !== 'undefined' &&\n typeof window.addEventListener !== 'undefined' &&\n !util_2.isMobileCordova()) {\n window.addEventListener('online', function () {\n if (!_this.online_) {\n _this.online_ = true;\n _this.trigger('online', true);\n }\n }, false);\n window.addEventListener('offline', function () {\n if (_this.online_) {\n _this.online_ = false;\n _this.trigger('online', false);\n }\n }, false);\n }\n return _this;\n }\n OnlineMonitor.getInstance = function () {\n return new OnlineMonitor();\n };\n /**\n * @param {!string} eventType\n * @return {Array.}\n */\n OnlineMonitor.prototype.getInitialEvent = function (eventType) {\n util_1.assert(eventType === 'online', 'Unknown event type: ' + eventType);\n return [this.online_];\n };\n /**\n * @return {boolean}\n */\n OnlineMonitor.prototype.currentlyOnline = function () {\n return this.online_;\n };\n return OnlineMonitor;\n}(EventEmitter_1.EventEmitter));\nexports.OnlineMonitor = OnlineMonitor;\n\n//# sourceMappingURL=OnlineMonitor.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/OnlineMonitor.js\n// module id = 103\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BrowserPollConnection_1 = require(\"./BrowserPollConnection\");\nvar WebSocketConnection_1 = require(\"./WebSocketConnection\");\nvar util_1 = require(\"../core/util/util\");\n/**\n * Currently simplistic, this class manages what transport a Connection should use at various stages of its\n * lifecycle.\n *\n * It starts with longpolling in a browser, and httppolling on node. It then upgrades to websockets if\n * they are available.\n * @constructor\n */\nvar TransportManager = /** @class */ (function () {\n /**\n * @param {!RepoInfo} repoInfo Metadata around the namespace we're connecting to\n */\n function TransportManager(repoInfo) {\n this.initTransports_(repoInfo);\n }\n Object.defineProperty(TransportManager, \"ALL_TRANSPORTS\", {\n /**\n * @const\n * @type {!Array.}\n */\n get: function () {\n return [BrowserPollConnection_1.BrowserPollConnection, WebSocketConnection_1.WebSocketConnection];\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {!RepoInfo} repoInfo\n * @private\n */\n TransportManager.prototype.initTransports_ = function (repoInfo) {\n var isWebSocketsAvailable = WebSocketConnection_1.WebSocketConnection && WebSocketConnection_1.WebSocketConnection['isAvailable']();\n var isSkipPollConnection = isWebSocketsAvailable && !WebSocketConnection_1.WebSocketConnection.previouslyFailed();\n if (repoInfo.webSocketOnly) {\n if (!isWebSocketsAvailable)\n util_1.warn(\"wss:// URL used, but browser isn't known to support websockets. Trying anyway.\");\n isSkipPollConnection = true;\n }\n if (isSkipPollConnection) {\n this.transports_ = [WebSocketConnection_1.WebSocketConnection];\n }\n else {\n var transports_1 = (this.transports_ = []);\n util_1.each(TransportManager.ALL_TRANSPORTS, function (i, transport) {\n if (transport && transport['isAvailable']()) {\n transports_1.push(transport);\n }\n });\n }\n };\n /**\n * @return {function(new:Transport, !string, !RepoInfo, string=, string=)} The constructor for the\n * initial transport to use\n */\n TransportManager.prototype.initialTransport = function () {\n if (this.transports_.length > 0) {\n return this.transports_[0];\n }\n else {\n throw new Error('No transports available');\n }\n };\n /**\n * @return {?function(new:Transport, function(),function(), string=)} The constructor for the next\n * transport, or null\n */\n TransportManager.prototype.upgradeTransport = function () {\n if (this.transports_.length > 1) {\n return this.transports_[1];\n }\n else {\n return null;\n }\n };\n return TransportManager;\n}());\nexports.TransportManager = TransportManager;\n\n//# sourceMappingURL=TransportManager.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/TransportManager.js\n// module id = 104\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../../core/util/util\");\n/**\n * This class ensures the packets from the server arrive in order\n * This class takes data from the server and ensures it gets passed into the callbacks in order.\n * @constructor\n */\nvar PacketReceiver = /** @class */ (function () {\n /**\n * @param onMessage_\n */\n function PacketReceiver(onMessage_) {\n this.onMessage_ = onMessage_;\n this.pendingResponses = [];\n this.currentResponseNum = 0;\n this.closeAfterResponse = -1;\n this.onClose = null;\n }\n PacketReceiver.prototype.closeAfter = function (responseNum, callback) {\n this.closeAfterResponse = responseNum;\n this.onClose = callback;\n if (this.closeAfterResponse < this.currentResponseNum) {\n this.onClose();\n this.onClose = null;\n }\n };\n /**\n * Each message from the server comes with a response number, and an array of data. The responseNumber\n * allows us to ensure that we process them in the right order, since we can't be guaranteed that all\n * browsers will respond in the same order as the requests we sent\n * @param {number} requestNum\n * @param {Array} data\n */\n PacketReceiver.prototype.handleResponse = function (requestNum, data) {\n var _this = this;\n this.pendingResponses[requestNum] = data;\n var _loop_1 = function () {\n var toProcess = this_1.pendingResponses[this_1.currentResponseNum];\n delete this_1.pendingResponses[this_1.currentResponseNum];\n var _loop_2 = function (i) {\n if (toProcess[i]) {\n util_1.exceptionGuard(function () {\n _this.onMessage_(toProcess[i]);\n });\n }\n };\n for (var i = 0; i < toProcess.length; ++i) {\n _loop_2(i);\n }\n if (this_1.currentResponseNum === this_1.closeAfterResponse) {\n if (this_1.onClose) {\n this_1.onClose();\n this_1.onClose = null;\n }\n return \"break\";\n }\n this_1.currentResponseNum++;\n };\n var this_1 = this;\n while (this.pendingResponses[this.currentResponseNum]) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n };\n return PacketReceiver;\n}());\nexports.PacketReceiver = PacketReceiver;\n\n//# sourceMappingURL=PacketReceiver.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/polling/PacketReceiver.js\n// module id = 105\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"./util/util\");\nvar util_3 = require(\"@firebase/util\");\nvar util_4 = require(\"@firebase/util\");\nvar util_5 = require(\"@firebase/util\");\nvar ServerActions_1 = require(\"./ServerActions\");\n/**\n * An implementation of ServerActions that communicates with the server via REST requests.\n * This is mostly useful for compatibility with crawlers, where we don't want to spin up a full\n * persistent connection (using WebSockets or long-polling)\n */\nvar ReadonlyRestClient = /** @class */ (function (_super) {\n __extends(ReadonlyRestClient, _super);\n /**\n * @param {!RepoInfo} repoInfo_ Data about the namespace we are connecting to\n * @param {function(string, *, boolean, ?number)} onDataUpdate_ A callback for new data from the server\n * @param {AuthTokenProvider} authTokenProvider_\n * @implements {ServerActions}\n */\n function ReadonlyRestClient(repoInfo_, onDataUpdate_, authTokenProvider_) {\n var _this = _super.call(this) || this;\n _this.repoInfo_ = repoInfo_;\n _this.onDataUpdate_ = onDataUpdate_;\n _this.authTokenProvider_ = authTokenProvider_;\n /** @private {function(...[*])} */\n _this.log_ = util_2.logWrapper('p:rest:');\n /**\n * We don't actually need to track listens, except to prevent us calling an onComplete for a listen\n * that's been removed. :-/\n *\n * @private {!Object.}\n */\n _this.listens_ = {};\n return _this;\n }\n ReadonlyRestClient.prototype.reportStats = function (stats) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {!Query} query\n * @param {?number=} tag\n * @return {string}\n * @private\n */\n ReadonlyRestClient.getListenId_ = function (query, tag) {\n if (tag !== undefined) {\n return 'tag$' + tag;\n }\n else {\n util_1.assert(query.getQueryParams().isDefault(), \"should have a tag if it's not a default query.\");\n return query.path.toString();\n }\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.listen = function (query, currentHashFn, tag, onComplete) {\n var _this = this;\n var pathString = query.path.toString();\n this.log_('Listen called for ' + pathString + ' ' + query.queryIdentifier());\n // Mark this listener so we can tell if it's removed.\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\n var thisListen = {};\n this.listens_[listenId] = thisListen;\n var queryStringParamaters = query\n .getQueryParams()\n .toRestQueryStringParameters();\n this.restRequest_(pathString + '.json', queryStringParamaters, function (error, result) {\n var data = result;\n if (error === 404) {\n data = null;\n error = null;\n }\n if (error === null) {\n _this.onDataUpdate_(pathString, data, /*isMerge=*/ false, tag);\n }\n if (util_4.safeGet(_this.listens_, listenId) === thisListen) {\n var status_1;\n if (!error) {\n status_1 = 'ok';\n }\n else if (error == 401) {\n status_1 = 'permission_denied';\n }\n else {\n status_1 = 'rest_error:' + error;\n }\n onComplete(status_1, null);\n }\n });\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.unlisten = function (query, tag) {\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\n delete this.listens_[listenId];\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.refreshAuthToken = function (token) {\n // no-op since we just always call getToken.\n };\n /**\n * Performs a REST request to the given path, with the provided query string parameters,\n * and any auth credentials we have.\n *\n * @param {!string} pathString\n * @param {!Object.} queryStringParameters\n * @param {?function(?number, *=)} callback\n * @private\n */\n ReadonlyRestClient.prototype.restRequest_ = function (pathString, queryStringParameters, callback) {\n var _this = this;\n if (queryStringParameters === void 0) { queryStringParameters = {}; }\n queryStringParameters['format'] = 'export';\n this.authTokenProvider_\n .getToken(/*forceRefresh=*/ false)\n .then(function (authTokenData) {\n var authToken = authTokenData && authTokenData.accessToken;\n if (authToken) {\n queryStringParameters['auth'] = authToken;\n }\n var url = (_this.repoInfo_.secure ? 'https://' : 'http://') +\n _this.repoInfo_.host +\n pathString +\n '?' +\n util_5.querystring(queryStringParameters);\n _this.log_('Sending REST request for ' + url);\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (callback && xhr.readyState === 4) {\n _this.log_('REST Response for ' + url + ' received. status:', xhr.status, 'response:', xhr.responseText);\n var res = null;\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n res = util_3.jsonEval(xhr.responseText);\n }\n catch (e) {\n util_2.warn('Failed to parse JSON response for ' +\n url +\n ': ' +\n xhr.responseText);\n }\n callback(null, res);\n }\n else {\n // 401 and 404 are expected.\n if (xhr.status !== 401 && xhr.status !== 404) {\n util_2.warn('Got unsuccessful REST response for ' +\n url +\n ' Status: ' +\n xhr.status);\n }\n callback(xhr.status);\n }\n callback = null;\n }\n };\n xhr.open('GET', url, /*asynchronous=*/ true);\n xhr.send();\n });\n };\n return ReadonlyRestClient;\n}(ServerActions_1.ServerActions));\nexports.ReadonlyRestClient = ReadonlyRestClient;\n\n//# sourceMappingURL=ReadonlyRestClient.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/ReadonlyRestClient.js\n// module id = 106\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar KeyIndex_1 = require(\"../snap/indexes/KeyIndex\");\nvar PriorityIndex_1 = require(\"../snap/indexes/PriorityIndex\");\nvar ValueIndex_1 = require(\"../snap/indexes/ValueIndex\");\nvar PathIndex_1 = require(\"../snap/indexes/PathIndex\");\nvar IndexedFilter_1 = require(\"./filter/IndexedFilter\");\nvar LimitedFilter_1 = require(\"./filter/LimitedFilter\");\nvar RangedFilter_1 = require(\"./filter/RangedFilter\");\nvar util_3 = require(\"@firebase/util\");\n/**\n * This class is an immutable-from-the-public-api struct containing a set of query parameters defining a\n * range to be returned for a particular location. It is assumed that validation of parameters is done at the\n * user-facing API level, so it is not done here.\n * @constructor\n */\nvar QueryParams = /** @class */ (function () {\n function QueryParams() {\n this.limitSet_ = false;\n this.startSet_ = false;\n this.startNameSet_ = false;\n this.endSet_ = false;\n this.endNameSet_ = false;\n this.limit_ = 0;\n this.viewFrom_ = '';\n this.indexStartValue_ = null;\n this.indexStartName_ = '';\n this.indexEndValue_ = null;\n this.indexEndName_ = '';\n this.index_ = PriorityIndex_1.PRIORITY_INDEX;\n }\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasStart = function () {\n return this.startSet_;\n };\n /**\n * @return {boolean} True if it would return from left.\n */\n QueryParams.prototype.isViewFromLeft = function () {\n if (this.viewFrom_ === '') {\n // limit(), rather than limitToFirst or limitToLast was called.\n // This means that only one of startSet_ and endSet_ is true. Use them\n // to calculate which side of the view to anchor to. If neither is set,\n // anchor to the end.\n return this.startSet_;\n }\n else {\n return (this.viewFrom_ === QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT);\n }\n };\n /**\n * Only valid to call if hasStart() returns true\n * @return {*}\n */\n QueryParams.prototype.getIndexStartValue = function () {\n util_1.assert(this.startSet_, 'Only valid if start has been set');\n return this.indexStartValue_;\n };\n /**\n * Only valid to call if hasStart() returns true.\n * Returns the starting key name for the range defined by these query parameters\n * @return {!string}\n */\n QueryParams.prototype.getIndexStartName = function () {\n util_1.assert(this.startSet_, 'Only valid if start has been set');\n if (this.startNameSet_) {\n return this.indexStartName_;\n }\n else {\n return util_2.MIN_NAME;\n }\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasEnd = function () {\n return this.endSet_;\n };\n /**\n * Only valid to call if hasEnd() returns true.\n * @return {*}\n */\n QueryParams.prototype.getIndexEndValue = function () {\n util_1.assert(this.endSet_, 'Only valid if end has been set');\n return this.indexEndValue_;\n };\n /**\n * Only valid to call if hasEnd() returns true.\n * Returns the end key name for the range defined by these query parameters\n * @return {!string}\n */\n QueryParams.prototype.getIndexEndName = function () {\n util_1.assert(this.endSet_, 'Only valid if end has been set');\n if (this.endNameSet_) {\n return this.indexEndName_;\n }\n else {\n return util_2.MAX_NAME;\n }\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasLimit = function () {\n return this.limitSet_;\n };\n /**\n * @return {boolean} True if a limit has been set and it has been explicitly anchored\n */\n QueryParams.prototype.hasAnchoredLimit = function () {\n return this.limitSet_ && this.viewFrom_ !== '';\n };\n /**\n * Only valid to call if hasLimit() returns true\n * @return {!number}\n */\n QueryParams.prototype.getLimit = function () {\n util_1.assert(this.limitSet_, 'Only valid if limit has been set');\n return this.limit_;\n };\n /**\n * @return {!Index}\n */\n QueryParams.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @return {!QueryParams}\n * @private\n */\n QueryParams.prototype.copy_ = function () {\n var copy = new QueryParams();\n copy.limitSet_ = this.limitSet_;\n copy.limit_ = this.limit_;\n copy.startSet_ = this.startSet_;\n copy.indexStartValue_ = this.indexStartValue_;\n copy.startNameSet_ = this.startNameSet_;\n copy.indexStartName_ = this.indexStartName_;\n copy.endSet_ = this.endSet_;\n copy.indexEndValue_ = this.indexEndValue_;\n copy.endNameSet_ = this.endNameSet_;\n copy.indexEndName_ = this.indexEndName_;\n copy.index_ = this.index_;\n copy.viewFrom_ = this.viewFrom_;\n return copy;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limit = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = '';\n return newParams;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limitToFirst = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT;\n return newParams;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limitToLast = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_RIGHT;\n return newParams;\n };\n /**\n * @param {*} indexValue\n * @param {?string=} key\n * @return {!QueryParams}\n */\n QueryParams.prototype.startAt = function (indexValue, key) {\n var newParams = this.copy_();\n newParams.startSet_ = true;\n if (!(indexValue !== undefined)) {\n indexValue = null;\n }\n newParams.indexStartValue_ = indexValue;\n if (key != null) {\n newParams.startNameSet_ = true;\n newParams.indexStartName_ = key;\n }\n else {\n newParams.startNameSet_ = false;\n newParams.indexStartName_ = '';\n }\n return newParams;\n };\n /**\n * @param {*} indexValue\n * @param {?string=} key\n * @return {!QueryParams}\n */\n QueryParams.prototype.endAt = function (indexValue, key) {\n var newParams = this.copy_();\n newParams.endSet_ = true;\n if (!(indexValue !== undefined)) {\n indexValue = null;\n }\n newParams.indexEndValue_ = indexValue;\n if (key !== undefined) {\n newParams.endNameSet_ = true;\n newParams.indexEndName_ = key;\n }\n else {\n newParams.endNameSet_ = false;\n newParams.indexEndName_ = '';\n }\n return newParams;\n };\n /**\n * @param {!Index} index\n * @return {!QueryParams}\n */\n QueryParams.prototype.orderBy = function (index) {\n var newParams = this.copy_();\n newParams.index_ = index;\n return newParams;\n };\n /**\n * @return {!Object}\n */\n QueryParams.prototype.getQueryObject = function () {\n var WIRE_PROTOCOL_CONSTANTS = QueryParams.WIRE_PROTOCOL_CONSTANTS_;\n var obj = {};\n if (this.startSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_VALUE] = this.indexStartValue_;\n if (this.startNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_NAME] = this.indexStartName_;\n }\n }\n if (this.endSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_VALUE] = this.indexEndValue_;\n if (this.endNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_NAME] = this.indexEndName_;\n }\n }\n if (this.limitSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.LIMIT] = this.limit_;\n var viewFrom = this.viewFrom_;\n if (viewFrom === '') {\n if (this.isViewFromLeft()) {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT;\n }\n else {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT;\n }\n }\n obj[WIRE_PROTOCOL_CONSTANTS.VIEW_FROM] = viewFrom;\n }\n // For now, priority index is the default, so we only specify if it's some other index\n if (this.index_ !== PriorityIndex_1.PRIORITY_INDEX) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX] = this.index_.toString();\n }\n return obj;\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.loadsAllData = function () {\n return !(this.startSet_ || this.endSet_ || this.limitSet_);\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.isDefault = function () {\n return this.loadsAllData() && this.index_ == PriorityIndex_1.PRIORITY_INDEX;\n };\n /**\n * @return {!NodeFilter}\n */\n QueryParams.prototype.getNodeFilter = function () {\n if (this.loadsAllData()) {\n return new IndexedFilter_1.IndexedFilter(this.getIndex());\n }\n else if (this.hasLimit()) {\n return new LimitedFilter_1.LimitedFilter(this);\n }\n else {\n return new RangedFilter_1.RangedFilter(this);\n }\n };\n /**\n * Returns a set of REST query string parameters representing this query.\n *\n * @return {!Object.} query string parameters\n */\n QueryParams.prototype.toRestQueryStringParameters = function () {\n var REST_CONSTANTS = QueryParams.REST_QUERY_CONSTANTS_;\n var qs = {};\n if (this.isDefault()) {\n return qs;\n }\n var orderBy;\n if (this.index_ === PriorityIndex_1.PRIORITY_INDEX) {\n orderBy = REST_CONSTANTS.PRIORITY_INDEX;\n }\n else if (this.index_ === ValueIndex_1.VALUE_INDEX) {\n orderBy = REST_CONSTANTS.VALUE_INDEX;\n }\n else if (this.index_ === KeyIndex_1.KEY_INDEX) {\n orderBy = REST_CONSTANTS.KEY_INDEX;\n }\n else {\n util_1.assert(this.index_ instanceof PathIndex_1.PathIndex, 'Unrecognized index type!');\n orderBy = this.index_.toString();\n }\n qs[REST_CONSTANTS.ORDER_BY] = util_3.stringify(orderBy);\n if (this.startSet_) {\n qs[REST_CONSTANTS.START_AT] = util_3.stringify(this.indexStartValue_);\n if (this.startNameSet_) {\n qs[REST_CONSTANTS.START_AT] += ',' + util_3.stringify(this.indexStartName_);\n }\n }\n if (this.endSet_) {\n qs[REST_CONSTANTS.END_AT] = util_3.stringify(this.indexEndValue_);\n if (this.endNameSet_) {\n qs[REST_CONSTANTS.END_AT] += ',' + util_3.stringify(this.indexEndName_);\n }\n }\n if (this.limitSet_) {\n if (this.isViewFromLeft()) {\n qs[REST_CONSTANTS.LIMIT_TO_FIRST] = this.limit_;\n }\n else {\n qs[REST_CONSTANTS.LIMIT_TO_LAST] = this.limit_;\n }\n }\n return qs;\n };\n /**\n * Wire Protocol Constants\n * @const\n * @enum {string}\n * @private\n */\n QueryParams.WIRE_PROTOCOL_CONSTANTS_ = {\n INDEX_START_VALUE: 'sp',\n INDEX_START_NAME: 'sn',\n INDEX_END_VALUE: 'ep',\n INDEX_END_NAME: 'en',\n LIMIT: 'l',\n VIEW_FROM: 'vf',\n VIEW_FROM_LEFT: 'l',\n VIEW_FROM_RIGHT: 'r',\n INDEX: 'i'\n };\n /**\n * REST Query Constants\n * @const\n * @enum {string}\n * @private\n */\n QueryParams.REST_QUERY_CONSTANTS_ = {\n ORDER_BY: 'orderBy',\n PRIORITY_INDEX: '$priority',\n VALUE_INDEX: '$value',\n KEY_INDEX: '$key',\n START_AT: 'startAt',\n END_AT: 'endAt',\n LIMIT_TO_FIRST: 'limitToFirst',\n LIMIT_TO_LAST: 'limitToLast'\n };\n /**\n * Default, empty query parameters\n * @type {!QueryParams}\n * @const\n */\n QueryParams.DEFAULT = new QueryParams();\n return QueryParams;\n}());\nexports.QueryParams = QueryParams;\n\n//# sourceMappingURL=QueryParams.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/QueryParams.js\n// module id = 107\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RangedFilter_1 = require(\"./RangedFilter\");\nvar ChildrenNode_1 = require(\"../../snap/ChildrenNode\");\nvar Node_1 = require(\"../../snap/Node\");\nvar util_1 = require(\"@firebase/util\");\nvar Change_1 = require(\"../Change\");\n/**\n * Applies a limit and a range to a node and uses RangedFilter to do the heavy lifting where possible\n *\n * @constructor\n * @implements {NodeFilter}\n */\nvar LimitedFilter = /** @class */ (function () {\n /**\n * @param {!QueryParams} params\n */\n function LimitedFilter(params) {\n this.rangedFilter_ = new RangedFilter_1.RangedFilter(params);\n this.index_ = params.getIndex();\n this.limit_ = params.getLimit();\n this.reverse_ = !params.isViewFromLeft();\n }\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.rangedFilter_.matches(new Node_1.NamedNode(key, newChild))) {\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n if (snap.getImmediateChild(key).equals(newChild)) {\n // No change\n return snap;\n }\n else if (snap.numChildren() < this.limit_) {\n return this.rangedFilter_\n .getIndexedFilter()\n .updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n }\n else {\n return this.fullLimitUpdateChild_(snap, key, newChild, source, optChangeAccumulator);\n }\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n var filtered;\n if (newSnap.isLeafNode() || newSnap.isEmpty()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n filtered = ChildrenNode_1.ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n }\n else {\n if (this.limit_ * 2 < newSnap.numChildren() &&\n newSnap.isIndexed(this.index_)) {\n // Easier to build up a snapshot, since what we're given has more than twice the elements we want\n filtered = ChildrenNode_1.ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n // anchor to the startPost, endPost, or last element as appropriate\n var iterator = void 0;\n if (this.reverse_) {\n iterator = newSnap.getReverseIteratorFrom(this.rangedFilter_.getEndPost(), this.index_);\n }\n else {\n iterator = newSnap.getIteratorFrom(this.rangedFilter_.getStartPost(), this.index_);\n }\n var count = 0;\n while (iterator.hasNext() && count < this.limit_) {\n var next = iterator.getNext();\n var inRange = void 0;\n if (this.reverse_) {\n inRange =\n this.index_.compare(this.rangedFilter_.getStartPost(), next) <= 0;\n }\n else {\n inRange =\n this.index_.compare(next, this.rangedFilter_.getEndPost()) <= 0;\n }\n if (inRange) {\n filtered = filtered.updateImmediateChild(next.name, next.node);\n count++;\n }\n else {\n // if we have reached the end post, we cannot keep adding elemments\n break;\n }\n }\n }\n else {\n // The snap contains less than twice the limit. Faster to delete from the snap than build up a new one\n filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var startPost = void 0;\n var endPost = void 0;\n var cmp = void 0;\n var iterator = void 0;\n if (this.reverse_) {\n iterator = filtered.getReverseIterator(this.index_);\n startPost = this.rangedFilter_.getEndPost();\n endPost = this.rangedFilter_.getStartPost();\n var indexCompare_1 = this.index_.getCompare();\n cmp = function (a, b) { return indexCompare_1(b, a); };\n }\n else {\n iterator = filtered.getIterator(this.index_);\n startPost = this.rangedFilter_.getStartPost();\n endPost = this.rangedFilter_.getEndPost();\n cmp = this.index_.getCompare();\n }\n var count = 0;\n var foundStartPost = false;\n while (iterator.hasNext()) {\n var next = iterator.getNext();\n if (!foundStartPost && cmp(startPost, next) <= 0) {\n // start adding\n foundStartPost = true;\n }\n var inRange = foundStartPost && count < this.limit_ && cmp(next, endPost) <= 0;\n if (inRange) {\n count++;\n }\n else {\n filtered = filtered.updateImmediateChild(next.name, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n }\n }\n }\n return this.rangedFilter_\n .getIndexedFilter()\n .updateFullNode(oldSnap, filtered, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.filtersNodes = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.getIndexedFilter = function () {\n return this.rangedFilter_.getIndexedFilter();\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @param {!Node} snap\n * @param {string} childKey\n * @param {!Node} childSnap\n * @param {!CompleteChildSource} source\n * @param {?ChildChangeAccumulator} changeAccumulator\n * @return {!Node}\n * @private\n */\n LimitedFilter.prototype.fullLimitUpdateChild_ = function (snap, childKey, childSnap, source, changeAccumulator) {\n // TODO: rename all cache stuff etc to general snap terminology\n var cmp;\n if (this.reverse_) {\n var indexCmp_1 = this.index_.getCompare();\n cmp = function (a, b) { return indexCmp_1(b, a); };\n }\n else {\n cmp = this.index_.getCompare();\n }\n var oldEventCache = snap;\n util_1.assert(oldEventCache.numChildren() == this.limit_, '');\n var newChildNamedNode = new Node_1.NamedNode(childKey, childSnap);\n var windowBoundary = this.reverse_\n ? oldEventCache.getFirstChild(this.index_)\n : oldEventCache.getLastChild(this.index_);\n var inRange = this.rangedFilter_.matches(newChildNamedNode);\n if (oldEventCache.hasChild(childKey)) {\n var oldChildSnap = oldEventCache.getImmediateChild(childKey);\n var nextChild = source.getChildAfterChild(this.index_, windowBoundary, this.reverse_);\n while (nextChild != null &&\n (nextChild.name == childKey || oldEventCache.hasChild(nextChild.name))) {\n // There is a weird edge case where a node is updated as part of a merge in the write tree, but hasn't\n // been applied to the limited filter yet. Ignore this next child which will be updated later in\n // the limited filter...\n nextChild = source.getChildAfterChild(this.index_, nextChild, this.reverse_);\n }\n var compareNext = nextChild == null ? 1 : cmp(nextChild, newChildNamedNode);\n var remainsInWindow = inRange && !childSnap.isEmpty() && compareNext >= 0;\n if (remainsInWindow) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childChangedChange(childKey, childSnap, oldChildSnap));\n }\n return oldEventCache.updateImmediateChild(childKey, childSnap);\n }\n else {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(childKey, oldChildSnap));\n }\n var newEventCache = oldEventCache.updateImmediateChild(childKey, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var nextChildInRange = nextChild != null && this.rangedFilter_.matches(nextChild);\n if (nextChildInRange) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childAddedChange(nextChild.name, nextChild.node));\n }\n return newEventCache.updateImmediateChild(nextChild.name, nextChild.node);\n }\n else {\n return newEventCache;\n }\n }\n }\n else if (childSnap.isEmpty()) {\n // we're deleting a node, but it was not in the window, so ignore it\n return snap;\n }\n else if (inRange) {\n if (cmp(windowBoundary, newChildNamedNode) >= 0) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(windowBoundary.name, windowBoundary.node));\n changeAccumulator.trackChildChange(Change_1.Change.childAddedChange(childKey, childSnap));\n }\n return oldEventCache\n .updateImmediateChild(childKey, childSnap)\n .updateImmediateChild(windowBoundary.name, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n else {\n return snap;\n }\n }\n else {\n return snap;\n }\n };\n return LimitedFilter;\n}());\nexports.LimitedFilter = LimitedFilter;\n\n//# sourceMappingURL=LimitedFilter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/filter/LimitedFilter.js\n// module id = 108\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Reference_1 = require(\"../api/Reference\");\nvar DataSnapshot_1 = require(\"../api/DataSnapshot\");\nvar Path_1 = require(\"./util/Path\");\nvar Tree_1 = require(\"./util/Tree\");\nvar PriorityIndex_1 = require(\"./snap/indexes/PriorityIndex\");\nvar util_2 = require(\"./util/util\");\nvar ServerValues_1 = require(\"./util/ServerValues\");\nvar validation_1 = require(\"./util/validation\");\nvar util_3 = require(\"@firebase/util\");\nvar nodeFromJSON_1 = require(\"./snap/nodeFromJSON\");\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\nvar Repo_1 = require(\"./Repo\");\n// TODO: This is pretty messy. Ideally, a lot of this would move into FirebaseData, or a transaction-specific\n// component used by FirebaseData, but it has ties to user callbacks (transaction update and onComplete) as well\n// as the realtime connection (to send transactions to the server). So that all needs to be decoupled first.\n// For now it's part of Repo, but in its own file.\n/**\n * @enum {number}\n */\nvar TransactionStatus;\n(function (TransactionStatus) {\n // We've run the transaction and updated transactionResultData_ with the result, but it isn't currently sent to the\n // server. A transaction will go from RUN -> SENT -> RUN if it comes back from the server as rejected due to\n // mismatched hash.\n TransactionStatus[TransactionStatus[\"RUN\"] = 0] = \"RUN\";\n // We've run the transaction and sent it to the server and it's currently outstanding (hasn't come back as accepted\n // or rejected yet).\n TransactionStatus[TransactionStatus[\"SENT\"] = 1] = \"SENT\";\n // Temporary state used to mark completed transactions (whether successful or aborted). The transaction will be\n // removed when we get a chance to prune completed ones.\n TransactionStatus[TransactionStatus[\"COMPLETED\"] = 2] = \"COMPLETED\";\n // Used when an already-sent transaction needs to be aborted (e.g. due to a conflicting set() call that was made).\n // If it comes back as unsuccessful, we'll abort it.\n TransactionStatus[TransactionStatus[\"SENT_NEEDS_ABORT\"] = 3] = \"SENT_NEEDS_ABORT\";\n // Temporary state used to mark transactions that need to be aborted.\n TransactionStatus[TransactionStatus[\"NEEDS_ABORT\"] = 4] = \"NEEDS_ABORT\";\n})(TransactionStatus = exports.TransactionStatus || (exports.TransactionStatus = {}));\n/**\n * If a transaction does not succeed after 25 retries, we abort it. Among other things this ensure that if there's\n * ever a bug causing a mismatch between client / server hashes for some data, we won't retry indefinitely.\n * @type {number}\n * @const\n * @private\n */\nRepo_1.Repo.MAX_TRANSACTION_RETRIES_ = 25;\n/**\n * Setup the transaction data structures\n * @private\n */\nRepo_1.Repo.prototype.transactions_init_ = function () {\n /**\n * Stores queues of outstanding transactions for Firebase locations.\n *\n * @type {!Tree.>}\n * @private\n */\n this.transactionQueueTree_ = new Tree_1.Tree();\n};\n/**\n * Creates a new transaction, adds it to the transactions we're tracking, and sends it to the server if possible.\n *\n * @param {!Path} path Path at which to do transaction.\n * @param {function(*):*} transactionUpdate Update callback.\n * @param {?function(?Error, boolean, ?DataSnapshot)} onComplete Completion callback.\n * @param {boolean} applyLocally Whether or not to make intermediate results visible\n */\nRepo_1.Repo.prototype.startTransaction = function (path, transactionUpdate, onComplete, applyLocally) {\n this.log_('transaction on ' + path);\n // Add a watch to make sure we get server updates.\n var valueCallback = function () { };\n var watchRef = new Reference_1.Reference(this, path);\n watchRef.on('value', valueCallback);\n var unwatcher = function () {\n watchRef.off('value', valueCallback);\n };\n // Initialize transaction.\n var transaction = {\n path: path,\n update: transactionUpdate,\n onComplete: onComplete,\n // One of TransactionStatus enums.\n status: null,\n // Used when combining transactions at different locations to figure out which one goes first.\n order: util_2.LUIDGenerator(),\n // Whether to raise local events for this transaction.\n applyLocally: applyLocally,\n // Count of how many times we've retried the transaction.\n retryCount: 0,\n // Function to call to clean up our .on() listener.\n unwatcher: unwatcher,\n // Stores why a transaction was aborted.\n abortReason: null,\n currentWriteId: null,\n currentInputSnapshot: null,\n currentOutputSnapshotRaw: null,\n currentOutputSnapshotResolved: null\n };\n // Run transaction initially.\n var currentState = this.getLatestState_(path);\n transaction.currentInputSnapshot = currentState;\n var newVal = transaction.update(currentState.val());\n if (newVal === undefined) {\n // Abort transaction.\n transaction.unwatcher();\n transaction.currentOutputSnapshotRaw = null;\n transaction.currentOutputSnapshotResolved = null;\n if (transaction.onComplete) {\n // We just set the input snapshot, so this cast should be safe\n var snapshot = new DataSnapshot_1.DataSnapshot(transaction.currentInputSnapshot, new Reference_1.Reference(this, transaction.path), PriorityIndex_1.PRIORITY_INDEX);\n transaction.onComplete(null, false, snapshot);\n }\n }\n else {\n validation_1.validateFirebaseData('transaction failed: Data returned ', newVal, transaction.path);\n // Mark as run and add to our queue.\n transaction.status = TransactionStatus.RUN;\n var queueNode = this.transactionQueueTree_.subTree(path);\n var nodeQueue = queueNode.getValue() || [];\n nodeQueue.push(transaction);\n queueNode.setValue(nodeQueue);\n // Update visibleData and raise events\n // Note: We intentionally raise events after updating all of our transaction state, since the user could\n // start new transactions from the event callbacks.\n var priorityForNode = void 0;\n if (typeof newVal === 'object' &&\n newVal !== null &&\n util_3.contains(newVal, '.priority')) {\n priorityForNode = util_3.safeGet(newVal, '.priority');\n util_1.assert(validation_1.isValidPriority(priorityForNode), 'Invalid priority returned by transaction. ' +\n 'Priority must be a valid string, finite number, server value, or null.');\n }\n else {\n var currentNode = this.serverSyncTree_.calcCompleteEventCache(path) ||\n ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n priorityForNode = currentNode.getPriority().val();\n }\n priorityForNode /** @type {null|number|string} */ = priorityForNode;\n var serverValues = this.generateServerValues();\n var newNodeUnresolved = nodeFromJSON_1.nodeFromJSON(newVal, priorityForNode);\n var newNode = ServerValues_1.resolveDeferredValueSnapshot(newNodeUnresolved, serverValues);\n transaction.currentOutputSnapshotRaw = newNodeUnresolved;\n transaction.currentOutputSnapshotResolved = newNode;\n transaction.currentWriteId = this.getNextWriteId_();\n var events = this.serverSyncTree_.applyUserOverwrite(path, newNode, transaction.currentWriteId, transaction.applyLocally);\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n this.sendReadyTransactions_();\n }\n};\n/**\n * @param {!Path} path\n * @param {Array.=} excludeSets A specific set to exclude\n * @return {Node}\n * @private\n */\nRepo_1.Repo.prototype.getLatestState_ = function (path, excludeSets) {\n return (this.serverSyncTree_.calcCompleteEventCache(path, excludeSets) ||\n ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n};\n/**\n * Sends any already-run transactions that aren't waiting for outstanding transactions to\n * complete.\n *\n * Externally it's called with no arguments, but it calls itself recursively with a particular\n * transactionQueueTree node to recurse through the tree.\n *\n * @param {Tree.>=} node transactionQueueTree node to start at.\n * @private\n */\nRepo_1.Repo.prototype.sendReadyTransactions_ = function (node) {\n var _this = this;\n if (node === void 0) { node = this.transactionQueueTree_; }\n // Before recursing, make sure any completed transactions are removed.\n if (!node) {\n this.pruneCompletedTransactionsBelowNode_(node);\n }\n if (node.getValue() !== null) {\n var queue = this.buildTransactionQueue_(node);\n util_1.assert(queue.length > 0, 'Sending zero length transaction queue');\n var allRun = queue.every(function (transaction) { return transaction.status === TransactionStatus.RUN; });\n // If they're all run (and not sent), we can send them. Else, we must wait.\n if (allRun) {\n this.sendTransactionQueue_(node.path(), queue);\n }\n }\n else if (node.hasChildren()) {\n node.forEachChild(function (childNode) {\n _this.sendReadyTransactions_(childNode);\n });\n }\n};\n/**\n * Given a list of run transactions, send them to the server and then handle the result (success or failure).\n *\n * @param {!Path} path The location of the queue.\n * @param {!Array.} queue Queue of transactions under the specified location.\n * @private\n */\nRepo_1.Repo.prototype.sendTransactionQueue_ = function (path, queue) {\n var _this = this;\n // Mark transactions as sent and increment retry count!\n var setsToIgnore = queue.map(function (txn) {\n return txn.currentWriteId;\n });\n var latestState = this.getLatestState_(path, setsToIgnore);\n var snapToSend = latestState;\n var latestHash = latestState.hash();\n for (var i = 0; i < queue.length; i++) {\n var txn = queue[i];\n util_1.assert(txn.status === TransactionStatus.RUN, 'tryToSendTransactionQueue_: items in queue should all be run.');\n txn.status = TransactionStatus.SENT;\n txn.retryCount++;\n var relativePath = Path_1.Path.relativePath(path, txn.path);\n // If we've gotten to this point, the output snapshot must be defined.\n snapToSend = snapToSend.updateChild(relativePath /**@type {!Node} */, txn.currentOutputSnapshotRaw);\n }\n var dataToSend = snapToSend.val(true);\n var pathToSend = path;\n // Send the put.\n this.server_.put(pathToSend.toString(), dataToSend, function (status) {\n _this.log_('transaction put response', {\n path: pathToSend.toString(),\n status: status\n });\n var events = [];\n if (status === 'ok') {\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n for (var i = 0; i < queue.length; i++) {\n queue[i].status = TransactionStatus.COMPLETED;\n events = events.concat(_this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId));\n if (queue[i].onComplete) {\n // We never unset the output snapshot, and given that this transaction is complete, it should be set\n var node = queue[i].currentOutputSnapshotResolved;\n var ref = new Reference_1.Reference(_this, queue[i].path);\n var snapshot = new DataSnapshot_1.DataSnapshot(node, ref, PriorityIndex_1.PRIORITY_INDEX);\n callbacks.push(queue[i].onComplete.bind(null, null, true, snapshot));\n }\n queue[i].unwatcher();\n }\n // Now remove the completed transactions.\n _this.pruneCompletedTransactionsBelowNode_(_this.transactionQueueTree_.subTree(path));\n // There may be pending transactions that we can now send.\n _this.sendReadyTransactions_();\n _this.eventQueue_.raiseEventsForChangedPath(path, events);\n // Finally, trigger onComplete callbacks.\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n }\n else {\n // transactions are no longer sent. Update their status appropriately.\n if (status === 'datastale') {\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT)\n queue[i].status = TransactionStatus.NEEDS_ABORT;\n else\n queue[i].status = TransactionStatus.RUN;\n }\n }\n else {\n util_2.warn('transaction at ' + pathToSend.toString() + ' failed: ' + status);\n for (var i = 0; i < queue.length; i++) {\n queue[i].status = TransactionStatus.NEEDS_ABORT;\n queue[i].abortReason = status;\n }\n }\n _this.rerunTransactions_(path);\n }\n }, latestHash);\n};\n/**\n * Finds all transactions dependent on the data at changedPath and reruns them.\n *\n * Should be called any time cached data changes.\n *\n * Return the highest path that was affected by rerunning transactions. This is the path at which events need to\n * be raised for.\n *\n * @param {!Path} changedPath The path in mergedData that changed.\n * @return {!Path} The rootmost path that was affected by rerunning transactions.\n * @private\n */\nRepo_1.Repo.prototype.rerunTransactions_ = function (changedPath) {\n var rootMostTransactionNode = this.getAncestorTransactionNode_(changedPath);\n var path = rootMostTransactionNode.path();\n var queue = this.buildTransactionQueue_(rootMostTransactionNode);\n this.rerunTransactionQueue_(queue, path);\n return path;\n};\n/**\n * Does all the work of rerunning transactions (as well as cleans up aborted transactions and whatnot).\n *\n * @param {Array.} queue The queue of transactions to run.\n * @param {!Path} path The path the queue is for.\n * @private\n */\nRepo_1.Repo.prototype.rerunTransactionQueue_ = function (queue, path) {\n if (queue.length === 0) {\n return; // Nothing to do!\n }\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n var events = [];\n // Ignore all of the sets we're going to re-run.\n var txnsToRerun = queue.filter(function (q) {\n return q.status === TransactionStatus.RUN;\n });\n var setsToIgnore = txnsToRerun.map(function (q) {\n return q.currentWriteId;\n });\n for (var i = 0; i < queue.length; i++) {\n var transaction = queue[i];\n var relativePath = Path_1.Path.relativePath(path, transaction.path);\n var abortTransaction = false, abortReason = void 0;\n util_1.assert(relativePath !== null, 'rerunTransactionsUnderNode_: relativePath should not be null.');\n if (transaction.status === TransactionStatus.NEEDS_ABORT) {\n abortTransaction = true;\n abortReason = transaction.abortReason;\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n else if (transaction.status === TransactionStatus.RUN) {\n if (transaction.retryCount >= Repo_1.Repo.MAX_TRANSACTION_RETRIES_) {\n abortTransaction = true;\n abortReason = 'maxretry';\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n else {\n // This code reruns a transaction\n var currentNode = this.getLatestState_(transaction.path, setsToIgnore);\n transaction.currentInputSnapshot = currentNode;\n var newData = queue[i].update(currentNode.val());\n if (newData !== undefined) {\n validation_1.validateFirebaseData('transaction failed: Data returned ', newData, transaction.path);\n var newDataNode = nodeFromJSON_1.nodeFromJSON(newData);\n var hasExplicitPriority = typeof newData === 'object' &&\n newData != null &&\n util_3.contains(newData, '.priority');\n if (!hasExplicitPriority) {\n // Keep the old priority if there wasn't a priority explicitly specified.\n newDataNode = newDataNode.updatePriority(currentNode.getPriority());\n }\n var oldWriteId = transaction.currentWriteId;\n var serverValues = this.generateServerValues();\n var newNodeResolved = ServerValues_1.resolveDeferredValueSnapshot(newDataNode, serverValues);\n transaction.currentOutputSnapshotRaw = newDataNode;\n transaction.currentOutputSnapshotResolved = newNodeResolved;\n transaction.currentWriteId = this.getNextWriteId_();\n // Mutates setsToIgnore in place\n setsToIgnore.splice(setsToIgnore.indexOf(oldWriteId), 1);\n events = events.concat(this.serverSyncTree_.applyUserOverwrite(transaction.path, newNodeResolved, transaction.currentWriteId, transaction.applyLocally));\n events = events.concat(this.serverSyncTree_.ackUserWrite(oldWriteId, true));\n }\n else {\n abortTransaction = true;\n abortReason = 'nodata';\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n }\n }\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n events = [];\n if (abortTransaction) {\n // Abort.\n queue[i].status = TransactionStatus.COMPLETED;\n // Removing a listener can trigger pruning which can muck with mergedData/visibleData (as it prunes data).\n // So defer the unwatcher until we're done.\n (function (unwatcher) {\n setTimeout(unwatcher, Math.floor(0));\n })(queue[i].unwatcher);\n if (queue[i].onComplete) {\n if (abortReason === 'nodata') {\n var ref = new Reference_1.Reference(this, queue[i].path);\n // We set this field immediately, so it's safe to cast to an actual snapshot\n var lastInput /** @type {!Node} */ = queue[i].currentInputSnapshot;\n var snapshot = new DataSnapshot_1.DataSnapshot(lastInput, ref, PriorityIndex_1.PRIORITY_INDEX);\n callbacks.push(queue[i].onComplete.bind(null, null, false, snapshot));\n }\n else {\n callbacks.push(queue[i].onComplete.bind(null, new Error(abortReason), false, null));\n }\n }\n }\n }\n // Clean up completed transactions.\n this.pruneCompletedTransactionsBelowNode_(this.transactionQueueTree_);\n // Now fire callbacks, now that we're in a good, known state.\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n // Try to send the transaction result to the server.\n this.sendReadyTransactions_();\n};\n/**\n * Returns the rootmost ancestor node of the specified path that has a pending transaction on it, or just returns\n * the node for the given path if there are no pending transactions on any ancestor.\n *\n * @param {!Path} path The location to start at.\n * @return {!Tree.>} The rootmost node with a transaction.\n * @private\n */\nRepo_1.Repo.prototype.getAncestorTransactionNode_ = function (path) {\n var front;\n // Start at the root and walk deeper into the tree towards path until we find a node with pending transactions.\n var transactionNode = this.transactionQueueTree_;\n while ((front = path.getFront()) !== null &&\n transactionNode.getValue() === null) {\n transactionNode = transactionNode.subTree(front);\n path = path.popFront();\n }\n return transactionNode;\n};\n/**\n * Builds the queue of all transactions at or below the specified transactionNode.\n *\n * @param {!Tree.>} transactionNode\n * @return {Array.} The generated queue.\n * @private\n */\nRepo_1.Repo.prototype.buildTransactionQueue_ = function (transactionNode) {\n // Walk any child transaction queues and aggregate them into a single queue.\n var transactionQueue = [];\n this.aggregateTransactionQueuesForNode_(transactionNode, transactionQueue);\n // Sort them by the order the transactions were created.\n transactionQueue.sort(function (a, b) {\n return a.order - b.order;\n });\n return transactionQueue;\n};\n/**\n * @param {!Tree.>} node\n * @param {Array.} queue\n * @private\n */\nRepo_1.Repo.prototype.aggregateTransactionQueuesForNode_ = function (node, queue) {\n var _this = this;\n var nodeQueue = node.getValue();\n if (nodeQueue !== null) {\n for (var i = 0; i < nodeQueue.length; i++) {\n queue.push(nodeQueue[i]);\n }\n }\n node.forEachChild(function (child) {\n _this.aggregateTransactionQueuesForNode_(child, queue);\n });\n};\n/**\n * Remove COMPLETED transactions at or below this node in the transactionQueueTree_.\n *\n * @param {!Tree.>} node\n * @private\n */\nRepo_1.Repo.prototype.pruneCompletedTransactionsBelowNode_ = function (node) {\n var _this = this;\n var queue = node.getValue();\n if (queue) {\n var to = 0;\n for (var from = 0; from < queue.length; from++) {\n if (queue[from].status !== TransactionStatus.COMPLETED) {\n queue[to] = queue[from];\n to++;\n }\n }\n queue.length = to;\n node.setValue(queue.length > 0 ? queue : null);\n }\n node.forEachChild(function (childNode) {\n _this.pruneCompletedTransactionsBelowNode_(childNode);\n });\n};\n/**\n * Aborts all transactions on ancestors or descendants of the specified path. Called when doing a set() or update()\n * since we consider them incompatible with transactions.\n *\n * @param {!Path} path Path for which we want to abort related transactions.\n * @return {!Path}\n * @private\n */\nRepo_1.Repo.prototype.abortTransactions_ = function (path) {\n var _this = this;\n var affectedPath = this.getAncestorTransactionNode_(path).path();\n var transactionNode = this.transactionQueueTree_.subTree(path);\n transactionNode.forEachAncestor(function (node) {\n _this.abortTransactionsOnNode_(node);\n });\n this.abortTransactionsOnNode_(transactionNode);\n transactionNode.forEachDescendant(function (node) {\n _this.abortTransactionsOnNode_(node);\n });\n return affectedPath;\n};\n/**\n * Abort transactions stored in this transaction queue node.\n *\n * @param {!Tree.>} node Node to abort transactions for.\n * @private\n */\nRepo_1.Repo.prototype.abortTransactionsOnNode_ = function (node) {\n var queue = node.getValue();\n if (queue !== null) {\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n // Go through queue. Any already-sent transactions must be marked for abort, while the unsent ones\n // can be immediately aborted and removed.\n var events = [];\n var lastSent = -1;\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT) {\n // Already marked. No action needed.\n }\n else if (queue[i].status === TransactionStatus.SENT) {\n util_1.assert(lastSent === i - 1, 'All SENT items should be at beginning of queue.');\n lastSent = i;\n // Mark transaction for abort when it comes back.\n queue[i].status = TransactionStatus.SENT_NEEDS_ABORT;\n queue[i].abortReason = 'set';\n }\n else {\n util_1.assert(queue[i].status === TransactionStatus.RUN, 'Unexpected transaction status in abort');\n // We can abort it immediately.\n queue[i].unwatcher();\n events = events.concat(this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId, true));\n if (queue[i].onComplete) {\n var snapshot = null;\n callbacks.push(queue[i].onComplete.bind(null, new Error('set'), false, snapshot));\n }\n }\n }\n if (lastSent === -1) {\n // We're not waiting for any sent transactions. We can clear the queue.\n node.setValue(null);\n }\n else {\n // Remove the transactions we aborted.\n queue.length = lastSent + 1;\n }\n // Now fire the callbacks.\n this.eventQueue_.raiseEventsForChangedPath(node.path(), events);\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n }\n};\n\n//# sourceMappingURL=Repo_transaction.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/Repo_transaction.js\n// module id = 109\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Path_1 = require(\"./Path\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * Node in a Tree.\n */\nvar TreeNode = /** @class */ (function () {\n function TreeNode() {\n // TODO: Consider making accessors that create children and value lazily or\n // separate Internal / Leaf 'types'.\n this.children = {};\n this.childCount = 0;\n this.value = null;\n }\n return TreeNode;\n}());\nexports.TreeNode = TreeNode;\n/**\n * A light-weight tree, traversable by path. Nodes can have both values and children.\n * Nodes are not enumerated (by forEachChild) unless they have a value or non-empty\n * children.\n */\nvar Tree = /** @class */ (function () {\n /**\n * @template T\n * @param {string=} name_ Optional name of the node.\n * @param {Tree=} parent_ Optional parent node.\n * @param {TreeNode=} node_ Optional node to wrap.\n */\n function Tree(name_, parent_, node_) {\n if (name_ === void 0) { name_ = ''; }\n if (parent_ === void 0) { parent_ = null; }\n if (node_ === void 0) { node_ = new TreeNode(); }\n this.name_ = name_;\n this.parent_ = parent_;\n this.node_ = node_;\n }\n /**\n * Returns a sub-Tree for the given path.\n *\n * @param {!(string|Path)} pathObj Path to look up.\n * @return {!Tree.} Tree for path.\n */\n Tree.prototype.subTree = function (pathObj) {\n // TODO: Require pathObj to be Path?\n var path = pathObj instanceof Path_1.Path ? pathObj : new Path_1.Path(pathObj);\n var child = this, next;\n while ((next = path.getFront()) !== null) {\n var childNode = util_2.safeGet(child.node_.children, next) || new TreeNode();\n child = new Tree(next, child, childNode);\n path = path.popFront();\n }\n return child;\n };\n /**\n * Returns the data associated with this tree node.\n *\n * @return {?T} The data or null if no data exists.\n */\n Tree.prototype.getValue = function () {\n return this.node_.value;\n };\n /**\n * Sets data to this tree node.\n *\n * @param {!T} value Value to set.\n */\n Tree.prototype.setValue = function (value) {\n util_1.assert(typeof value !== 'undefined', 'Cannot set value to undefined');\n this.node_.value = value;\n this.updateParents_();\n };\n /**\n * Clears the contents of the tree node (its value and all children).\n */\n Tree.prototype.clear = function () {\n this.node_.value = null;\n this.node_.children = {};\n this.node_.childCount = 0;\n this.updateParents_();\n };\n /**\n * @return {boolean} Whether the tree has any children.\n */\n Tree.prototype.hasChildren = function () {\n return this.node_.childCount > 0;\n };\n /**\n * @return {boolean} Whether the tree is empty (no value or children).\n */\n Tree.prototype.isEmpty = function () {\n return this.getValue() === null && !this.hasChildren();\n };\n /**\n * Calls action for each child of this tree node.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n */\n Tree.prototype.forEachChild = function (action) {\n var _this = this;\n util_2.forEach(this.node_.children, function (child, childTree) {\n action(new Tree(child, _this, childTree));\n });\n };\n /**\n * Does a depth-first traversal of this node's descendants, calling action for each one.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n * @param {boolean=} includeSelf Whether to call action on this node as well. Defaults to\n * false.\n * @param {boolean=} childrenFirst Whether to call action on children before calling it on\n * parent.\n */\n Tree.prototype.forEachDescendant = function (action, includeSelf, childrenFirst) {\n if (includeSelf && !childrenFirst)\n action(this);\n this.forEachChild(function (child) {\n child.forEachDescendant(action, /*includeSelf=*/ true, childrenFirst);\n });\n if (includeSelf && childrenFirst)\n action(this);\n };\n /**\n * Calls action on each ancestor node.\n *\n * @param {function(!Tree.)} action Action to be called on each parent; return\n * true to abort.\n * @param {boolean=} includeSelf Whether to call action on this node as well.\n * @return {boolean} true if the action callback returned true.\n */\n Tree.prototype.forEachAncestor = function (action, includeSelf) {\n var node = includeSelf ? this : this.parent();\n while (node !== null) {\n if (action(node)) {\n return true;\n }\n node = node.parent();\n }\n return false;\n };\n /**\n * Does a depth-first traversal of this node's descendants. When a descendant with a value\n * is found, action is called on it and traversal does not continue inside the node.\n * Action is *not* called on this node.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n */\n Tree.prototype.forEachImmediateDescendantWithValue = function (action) {\n this.forEachChild(function (child) {\n if (child.getValue() !== null)\n action(child);\n else\n child.forEachImmediateDescendantWithValue(action);\n });\n };\n /**\n * @return {!Path} The path of this tree node, as a Path.\n */\n Tree.prototype.path = function () {\n return new Path_1.Path(this.parent_ === null\n ? this.name_\n : this.parent_.path() + '/' + this.name_);\n };\n /**\n * @return {string} The name of the tree node.\n */\n Tree.prototype.name = function () {\n return this.name_;\n };\n /**\n * @return {?Tree} The parent tree node, or null if this is the root of the tree.\n */\n Tree.prototype.parent = function () {\n return this.parent_;\n };\n /**\n * Adds or removes this child from its parent based on whether it's empty or not.\n *\n * @private\n */\n Tree.prototype.updateParents_ = function () {\n if (this.parent_ !== null)\n this.parent_.updateChild_(this.name_, this);\n };\n /**\n * Adds or removes the passed child to this tree node, depending on whether it's empty.\n *\n * @param {string} childName The name of the child to update.\n * @param {!Tree.} child The child to update.\n * @private\n */\n Tree.prototype.updateChild_ = function (childName, child) {\n var childEmpty = child.isEmpty();\n var childExists = util_2.contains(this.node_.children, childName);\n if (childEmpty && childExists) {\n delete this.node_.children[childName];\n this.node_.childCount--;\n this.updateParents_();\n }\n else if (!childEmpty && !childExists) {\n this.node_.children[childName] = child.node_;\n this.node_.childCount++;\n this.updateParents_();\n }\n };\n return Tree;\n}());\nexports.Tree = Tree;\n\n//# sourceMappingURL=Tree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/Tree.js\n// module id = 110\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar WebSocketConnection_1 = require(\"../realtime/WebSocketConnection\");\nvar BrowserPollConnection_1 = require(\"../realtime/BrowserPollConnection\");\n/**\n * INTERNAL methods for internal-use only (tests, etc.).\n *\n * Customers shouldn't use these or else should be aware that they could break at any time.\n *\n * @const\n */\nexports.forceLongPolling = function () {\n WebSocketConnection_1.WebSocketConnection.forceDisallow();\n BrowserPollConnection_1.BrowserPollConnection.forceAllow();\n};\nexports.forceWebSockets = function () {\n BrowserPollConnection_1.BrowserPollConnection.forceDisallow();\n};\n/* Used by App Manager */\nexports.isWebSocketsAvailable = function () {\n return WebSocketConnection_1.WebSocketConnection['isAvailable']();\n};\nexports.setSecurityDebugCallback = function (ref, callback) {\n ref.repo.persistentConnection_.securityDebugCallback_ = callback;\n};\nexports.stats = function (ref, showDelta) {\n ref.repo.stats(showDelta);\n};\nexports.statsIncrementCounter = function (ref, metric) {\n ref.repo.statsIncrementCounter(metric);\n};\nexports.dataUpdateCount = function (ref) {\n return ref.repo.dataUpdateCount;\n};\nexports.interceptServerData = function (ref, callback) {\n return ref.repo.interceptServerData_(callback);\n};\n\n//# sourceMappingURL=internal.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/internal.js\n// module id = 111\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RepoInfo_1 = require(\"../core/RepoInfo\");\nvar PersistentConnection_1 = require(\"../core/PersistentConnection\");\nvar RepoManager_1 = require(\"../core/RepoManager\");\nvar Connection_1 = require(\"../realtime/Connection\");\nexports.DataConnection = PersistentConnection_1.PersistentConnection;\n/**\n * @param {!string} pathString\n * @param {function(*)} onComplete\n */\nPersistentConnection_1.PersistentConnection.prototype.simpleListen = function (pathString, onComplete) {\n this.sendRequest('q', { p: pathString }, onComplete);\n};\n/**\n * @param {*} data\n * @param {function(*)} onEcho\n */\nPersistentConnection_1.PersistentConnection.prototype.echo = function (data, onEcho) {\n this.sendRequest('echo', { d: data }, onEcho);\n};\n// RealTimeConnection properties that we use in tests.\nexports.RealTimeConnection = Connection_1.Connection;\n/**\n * @param {function(): string} newHash\n * @return {function()}\n */\nexports.hijackHash = function (newHash) {\n var oldPut = PersistentConnection_1.PersistentConnection.prototype.put;\n PersistentConnection_1.PersistentConnection.prototype.put = function (pathString, data, opt_onComplete, opt_hash) {\n if (opt_hash !== undefined) {\n opt_hash = newHash();\n }\n oldPut.call(this, pathString, data, opt_onComplete, opt_hash);\n };\n return function () {\n PersistentConnection_1.PersistentConnection.prototype.put = oldPut;\n };\n};\n/**\n * @type {function(new:RepoInfo, !string, boolean, !string, boolean): undefined}\n */\nexports.ConnectionTarget = RepoInfo_1.RepoInfo;\n/**\n * @param {!Query} query\n * @return {!string}\n */\nexports.queryIdentifier = function (query) {\n return query.queryIdentifier();\n};\n/**\n * @param {!Query} firebaseRef\n * @return {!Object}\n */\nexports.listens = function (firebaseRef) {\n return firebaseRef.repo.persistentConnection_.listens_;\n};\n/**\n * Forces the RepoManager to create Repos that use ReadonlyRestClient instead of PersistentConnection.\n *\n * @param {boolean} forceRestClient\n */\nexports.forceRestClient = function (forceRestClient) {\n RepoManager_1.RepoManager.getInstance().forceRestClient(forceRestClient);\n};\n\n//# sourceMappingURL=test_access.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/test_access.js\n// module id = 112\n// module chunks = 0","/*!\n * @license Firebase v4.5.2\n * Build: rev-646dbb2\n * Terms: https://firebase.google.com/terms/\n */\ntry {\n webpackJsonpFirebase([3],{\n\n/***/ 116:\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n__webpack_require__(117);\n\n\n/***/ }),\n\n/***/ 117:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n// EXTERNAL MODULE: ../util/dist/cjs/index.js\nvar cjs = __webpack_require__(0);\nvar cjs_default = /*#__PURE__*/__webpack_require__.n(cjs);\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/errors.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar CODES = {\n AVAILABLE_IN_WINDOW: 'only-available-in-window',\n AVAILABLE_IN_SW: 'only-available-in-sw',\n SHOULD_BE_INHERITED: 'should-be-overriden',\n BAD_SENDER_ID: 'bad-sender-id',\n INCORRECT_GCM_SENDER_ID: 'incorrect-gcm-sender-id',\n PERMISSION_DEFAULT: 'permission-default',\n PERMISSION_BLOCKED: 'permission-blocked',\n UNSUPPORTED_BROWSER: 'unsupported-browser',\n NOTIFICATIONS_BLOCKED: 'notifications-blocked',\n FAILED_DEFAULT_REGISTRATION: 'failed-serviceworker-registration',\n SW_REGISTRATION_EXPECTED: 'sw-registration-expected',\n GET_SUBSCRIPTION_FAILED: 'get-subscription-failed',\n INVALID_SAVED_TOKEN: 'invalid-saved-token',\n SW_REG_REDUNDANT: 'sw-reg-redundant',\n TOKEN_SUBSCRIBE_FAILED: 'token-subscribe-failed',\n TOKEN_SUBSCRIBE_NO_TOKEN: 'token-subscribe-no-token',\n TOKEN_SUBSCRIBE_NO_PUSH_SET: 'token-subscribe-no-push-set',\n USE_SW_BEFORE_GET_TOKEN: 'use-sw-before-get-token',\n INVALID_DELETE_TOKEN: 'invalid-delete-token',\n DELETE_TOKEN_NOT_FOUND: 'delete-token-not-found',\n DELETE_SCOPE_NOT_FOUND: 'delete-scope-not-found',\n BG_HANDLER_FUNCTION_EXPECTED: 'bg-handler-function-expected',\n NO_WINDOW_CLIENT_TO_MSG: 'no-window-client-to-msg',\n UNABLE_TO_RESUBSCRIBE: 'unable-to-resubscribe',\n NO_FCM_TOKEN_FOR_RESUBSCRIBE: 'no-fcm-token-for-resubscribe',\n FAILED_TO_DELETE_TOKEN: 'failed-to-delete-token',\n NO_SW_IN_REG: 'no-sw-in-reg',\n BAD_SCOPE: 'bad-scope',\n BAD_VAPID_KEY: 'bad-vapid-key',\n BAD_SUBSCRIPTION: 'bad-subscription',\n BAD_TOKEN: 'bad-token',\n BAD_PUSH_SET: 'bad-push-set',\n FAILED_DELETE_VAPID_KEY: 'failed-delete-vapid-key'\n};\nvar ERROR_MAP = (_a = {},\n _a[CODES.AVAILABLE_IN_WINDOW] = 'This method is available in a Window context.',\n _a[CODES.AVAILABLE_IN_SW] = 'This method is available in a service worker ' + 'context.',\n _a[CODES.SHOULD_BE_INHERITED] = 'This method should be overriden by ' + 'extended classes.',\n _a[CODES.BAD_SENDER_ID] = \"Please ensure that 'messagingSenderId' is set \" +\n 'correctly in the options passed into firebase.initializeApp().',\n _a[CODES.PERMISSION_DEFAULT] = 'The required permissions were not granted and ' + 'dismissed instead.',\n _a[CODES.PERMISSION_BLOCKED] = 'The required permissions were not granted and ' + 'blocked instead.',\n _a[CODES.UNSUPPORTED_BROWSER] = \"This browser doesn't support the API's \" +\n 'required to use the firebase SDK.',\n _a[CODES.NOTIFICATIONS_BLOCKED] = 'Notifications have been blocked.',\n _a[CODES.FAILED_DEFAULT_REGISTRATION] = 'We are unable to register the ' +\n 'default service worker. {$browserErrorMessage}',\n _a[CODES.SW_REGISTRATION_EXPECTED] = 'A service worker registration was the ' + 'expected input.',\n _a[CODES.GET_SUBSCRIPTION_FAILED] = 'There was an error when trying to get ' +\n 'any existing Push Subscriptions.',\n _a[CODES.INVALID_SAVED_TOKEN] = 'Unable to access details of the saved token.',\n _a[CODES.SW_REG_REDUNDANT] = 'The service worker being used for push was made ' + 'redundant.',\n _a[CODES.TOKEN_SUBSCRIBE_FAILED] = 'A problem occured while subscribing the ' + 'user to FCM: {$message}',\n _a[CODES.TOKEN_SUBSCRIBE_NO_TOKEN] = 'FCM returned no token when subscribing ' + 'the user to push.',\n _a[CODES.TOKEN_SUBSCRIBE_NO_PUSH_SET] = 'FCM returned an invalid response ' + 'when getting an FCM token.',\n _a[CODES.USE_SW_BEFORE_GET_TOKEN] = 'You must call useServiceWorker() before ' +\n 'calling getToken() to ensure your service worker is used.',\n _a[CODES.INVALID_DELETE_TOKEN] = 'You must pass a valid token into ' +\n 'deleteToken(), i.e. the token from getToken().',\n _a[CODES.DELETE_TOKEN_NOT_FOUND] = 'The deletion attempt for token could not ' +\n 'be performed as the token was not found.',\n _a[CODES.DELETE_SCOPE_NOT_FOUND] = 'The deletion attempt for service worker ' +\n 'scope could not be performed as the scope was not found.',\n _a[CODES.BG_HANDLER_FUNCTION_EXPECTED] = 'The input to ' + 'setBackgroundMessageHandler() must be a function.',\n _a[CODES.NO_WINDOW_CLIENT_TO_MSG] = 'An attempt was made to message a ' + 'non-existant window client.',\n _a[CODES.UNABLE_TO_RESUBSCRIBE] = 'There was an error while re-subscribing ' +\n 'the FCM token for push messaging. Will have to resubscribe the ' +\n 'user on next visit. {$message}',\n _a[CODES.NO_FCM_TOKEN_FOR_RESUBSCRIBE] = 'Could not find an FCM token ' +\n 'and as a result, unable to resubscribe. Will have to resubscribe the ' +\n 'user on next visit.',\n _a[CODES.FAILED_TO_DELETE_TOKEN] = 'Unable to delete the currently saved token.',\n _a[CODES.NO_SW_IN_REG] = 'Even though the service worker registration was ' +\n 'successful, there was a problem accessing the service worker itself.',\n _a[CODES.INCORRECT_GCM_SENDER_ID] = \"Please change your web app manifest's \" +\n \"'gcm_sender_id' value to '103953800507' to use Firebase messaging.\",\n _a[CODES.BAD_SCOPE] = 'The service worker scope must be a string with at ' +\n 'least one character.',\n _a[CODES.BAD_VAPID_KEY] = 'The public VAPID key must be a string with at ' + 'least one character.',\n _a[CODES.BAD_SUBSCRIPTION] = 'The subscription must be a valid ' + 'PushSubscription.',\n _a[CODES.BAD_TOKEN] = 'The FCM Token used for storage / lookup was not ' +\n 'a valid token string.',\n _a[CODES.BAD_PUSH_SET] = 'The FCM push set used for storage / lookup was not ' +\n 'not a valid push set string.',\n _a[CODES.FAILED_DELETE_VAPID_KEY] = 'The VAPID key could not be deleted.',\n _a);\n/* harmony default export */ var errors = ({\n codes: CODES,\n map: ERROR_MAP\n});\nvar _a;\n\n//# sourceMappingURL=errors.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/helpers/array-buffer-to-base64.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction toBase64(arrayBuffer) {\n var uint8Version = new Uint8Array(arrayBuffer);\n return window.btoa(String.fromCharCode.apply(null, uint8Version));\n}\n/* harmony default export */ var array_buffer_to_base64 = (function (arrayBuffer) {\n var base64String = toBase64(arrayBuffer);\n return base64String\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n});;\n\n//# sourceMappingURL=array-buffer-to-base64.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/fcm-details.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar FCM_APPLICATION_SERVER_KEY = [\n 0x04,\n 0x33,\n 0x94,\n 0xf7,\n 0xdf,\n 0xa1,\n 0xeb,\n 0xb1,\n 0xdc,\n 0x03,\n 0xa2,\n 0x5e,\n 0x15,\n 0x71,\n 0xdb,\n 0x48,\n 0xd3,\n 0x2e,\n 0xed,\n 0xed,\n 0xb2,\n 0x34,\n 0xdb,\n 0xb7,\n 0x47,\n 0x3a,\n 0x0c,\n 0x8f,\n 0xc4,\n 0xcc,\n 0xe1,\n 0x6f,\n 0x3c,\n 0x8c,\n 0x84,\n 0xdf,\n 0xab,\n 0xb6,\n 0x66,\n 0x3e,\n 0xf2,\n 0x0c,\n 0xd4,\n 0x8b,\n 0xfe,\n 0xe3,\n 0xf9,\n 0x76,\n 0x2f,\n 0x14,\n 0x1c,\n 0x63,\n 0x08,\n 0x6a,\n 0x6f,\n 0x2d,\n 0xb1,\n 0x1a,\n 0x95,\n 0xb0,\n 0xce,\n 0x37,\n 0xc0,\n 0x9c,\n 0x6e\n];\nvar SUBSCRIPTION_DETAILS = {\n userVisibleOnly: true,\n applicationServerKey: new Uint8Array(FCM_APPLICATION_SERVER_KEY)\n};\n/* harmony default export */ var fcm_details = ({\n ENDPOINT: 'https://fcm.googleapis.com',\n APPLICATION_SERVER_KEY: FCM_APPLICATION_SERVER_KEY,\n SUBSCRIPTION_OPTIONS: SUBSCRIPTION_DETAILS\n});\n\n//# sourceMappingURL=fcm-details.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/token-manager.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\nvar FCM_TOKEN_DETAILS_DB = 'fcm_token_details_db';\nvar FCM_TOKEN_OBJ_STORE = 'fcm_token_object_Store';\nvar FCM_TOKEN_DETAILS_DB_VERSION = 1;\nvar token_manager_TokenManager = /** @class */ (function () {\n function TokenManager() {\n this.errorFactory_ = new cjs[\"ErrorFactory\"]('messaging', 'Messaging', errors.map);\n this.openDbPromise_ = null;\n }\n /**\n * Get the indexedDB as a promsie.\n * @private\n * @return {Promise} The IndexedDB database\n */\n TokenManager.prototype.openDatabase_ = function () {\n if (this.openDbPromise_) {\n return this.openDbPromise_;\n }\n this.openDbPromise_ = new Promise(function (resolve, reject) {\n var request = indexedDB.open(FCM_TOKEN_DETAILS_DB, FCM_TOKEN_DETAILS_DB_VERSION);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve(event.target.result);\n };\n request.onupgradeneeded = function (event) {\n var db = event.target.result;\n var objectStore = db.createObjectStore(FCM_TOKEN_OBJ_STORE, {\n keyPath: 'swScope'\n });\n // Make sure the sender ID can be searched\n objectStore.createIndex('fcmSenderId', 'fcmSenderId', {\n unique: false\n });\n objectStore.createIndex('fcmToken', 'fcmToken', {\n unique: true\n });\n };\n });\n return this.openDbPromise_;\n };\n /**\n * Close the currently open database.\n * @return {Promise} Returns the result of the promise chain.\n */\n TokenManager.prototype.closeDatabase = function () {\n var _this = this;\n if (this.openDbPromise_) {\n return this.openDbPromise_.then(function (db) {\n db.close();\n _this.openDbPromise_ = null;\n });\n }\n return Promise.resolve();\n };\n /**\n * Given a token, this method will look up the details in indexedDB.\n * @public\n * @param {string} fcmToken\n * @return {Promise} The details associated with that token.\n */\n TokenManager.prototype.getTokenDetailsFromToken = function (fcmToken) {\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var index = objectStore.index('fcmToken');\n var request = index.get(fcmToken);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve(event.target.result);\n };\n });\n });\n };\n TokenManager.prototype.getTokenDetailsFromSWScope_ = function (swScope) {\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var scopeRequest = objectStore.get(swScope);\n scopeRequest.onerror = function (event) {\n reject(event.target.error);\n };\n scopeRequest.onsuccess = function (event) {\n resolve(event.target.result);\n };\n });\n });\n };\n TokenManager.prototype.getAllTokenDetailsForSenderId_ = function (senderId) {\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var senderIdTokens = [];\n var cursorRequest = objectStore.openCursor();\n cursorRequest.onerror = function (event) {\n reject(event.target.error);\n };\n cursorRequest.onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n if (cursor.value['fcmSenderId'] === senderId) {\n senderIdTokens.push(cursor.value);\n }\n cursor.continue();\n }\n else {\n resolve(senderIdTokens);\n }\n };\n });\n });\n };\n /**\n * Given a PushSubscription and messagingSenderId, get an FCM token.\n * @public\n * @param {string} senderId The 'messagingSenderId' to tie the token to.\n * @param {PushSubscription} subscription The PushSusbcription to \"federate\".\n * @param {string=} pushSet If defined this will swap the subscription for\n * matching FCM token.\n * @return {Promise} Returns the FCM token to be used in place\n * of the PushSubscription.\n */\n TokenManager.prototype.subscribeToFCM = function (senderId, subscription, pushSet) {\n var _this = this;\n var p256dh = array_buffer_to_base64(subscription['getKey']('p256dh'));\n var auth = array_buffer_to_base64(subscription['getKey']('auth'));\n var fcmSubscribeBody = \"authorized_entity=\" + senderId + \"&\" +\n (\"endpoint=\" + subscription.endpoint + \"&\") +\n (\"encryption_key=\" + p256dh + \"&\") +\n (\"encryption_auth=\" + auth);\n if (pushSet) {\n fcmSubscribeBody += \"&pushSet=\" + pushSet;\n }\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var subscribeOptions = {\n method: 'POST',\n headers: headers,\n body: fcmSubscribeBody\n };\n return fetch(fcm_details.ENDPOINT + '/fcm/connect/subscribe', subscribeOptions)\n .then(function (response) { return response.json(); })\n .then(function (response) {\n var fcmTokenResponse = response;\n if (fcmTokenResponse['error']) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(errors.codes.TOKEN_SUBSCRIBE_FAILED, {\n message: message\n });\n }\n if (!fcmTokenResponse['token']) {\n throw _this.errorFactory_.create(errors.codes.TOKEN_SUBSCRIBE_NO_TOKEN);\n }\n if (!fcmTokenResponse['pushSet']) {\n throw _this.errorFactory_.create(errors.codes.TOKEN_SUBSCRIBE_NO_PUSH_SET);\n }\n return {\n token: fcmTokenResponse['token'],\n pushSet: fcmTokenResponse['pushSet']\n };\n });\n };\n /**\n * Checks the that fields in the PushSubscription are equivalent to the\n * details stores in the masterTokenDetails.\n * @private\n * @param {PushSubscription} subscription The push subscription we expect\n * the master token to match.\n * @param {Object} masterTokenDetails The saved details we wish to compare\n * with the PushSubscription\n * @return {boolean} true if the subscription and token details are\n * equivalent.\n */\n TokenManager.prototype.isSameSubscription_ = function (subscription, masterTokenDetails) {\n // getKey() isn't defined in the PushSubscription externs file, hence\n // subscription['getKey']('').\n return (subscription.endpoint === masterTokenDetails['endpoint'] &&\n array_buffer_to_base64(subscription['getKey']('auth')) ===\n masterTokenDetails['auth'] &&\n array_buffer_to_base64(subscription['getKey']('p256dh')) ===\n masterTokenDetails['p256dh']);\n };\n /**\n * Save the details for the fcm token for re-use at a later date.\n * @private\n * @param {string} senderId The 'messagingSenderId' used for this project\n * @param {ServiceWorkerRegistration} swRegistration The service worker\n * used to subscribe the user for web push\n * @param {PushSubscription} subscription The push subscription passed to\n * FCM for the current token.\n * @param {string} fcmToken The FCM token currently used on this\n * device.\n * @param {string} fcmPushSet The FCM push tied to the fcm token.\n * @return {Promise}\n */\n TokenManager.prototype.saveTokenDetails_ = function (senderId, swRegistration, subscription, fcmToken, fcmPushSet) {\n var details = {\n swScope: swRegistration.scope,\n endpoint: subscription.endpoint,\n auth: array_buffer_to_base64(subscription['getKey']('auth')),\n p256dh: array_buffer_to_base64(subscription['getKey']('p256dh')),\n fcmToken: fcmToken,\n fcmPushSet: fcmPushSet,\n fcmSenderId: senderId\n };\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], 'readwrite');\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var request = objectStore.put(details);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve();\n };\n });\n });\n };\n /**\n * Returns the saved FCM Token if one is available and still valid,\n * otherwise `null` is returned.\n * @param {string} senderId This should be the sender ID associated with the\n * FCM Token being retrieved.\n * @param {ServiceWorkerRegistration} swRegistration Registration to be used\n * to subscribe the user to push.\n * @return {Promise | Promise} Returns the saved FCM Token if\n * avilable and valid.\n * @export\n */\n TokenManager.prototype.getSavedToken = function (senderId, swRegistration) {\n var _this = this;\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\n return Promise.reject(this.errorFactory_.create(errors.codes.SW_REGISTRATION_EXPECTED));\n }\n if (typeof senderId !== 'string' || senderId.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SENDER_ID));\n }\n return this.getAllTokenDetailsForSenderId_(senderId)\n .then(function (allTokenDetails) {\n if (allTokenDetails.length === 0) {\n return;\n }\n var index = allTokenDetails.findIndex(function (tokenDetails) {\n return (swRegistration.scope === tokenDetails['swScope'] &&\n senderId === tokenDetails['fcmSenderId']);\n });\n if (index === -1) {\n return;\n }\n return allTokenDetails[index];\n })\n .then(function (tokenDetails) {\n if (!tokenDetails) {\n return;\n }\n return swRegistration.pushManager\n .getSubscription()\n .catch(function (err) {\n throw _this.errorFactory_.create(errors.codes.GET_SUBSCRIPTION_FAILED);\n })\n .then(function (subscription) {\n if (subscription &&\n _this.isSameSubscription_(subscription, tokenDetails)) {\n return tokenDetails['fcmToken'];\n }\n });\n });\n };\n /**\n * Creates a new FCM token.\n */\n TokenManager.prototype.createToken = function (senderId, swRegistration) {\n var _this = this;\n if (typeof senderId !== 'string' || senderId.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SENDER_ID));\n }\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\n return Promise.reject(this.errorFactory_.create(errors.codes.SW_REGISTRATION_EXPECTED));\n }\n // Check for existing subscription first\n var subscription;\n var fcmTokenDetails;\n return swRegistration.pushManager\n .getSubscription()\n .then(function (subscription) {\n if (subscription) {\n return subscription;\n }\n return swRegistration.pushManager.subscribe(fcm_details.SUBSCRIPTION_OPTIONS);\n })\n .then(function (sub) {\n subscription = sub;\n return _this.subscribeToFCM(senderId, subscription);\n })\n .then(function (tokenDetails) {\n fcmTokenDetails = tokenDetails;\n return _this.saveTokenDetails_(senderId, swRegistration, subscription, fcmTokenDetails['token'], fcmTokenDetails['pushSet']);\n })\n .then(function () { return fcmTokenDetails['token']; });\n };\n /**\n * This method deletes details of the current FCM token.\n * It's returning a promise in case we need to move to an async\n * method for deleting at a later date.\n * @param {string} token Token to be deleted\n * @return {Promise} Resolves once the FCM token details have been\n * deleted and returns the deleted details.\n */\n TokenManager.prototype.deleteToken = function (token) {\n var _this = this;\n if (typeof token !== 'string' || token.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.INVALID_DELETE_TOKEN));\n }\n return this.getTokenDetailsFromToken(token).then(function (details) {\n if (!details) {\n throw _this.errorFactory_.create(errors.codes.DELETE_TOKEN_NOT_FOUND);\n }\n return _this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], 'readwrite');\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var request = objectStore.delete(details['swScope']);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n if (event.target.result === 0) {\n reject(_this.errorFactory_.create(errors.codes.FAILED_TO_DELETE_TOKEN));\n return;\n }\n resolve(details);\n };\n });\n });\n });\n };\n return TokenManager;\n}());\n/* harmony default export */ var token_manager = (token_manager_TokenManager);\n\n//# sourceMappingURL=token-manager.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/notification-permission.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* harmony default export */ var notification_permission = ({\n granted: 'granted',\n default: 'default',\n denied: 'denied'\n});\n\n//# sourceMappingURL=notification-permission.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/controllers/controller-interface.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\nvar SENDER_ID_OPTION_NAME = 'messagingSenderId';\nvar controller_interface_ControllerInterface = /** @class */ (function () {\n /**\n * An interface of the Messaging Service API\n * @param {!firebase.app.App} app\n */\n function ControllerInterface(app) {\n var _this = this;\n this.errorFactory_ = new cjs[\"ErrorFactory\"]('messaging', 'Messaging', errors.map);\n if (!app.options[SENDER_ID_OPTION_NAME] ||\n typeof app.options[SENDER_ID_OPTION_NAME] !== 'string') {\n throw this.errorFactory_.create(errors.codes.BAD_SENDER_ID);\n }\n this.messagingSenderId_ = app.options[SENDER_ID_OPTION_NAME];\n this.tokenManager_ = new token_manager();\n this.app = app;\n this.INTERNAL = {};\n this.INTERNAL.delete = function () { return _this.delete; };\n }\n /**\n * @export\n * @return {Promise | Promise} Returns a promise that\n * resolves to an FCM token.\n */\n ControllerInterface.prototype.getToken = function () {\n var _this = this;\n // Check with permissions\n var currentPermission = this.getNotificationPermission_();\n if (currentPermission !== notification_permission.granted) {\n if (currentPermission === notification_permission.denied) {\n return Promise.reject(this.errorFactory_.create(errors.codes.NOTIFICATIONS_BLOCKED));\n }\n // We must wait for permission to be granted\n return Promise.resolve(null);\n }\n return this.getSWRegistration_().then(function (registration) {\n return _this.tokenManager_\n .getSavedToken(_this.messagingSenderId_, registration)\n .then(function (token) {\n if (token) {\n return token;\n }\n return _this.tokenManager_.createToken(_this.messagingSenderId_, registration);\n });\n });\n };\n /**\n * This method deletes tokens that the token manager looks after and then\n * unregisters the push subscription if it exists.\n * @export\n * @param {string} token\n * @return {Promise}\n */\n ControllerInterface.prototype.deleteToken = function (token) {\n var _this = this;\n return this.tokenManager_.deleteToken(token).then(function () {\n return _this.getSWRegistration_()\n .then(function (registration) {\n if (registration) {\n return registration.pushManager.getSubscription();\n }\n })\n .then(function (subscription) {\n if (subscription) {\n return subscription.unsubscribe();\n }\n });\n });\n };\n ControllerInterface.prototype.getSWRegistration_ = function () {\n throw this.errorFactory_.create(errors.codes.SHOULD_BE_INHERITED);\n };\n //\n // The following methods should only be available in the window.\n //\n ControllerInterface.prototype.requestPermission = function () {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!ServiceWorkerRegistration} registration\n */\n ControllerInterface.prototype.useServiceWorker = function (registration) {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!firebase.Observer|function(*)} nextOrObserver\n * @param {function(!Error)=} optError\n * @param {function()=} optCompleted\n * @return {!function()}\n */\n ControllerInterface.prototype.onMessage = function (nextOrObserver, optError, optCompleted) {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!firebase.Observer|function()} nextOrObserver An observer object\n * or a function triggered on token refresh.\n * @param {function(!Error)=} optError Optional A function\n * triggered on token refresh error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n ControllerInterface.prototype.onTokenRefresh = function (nextOrObserver, optError, optCompleted) {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_WINDOW);\n };\n //\n // The following methods are used by the service worker only.\n //\n /**\n * @export\n * @param {function(Object)} callback\n */\n ControllerInterface.prototype.setBackgroundMessageHandler = function (callback) {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_SW);\n };\n //\n // The following methods are used by the service themselves and not exposed\n // publicly or not expected to be used by developers.\n //\n /**\n * This method is required to adhere to the Firebase interface.\n * It closes any currently open indexdb database connections.\n */\n ControllerInterface.prototype.delete = function () {\n this.tokenManager_.closeDatabase();\n };\n /**\n * Returns the current Notification Permission state.\n * @private\n * @return {string} The currenct permission state.\n */\n ControllerInterface.prototype.getNotificationPermission_ = function () {\n return Notification.permission;\n };\n /**\n * @protected\n * @returns {TokenManager}\n */\n ControllerInterface.prototype.getTokenManager = function () {\n return this.tokenManager_;\n };\n return ControllerInterface;\n}());\n/* harmony default export */ var controller_interface = (controller_interface_ControllerInterface);\n\n//# sourceMappingURL=controller-interface.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/worker-page-message.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// These fields are strings to prevent closure from thinking goog.getMsg\n// should be used to initialise the values\nvar PARAMS = {\n TYPE_OF_MSG: 'firebase-messaging-msg-type',\n DATA: 'firebase-messaging-msg-data'\n};\n// This value isn't using the TYPE_OF_MSG short hand as closure\n// expects the variable to be defined via goog.getMsg\nvar msgType = {\n PUSH_MSG_RECEIVED: 'push-msg-received',\n NOTIFICATION_CLICKED: 'notification-clicked'\n};\nvar createNewMsg = function (msgType, msgData) {\n var message = (_a = {},\n _a[PARAMS.TYPE_OF_MSG] = msgType,\n _a[PARAMS.DATA] = msgData,\n _a);\n return message;\n var _a;\n};\n/* harmony default export */ var worker_page_message = ({\n PARAMS: PARAMS,\n TYPES_OF_MSG: msgType,\n createNewMsg: createNewMsg\n});\n\n//# sourceMappingURL=worker-page-message.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/default-sw.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* harmony default export */ var default_sw = ({\n path: '/firebase-messaging-sw.js',\n scope: '/firebase-cloud-messaging-push-scope'\n});\n\n//# sourceMappingURL=default-sw.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/controllers/window-controller.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\n\nvar window_controller_WindowController = /** @class */ (function (_super) {\n __extends(WindowController, _super);\n /**\n * A service that provides a MessagingService instance.\n * @param {!firebase.app.App} app\n */\n function WindowController(app) {\n var _this = _super.call(this, app) || this;\n /**\n * @private\n * @type {ServiceWorkerRegistration}\n */\n _this.registrationToUse_;\n /**\n * @private\n * @type {Promise}\n */\n _this.manifestCheckPromise_;\n /**\n * @private\n * @type {firebase.Observer}\n */\n _this.messageObserver_ = null;\n /**\n * @private {!firebase.Subscribe} The subscribe function to the onMessage\n * observer.\n */\n _this.onMessage_ = Object(cjs[\"createSubscribe\"])(function (observer) {\n _this.messageObserver_ = observer;\n });\n /**\n * @private\n * @type {firebase.Observer}\n */\n _this.tokenRefreshObserver_ = null;\n _this.onTokenRefresh_ = Object(cjs[\"createSubscribe\"])(function (observer) {\n _this.tokenRefreshObserver_ = observer;\n });\n _this.setupSWMessageListener_();\n return _this;\n }\n /**\n * This method returns an FCM token if it can be generated.\n * The return promise will reject if the browser doesn't support\n * FCM, if permission is denied for notifications or it's not\n * possible to generate a token.\n * @export\n * @return {Promise | Promise} Returns a promise the\n * resolves to an FCM token or null if permission isn't granted.\n */\n WindowController.prototype.getToken = function () {\n var _this = this;\n // Check that the required API's are available\n if (!this.isSupported_()) {\n return Promise.reject(this.errorFactory_.create(errors.codes.UNSUPPORTED_BROWSER));\n }\n return this.manifestCheck_().then(function () {\n return _super.prototype.getToken.call(_this);\n });\n };\n /**\n * The method checks that a manifest is defined and has the correct GCM\n * sender ID.\n * @private\n * @return {Promise} Returns a promise that resolves if the manifest matches\n * our required sender ID\n */\n WindowController.prototype.manifestCheck_ = function () {\n var _this = this;\n if (this.manifestCheckPromise_) {\n return this.manifestCheckPromise_;\n }\n var manifestTag = document.querySelector('link[rel=\"manifest\"]');\n if (!manifestTag) {\n this.manifestCheckPromise_ = Promise.resolve();\n }\n else {\n this.manifestCheckPromise_ = fetch(manifestTag.href)\n .then(function (response) {\n return response.json();\n })\n .catch(function () {\n // If the download or parsing fails allow check.\n // We only want to error if we KNOW that the gcm_sender_id is incorrect.\n return Promise.resolve();\n })\n .then(function (manifestContent) {\n if (!manifestContent) {\n return;\n }\n if (!manifestContent['gcm_sender_id']) {\n return;\n }\n if (manifestContent['gcm_sender_id'] !== '103953800507') {\n throw _this.errorFactory_.create(errors.codes.INCORRECT_GCM_SENDER_ID);\n }\n });\n }\n return this.manifestCheckPromise_;\n };\n /**\n * Request permission if it is not currently granted\n * @export\n * @returns {Promise} Resolves if the permission was granted, otherwise\n * rejects\n */\n WindowController.prototype.requestPermission = function () {\n var _this = this;\n if (Notification.permission === notification_permission.granted) {\n return Promise.resolve();\n }\n return new Promise(function (resolve, reject) {\n var managePermissionResult = function (result) {\n if (result === notification_permission.granted) {\n return resolve();\n }\n else if (result === notification_permission.denied) {\n return reject(_this.errorFactory_.create(errors.codes.PERMISSION_BLOCKED));\n }\n else {\n return reject(_this.errorFactory_.create(errors.codes.PERMISSION_DEFAULT));\n }\n };\n // The Notification.requestPermission API was changed to\n // return a promise so now have to handle both in case\n // browsers stop support callbacks for promised version\n var permissionPromise = Notification.requestPermission(function (result) {\n if (permissionPromise) {\n // Let the promise manage this\n return;\n }\n managePermissionResult(result);\n });\n if (permissionPromise) {\n // Prefer the promise version as it's the future API.\n permissionPromise.then(managePermissionResult);\n }\n });\n };\n /**\n * This method allows a developer to override the default service worker and\n * instead use a custom service worker.\n * @export\n * @param {!ServiceWorkerRegistration} registration The service worker\n * registration that should be used to receive the push messages.\n */\n WindowController.prototype.useServiceWorker = function (registration) {\n if (!(registration instanceof ServiceWorkerRegistration)) {\n throw this.errorFactory_.create(errors.codes.SW_REGISTRATION_EXPECTED);\n }\n if (typeof this.registrationToUse_ !== 'undefined') {\n throw this.errorFactory_.create(errors.codes.USE_SW_BEFORE_GET_TOKEN);\n }\n this.registrationToUse_ = registration;\n };\n /**\n * @export\n * @param {!firebase.Observer|function(*)} nextOrObserver An observer object\n * or a function triggered on message.\n * @param {function(!Error)=} optError Optional A function triggered on\n * message error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n WindowController.prototype.onMessage = function (nextOrObserver, optError, optCompleted) {\n return this.onMessage_(nextOrObserver, optError, optCompleted);\n };\n /**\n * @export\n * @param {!firebase.Observer|function()} nextOrObserver An observer object\n * or a function triggered on token refresh.\n * @param {function(!Error)=} optError Optional A function\n * triggered on token refresh error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n WindowController.prototype.onTokenRefresh = function (nextOrObserver, optError, optCompleted) {\n return this.onTokenRefresh_(nextOrObserver, optError, optCompleted);\n };\n /**\n * Given a registration, wait for the service worker it relates to\n * become activer\n * @private\n * @param {ServiceWorkerRegistration} registration Registration to wait\n * for service worker to become active\n * @return {Promise} Wait for service worker\n * registration to become active\n */\n WindowController.prototype.waitForRegistrationToActivate_ = function (registration) {\n var _this = this;\n var serviceWorker = registration.installing || registration.waiting || registration.active;\n return new Promise(function (resolve, reject) {\n if (!serviceWorker) {\n // This is a rare scenario but has occured in firefox\n reject(_this.errorFactory_.create(errors.codes.NO_SW_IN_REG));\n return;\n }\n // Because the Promise function is called on next tick there is a\n // small chance that the worker became active or redundant already.\n if (serviceWorker.state === 'activated') {\n resolve(registration);\n return;\n }\n if (serviceWorker.state === 'redundant') {\n reject(_this.errorFactory_.create(errors.codes.SW_REG_REDUNDANT));\n return;\n }\n var stateChangeListener = function () {\n if (serviceWorker.state === 'activated') {\n resolve(registration);\n }\n else if (serviceWorker.state === 'redundant') {\n reject(_this.errorFactory_.create(errors.codes.SW_REG_REDUNDANT));\n }\n else {\n // Return early and wait to next state change\n return;\n }\n serviceWorker.removeEventListener('statechange', stateChangeListener);\n };\n serviceWorker.addEventListener('statechange', stateChangeListener);\n });\n };\n /**\n * This will regiater the default service worker and return the registration\n * @private\n * @return {Promise} The service worker\n * registration to be used for the push service.\n */\n WindowController.prototype.getSWRegistration_ = function () {\n var _this = this;\n if (this.registrationToUse_) {\n return this.waitForRegistrationToActivate_(this.registrationToUse_);\n }\n // Make the registration null so we know useServiceWorker will not\n // use a new service worker as registrationToUse_ is no longer undefined\n this.registrationToUse_ = null;\n return navigator.serviceWorker\n .register(default_sw.path, {\n scope: default_sw.scope\n })\n .catch(function (err) {\n throw _this.errorFactory_.create(errors.codes.FAILED_DEFAULT_REGISTRATION, {\n browserErrorMessage: err.message\n });\n })\n .then(function (registration) {\n return _this.waitForRegistrationToActivate_(registration).then(function () {\n _this.registrationToUse_ = registration;\n // We update after activation due to an issue with Firefox v49 where\n // a race condition occassionally causes the service work to not\n // install\n registration.update();\n return registration;\n });\n });\n };\n /**\n * This method will set up a message listener to handle\n * events from the service worker that should trigger\n * events in the page.\n *\n * @private\n */\n WindowController.prototype.setupSWMessageListener_ = function () {\n var _this = this;\n if (!('serviceWorker' in navigator)) {\n return;\n }\n navigator.serviceWorker.addEventListener('message', function (event) {\n if (!event.data || !event.data[worker_page_message.PARAMS.TYPE_OF_MSG]) {\n // Not a message from FCM\n return;\n }\n var workerPageMessage = event.data;\n switch (workerPageMessage[worker_page_message.PARAMS.TYPE_OF_MSG]) {\n case worker_page_message.TYPES_OF_MSG.PUSH_MSG_RECEIVED:\n case worker_page_message.TYPES_OF_MSG.NOTIFICATION_CLICKED:\n var pushMessage = workerPageMessage[worker_page_message.PARAMS.DATA];\n _this.messageObserver_.next(pushMessage);\n break;\n default:\n // Noop.\n break;\n }\n }, false);\n };\n /**\n * Checks to see if the required API's are valid or not.\n * @private\n * @return {boolean} Returns true if the desired APIs are available.\n */\n WindowController.prototype.isSupported_ = function () {\n return ('serviceWorker' in navigator &&\n 'PushManager' in window &&\n 'Notification' in window &&\n 'fetch' in window &&\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\n PushSubscription.prototype.hasOwnProperty('getKey'));\n };\n return WindowController;\n}(controller_interface));\n/* harmony default export */ var window_controller = (window_controller_WindowController);\n\n//# sourceMappingURL=window-controller.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/controllers/sw-controller.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar sw_controller___extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\nvar FCM_MSG = 'FCM_MSG';\nvar sw_controller_SWController = /** @class */ (function (_super) {\n sw_controller___extends(SWController, _super);\n function SWController(app) {\n var _this = _super.call(this, app) || this;\n self.addEventListener('push', function (e) { return _this.onPush_(e); }, false);\n self.addEventListener('pushsubscriptionchange', function (e) { return _this.onSubChange_(e); }, false);\n self.addEventListener('notificationclick', function (e) { return _this.onNotificationClick_(e); }, false);\n /**\n * @private\n * @type {function(Object)|null}\n */\n _this.bgMessageHandler_ = null;\n return _this;\n }\n /**\n * A handler for push events that shows notifications based on the content of\n * the payload.\n *\n * The payload must be a JSON-encoded Object with a `notification` key. The\n * value of the `notification` property will be used as the NotificationOptions\n * object passed to showNotification. Additionally, the `title` property of the\n * notification object will be used as the title.\n *\n * If there is no notification data in the payload then no notification will be\n * shown.\n * @private\n */\n SWController.prototype.onPush_ = function (event) {\n var _this = this;\n var msgPayload;\n try {\n msgPayload = event.data.json();\n }\n catch (err) {\n // Not JSON so not an FCM message\n return;\n }\n var handleMsgPromise = this.hasVisibleClients_().then(function (hasVisibleClients) {\n if (hasVisibleClients) {\n // Do not need to show a notification.\n if (msgPayload.notification || _this.bgMessageHandler_) {\n // Send to page\n return _this.sendMessageToWindowClients_(msgPayload);\n }\n return;\n }\n var notificationDetails = _this.getNotificationData_(msgPayload);\n if (notificationDetails) {\n var notificationTitle = notificationDetails.title || '';\n return self.registration.showNotification(notificationTitle, notificationDetails);\n }\n else if (_this.bgMessageHandler_) {\n return _this.bgMessageHandler_(msgPayload);\n }\n });\n event.waitUntil(handleMsgPromise);\n };\n /**\n * @private\n */\n SWController.prototype.onSubChange_ = function (event) {\n var _this = this;\n var promiseChain = this.getToken().then(function (token) {\n if (!token) {\n // We can't resubscribe if we don't have an FCM token for this scope.\n throw _this.errorFactory_.create(errors.codes.NO_FCM_TOKEN_FOR_RESUBSCRIBE);\n }\n var tokenDetails = null;\n var tokenManager = _this.getTokenManager();\n return tokenManager\n .getTokenDetailsFromToken(token)\n .then(function (details) {\n tokenDetails = details;\n if (!tokenDetails) {\n throw _this.errorFactory_.create(errors.codes.INVALID_SAVED_TOKEN);\n }\n // Attempt to get a new subscription\n return self.registration.pushManager.subscribe(fcm_details.SUBSCRIPTION_OPTIONS);\n })\n .then(function (newSubscription) {\n // Send new subscription to FCM.\n return tokenManager.subscribeToFCM(tokenDetails.fcmSenderId, newSubscription, tokenDetails.fcmPushSet);\n })\n .catch(function (err) {\n // The best thing we can do is log this to the terminal so\n // developers might notice the error.\n return tokenManager.deleteToken(tokenDetails.fcmToken).then(function () {\n throw _this.errorFactory_.create(errors.codes.UNABLE_TO_RESUBSCRIBE, {\n message: err\n });\n });\n });\n });\n event.waitUntil(promiseChain);\n };\n /**\n * @private\n */\n SWController.prototype.onNotificationClick_ = function (event) {\n var _this = this;\n if (!(event.notification &&\n event.notification.data &&\n event.notification.data[FCM_MSG])) {\n // Not an FCM notification, do nothing.\n return;\n }\n // Prevent other listeners from receiving the event\n event.stopImmediatePropagation();\n event.notification.close();\n var msgPayload = event.notification.data[FCM_MSG];\n var clickAction = msgPayload['notification']['click_action'];\n if (!clickAction) {\n // Nothing to do.\n return;\n }\n var promiseChain = this.getWindowClient_(clickAction)\n .then(function (windowClient) {\n if (!windowClient) {\n // Unable to find window client so need to open one.\n return self.clients.openWindow(clickAction);\n }\n return windowClient;\n })\n .then(function (windowClient) {\n if (!windowClient) {\n // Window Client will not be returned if it's for a third party origin.\n return;\n }\n // Delete notification data from payload before sending to the page.\n var notificationData = msgPayload['notification'];\n delete msgPayload['notification'];\n var internalMsg = worker_page_message.createNewMsg(worker_page_message.TYPES_OF_MSG.NOTIFICATION_CLICKED, msgPayload);\n // Attempt to send a message to the client to handle the data\n // Is affected by: https://github.com/slightlyoff/ServiceWorker/issues/728\n return _this.attemptToMessageClient_(windowClient, internalMsg);\n });\n event.waitUntil(promiseChain);\n };\n /**\n * @private\n * @param {Object} msgPayload\n * @return {NotificationOptions|undefined}\n */\n SWController.prototype.getNotificationData_ = function (msgPayload) {\n if (!msgPayload) {\n return;\n }\n if (typeof msgPayload.notification !== 'object') {\n return;\n }\n var notificationInformation = Object.assign({}, msgPayload.notification);\n // Put the message payload under FCM_MSG name so we can identify the\n // notification as being an FCM notification vs a notification from\n // somewhere else (i.e. normal web push or developer generated\n // notification).\n notificationInformation['data'] = (_a = {},\n _a[FCM_MSG] = msgPayload,\n _a);\n return notificationInformation;\n var _a;\n };\n /**\n * Calling setBackgroundMessageHandler will opt in to some specific\n * behaviours.\n * 1.) If a notification doesn't need to be shown due to a window already\n * being visible, then push messages will be sent to the page.\n * 2.) If a notification needs to be shown, and the message contains no\n * notification data this method will be called\n * and the promise it returns will be passed to event.waitUntil.\n * If you do not set this callback then all push messages will let and the\n * developer can handle them in a their own 'push' event callback\n * @export\n * @param {function(Object)} callback The callback to be called when a push\n * message is received and a notification must be shown. The callback will\n * be given the data from the push message.\n */\n SWController.prototype.setBackgroundMessageHandler = function (callback) {\n if (callback && typeof callback !== 'function') {\n throw this.errorFactory_.create(errors.codes.BG_HANDLER_FUNCTION_EXPECTED);\n }\n this.bgMessageHandler_ = callback;\n };\n /**\n * @private\n * @param {string} url The URL to look for when focusing a client.\n * @return {Object} Returns an existing window client or a newly opened\n * WindowClient.\n */\n SWController.prototype.getWindowClient_ = function (url) {\n // Use URL to normalize the URL when comparing to windowClients.\n // This at least handles whether to include trailing slashes or not\n var parsedURL = new URL(url).href;\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n var suitableClient = null;\n for (var i = 0; i < clientList.length; i++) {\n var parsedClientUrl = new URL(clientList[i].url).href;\n if (parsedClientUrl === parsedURL) {\n suitableClient = clientList[i];\n break;\n }\n }\n if (suitableClient) {\n suitableClient.focus();\n return suitableClient;\n }\n });\n };\n /**\n * This message will attempt to send the message to a window client.\n * @private\n * @param {Object} client The WindowClient to send the message to.\n * @param {Object} message The message to send to the client.\n * @returns {Promise} Returns a promise that resolves after sending the\n * message. This does not guarantee that the message was successfully\n * received.\n */\n SWController.prototype.attemptToMessageClient_ = function (client, message) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (!client) {\n return reject(_this.errorFactory_.create(errors.codes.NO_WINDOW_CLIENT_TO_MSG));\n }\n client.postMessage(message);\n resolve();\n });\n };\n /**\n * @private\n * @returns {Promise} If there is currently a visible WindowClient,\n * this method will resolve to true, otherwise false.\n */\n SWController.prototype.hasVisibleClients_ = function () {\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n return clientList.some(function (client) { return client.visibilityState === 'visible'; });\n });\n };\n /**\n * @private\n * @param {Object} msgPayload The data from the push event that should be sent\n * to all available pages.\n * @returns {Promise} Returns a promise that resolves once the message\n * has been sent to all WindowClients.\n */\n SWController.prototype.sendMessageToWindowClients_ = function (msgPayload) {\n var _this = this;\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n var internalMsg = worker_page_message.createNewMsg(worker_page_message.TYPES_OF_MSG.PUSH_MSG_RECEIVED, msgPayload);\n return Promise.all(clientList.map(function (client) {\n return _this.attemptToMessageClient_(client, internalMsg);\n }));\n });\n };\n /**\n * This will register the default service worker and return the registration.\n * @private\n * @return {Promise} The service worker\n * registration to be used for the push service.\n */\n SWController.prototype.getSWRegistration_ = function () {\n return Promise.resolve(self.registration);\n };\n return SWController;\n}(controller_interface));\n/* harmony default export */ var sw_controller = (sw_controller_SWController);\n\n//# sourceMappingURL=sw-controller.js.map\n\n// EXTERNAL MODULE: ../app/dist/esm/index.js + 1 modules\nvar esm = __webpack_require__(6);\n\n// CONCATENATED MODULE: ../messaging/dist/esm/index.js\n/* harmony export (immutable) */ __webpack_exports__[\"registerMessaging\"] = registerMessaging;\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\nfunction registerMessaging(instance) {\n var messagingName = 'messaging';\n var factoryMethod = function (app) {\n if (self && 'ServiceWorkerGlobalScope' in self) {\n return new sw_controller(app);\n }\n // Assume we are in the window context.\n return new window_controller(app);\n };\n var namespaceExports = {\n // no-inline\n Messaging: window_controller\n };\n instance.INTERNAL.registerService(messagingName, factoryMethod, namespaceExports);\n}\nregisterMessaging(esm[\"default\"]);\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ })\n\n},[116]);\n } catch(error) {\n throw new Error(\n 'Cannot instantiate firebase-messaging.js - ' +\n 'be sure to load firebase-app.js first.'\n )\n }\n\n\n// WEBPACK FOOTER //\n// firebase-messaging.js","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nrequire('@firebase/messaging');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./messaging/index.js\n// module id = 116\n// module chunks = 3","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction toBase64(arrayBuffer) {\n var uint8Version = new Uint8Array(arrayBuffer);\n return window.btoa(String.fromCharCode.apply(null, uint8Version));\n}\nexport default function (arrayBuffer) {\n var base64String = toBase64(arrayBuffer);\n return base64String\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n};\n\n//# sourceMappingURL=array-buffer-to-base64.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/helpers/array-buffer-to-base64.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport WindowController from './src/controllers/window-controller';\nimport SWController from './src/controllers/sw-controller';\nimport firebase from '@firebase/app';\nexport function registerMessaging(instance) {\n var messagingName = 'messaging';\n var factoryMethod = function (app) {\n if (self && 'ServiceWorkerGlobalScope' in self) {\n return new SWController(app);\n }\n // Assume we are in the window context.\n return new WindowController(app);\n };\n var namespaceExports = {\n // no-inline\n Messaging: WindowController\n };\n instance.INTERNAL.registerService(messagingName, factoryMethod, namespaceExports);\n}\nregisterMessaging(firebase);\n\n//# sourceMappingURL=index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/index.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nvar CODES = {\n AVAILABLE_IN_WINDOW: 'only-available-in-window',\n AVAILABLE_IN_SW: 'only-available-in-sw',\n SHOULD_BE_INHERITED: 'should-be-overriden',\n BAD_SENDER_ID: 'bad-sender-id',\n INCORRECT_GCM_SENDER_ID: 'incorrect-gcm-sender-id',\n PERMISSION_DEFAULT: 'permission-default',\n PERMISSION_BLOCKED: 'permission-blocked',\n UNSUPPORTED_BROWSER: 'unsupported-browser',\n NOTIFICATIONS_BLOCKED: 'notifications-blocked',\n FAILED_DEFAULT_REGISTRATION: 'failed-serviceworker-registration',\n SW_REGISTRATION_EXPECTED: 'sw-registration-expected',\n GET_SUBSCRIPTION_FAILED: 'get-subscription-failed',\n INVALID_SAVED_TOKEN: 'invalid-saved-token',\n SW_REG_REDUNDANT: 'sw-reg-redundant',\n TOKEN_SUBSCRIBE_FAILED: 'token-subscribe-failed',\n TOKEN_SUBSCRIBE_NO_TOKEN: 'token-subscribe-no-token',\n TOKEN_SUBSCRIBE_NO_PUSH_SET: 'token-subscribe-no-push-set',\n USE_SW_BEFORE_GET_TOKEN: 'use-sw-before-get-token',\n INVALID_DELETE_TOKEN: 'invalid-delete-token',\n DELETE_TOKEN_NOT_FOUND: 'delete-token-not-found',\n DELETE_SCOPE_NOT_FOUND: 'delete-scope-not-found',\n BG_HANDLER_FUNCTION_EXPECTED: 'bg-handler-function-expected',\n NO_WINDOW_CLIENT_TO_MSG: 'no-window-client-to-msg',\n UNABLE_TO_RESUBSCRIBE: 'unable-to-resubscribe',\n NO_FCM_TOKEN_FOR_RESUBSCRIBE: 'no-fcm-token-for-resubscribe',\n FAILED_TO_DELETE_TOKEN: 'failed-to-delete-token',\n NO_SW_IN_REG: 'no-sw-in-reg',\n BAD_SCOPE: 'bad-scope',\n BAD_VAPID_KEY: 'bad-vapid-key',\n BAD_SUBSCRIPTION: 'bad-subscription',\n BAD_TOKEN: 'bad-token',\n BAD_PUSH_SET: 'bad-push-set',\n FAILED_DELETE_VAPID_KEY: 'failed-delete-vapid-key'\n};\nvar ERROR_MAP = (_a = {},\n _a[CODES.AVAILABLE_IN_WINDOW] = 'This method is available in a Window context.',\n _a[CODES.AVAILABLE_IN_SW] = 'This method is available in a service worker ' + 'context.',\n _a[CODES.SHOULD_BE_INHERITED] = 'This method should be overriden by ' + 'extended classes.',\n _a[CODES.BAD_SENDER_ID] = \"Please ensure that 'messagingSenderId' is set \" +\n 'correctly in the options passed into firebase.initializeApp().',\n _a[CODES.PERMISSION_DEFAULT] = 'The required permissions were not granted and ' + 'dismissed instead.',\n _a[CODES.PERMISSION_BLOCKED] = 'The required permissions were not granted and ' + 'blocked instead.',\n _a[CODES.UNSUPPORTED_BROWSER] = \"This browser doesn't support the API's \" +\n 'required to use the firebase SDK.',\n _a[CODES.NOTIFICATIONS_BLOCKED] = 'Notifications have been blocked.',\n _a[CODES.FAILED_DEFAULT_REGISTRATION] = 'We are unable to register the ' +\n 'default service worker. {$browserErrorMessage}',\n _a[CODES.SW_REGISTRATION_EXPECTED] = 'A service worker registration was the ' + 'expected input.',\n _a[CODES.GET_SUBSCRIPTION_FAILED] = 'There was an error when trying to get ' +\n 'any existing Push Subscriptions.',\n _a[CODES.INVALID_SAVED_TOKEN] = 'Unable to access details of the saved token.',\n _a[CODES.SW_REG_REDUNDANT] = 'The service worker being used for push was made ' + 'redundant.',\n _a[CODES.TOKEN_SUBSCRIBE_FAILED] = 'A problem occured while subscribing the ' + 'user to FCM: {$message}',\n _a[CODES.TOKEN_SUBSCRIBE_NO_TOKEN] = 'FCM returned no token when subscribing ' + 'the user to push.',\n _a[CODES.TOKEN_SUBSCRIBE_NO_PUSH_SET] = 'FCM returned an invalid response ' + 'when getting an FCM token.',\n _a[CODES.USE_SW_BEFORE_GET_TOKEN] = 'You must call useServiceWorker() before ' +\n 'calling getToken() to ensure your service worker is used.',\n _a[CODES.INVALID_DELETE_TOKEN] = 'You must pass a valid token into ' +\n 'deleteToken(), i.e. the token from getToken().',\n _a[CODES.DELETE_TOKEN_NOT_FOUND] = 'The deletion attempt for token could not ' +\n 'be performed as the token was not found.',\n _a[CODES.DELETE_SCOPE_NOT_FOUND] = 'The deletion attempt for service worker ' +\n 'scope could not be performed as the scope was not found.',\n _a[CODES.BG_HANDLER_FUNCTION_EXPECTED] = 'The input to ' + 'setBackgroundMessageHandler() must be a function.',\n _a[CODES.NO_WINDOW_CLIENT_TO_MSG] = 'An attempt was made to message a ' + 'non-existant window client.',\n _a[CODES.UNABLE_TO_RESUBSCRIBE] = 'There was an error while re-subscribing ' +\n 'the FCM token for push messaging. Will have to resubscribe the ' +\n 'user on next visit. {$message}',\n _a[CODES.NO_FCM_TOKEN_FOR_RESUBSCRIBE] = 'Could not find an FCM token ' +\n 'and as a result, unable to resubscribe. Will have to resubscribe the ' +\n 'user on next visit.',\n _a[CODES.FAILED_TO_DELETE_TOKEN] = 'Unable to delete the currently saved token.',\n _a[CODES.NO_SW_IN_REG] = 'Even though the service worker registration was ' +\n 'successful, there was a problem accessing the service worker itself.',\n _a[CODES.INCORRECT_GCM_SENDER_ID] = \"Please change your web app manifest's \" +\n \"'gcm_sender_id' value to '103953800507' to use Firebase messaging.\",\n _a[CODES.BAD_SCOPE] = 'The service worker scope must be a string with at ' +\n 'least one character.',\n _a[CODES.BAD_VAPID_KEY] = 'The public VAPID key must be a string with at ' + 'least one character.',\n _a[CODES.BAD_SUBSCRIPTION] = 'The subscription must be a valid ' + 'PushSubscription.',\n _a[CODES.BAD_TOKEN] = 'The FCM Token used for storage / lookup was not ' +\n 'a valid token string.',\n _a[CODES.BAD_PUSH_SET] = 'The FCM push set used for storage / lookup was not ' +\n 'not a valid push set string.',\n _a[CODES.FAILED_DELETE_VAPID_KEY] = 'The VAPID key could not be deleted.',\n _a);\nexport default {\n codes: CODES,\n map: ERROR_MAP\n};\nvar _a;\n\n//# sourceMappingURL=errors.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/errors.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nvar FCM_APPLICATION_SERVER_KEY = [\n 0x04,\n 0x33,\n 0x94,\n 0xf7,\n 0xdf,\n 0xa1,\n 0xeb,\n 0xb1,\n 0xdc,\n 0x03,\n 0xa2,\n 0x5e,\n 0x15,\n 0x71,\n 0xdb,\n 0x48,\n 0xd3,\n 0x2e,\n 0xed,\n 0xed,\n 0xb2,\n 0x34,\n 0xdb,\n 0xb7,\n 0x47,\n 0x3a,\n 0x0c,\n 0x8f,\n 0xc4,\n 0xcc,\n 0xe1,\n 0x6f,\n 0x3c,\n 0x8c,\n 0x84,\n 0xdf,\n 0xab,\n 0xb6,\n 0x66,\n 0x3e,\n 0xf2,\n 0x0c,\n 0xd4,\n 0x8b,\n 0xfe,\n 0xe3,\n 0xf9,\n 0x76,\n 0x2f,\n 0x14,\n 0x1c,\n 0x63,\n 0x08,\n 0x6a,\n 0x6f,\n 0x2d,\n 0xb1,\n 0x1a,\n 0x95,\n 0xb0,\n 0xce,\n 0x37,\n 0xc0,\n 0x9c,\n 0x6e\n];\nvar SUBSCRIPTION_DETAILS = {\n userVisibleOnly: true,\n applicationServerKey: new Uint8Array(FCM_APPLICATION_SERVER_KEY)\n};\nexport default {\n ENDPOINT: 'https://fcm.googleapis.com',\n APPLICATION_SERVER_KEY: FCM_APPLICATION_SERVER_KEY,\n SUBSCRIPTION_OPTIONS: SUBSCRIPTION_DETAILS\n};\n\n//# sourceMappingURL=fcm-details.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/fcm-details.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport { ErrorFactory } from '@firebase/util';\nimport Errors from './errors';\nimport arrayBufferToBase64 from '../helpers/array-buffer-to-base64';\nimport FCMDetails from './fcm-details';\nvar FCM_TOKEN_DETAILS_DB = 'fcm_token_details_db';\nvar FCM_TOKEN_OBJ_STORE = 'fcm_token_object_Store';\nvar FCM_TOKEN_DETAILS_DB_VERSION = 1;\nvar TokenManager = /** @class */ (function () {\n function TokenManager() {\n this.errorFactory_ = new ErrorFactory('messaging', 'Messaging', Errors.map);\n this.openDbPromise_ = null;\n }\n /**\n * Get the indexedDB as a promsie.\n * @private\n * @return {Promise} The IndexedDB database\n */\n TokenManager.prototype.openDatabase_ = function () {\n if (this.openDbPromise_) {\n return this.openDbPromise_;\n }\n this.openDbPromise_ = new Promise(function (resolve, reject) {\n var request = indexedDB.open(FCM_TOKEN_DETAILS_DB, FCM_TOKEN_DETAILS_DB_VERSION);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve(event.target.result);\n };\n request.onupgradeneeded = function (event) {\n var db = event.target.result;\n var objectStore = db.createObjectStore(FCM_TOKEN_OBJ_STORE, {\n keyPath: 'swScope'\n });\n // Make sure the sender ID can be searched\n objectStore.createIndex('fcmSenderId', 'fcmSenderId', {\n unique: false\n });\n objectStore.createIndex('fcmToken', 'fcmToken', {\n unique: true\n });\n };\n });\n return this.openDbPromise_;\n };\n /**\n * Close the currently open database.\n * @return {Promise} Returns the result of the promise chain.\n */\n TokenManager.prototype.closeDatabase = function () {\n var _this = this;\n if (this.openDbPromise_) {\n return this.openDbPromise_.then(function (db) {\n db.close();\n _this.openDbPromise_ = null;\n });\n }\n return Promise.resolve();\n };\n /**\n * Given a token, this method will look up the details in indexedDB.\n * @public\n * @param {string} fcmToken\n * @return {Promise} The details associated with that token.\n */\n TokenManager.prototype.getTokenDetailsFromToken = function (fcmToken) {\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var index = objectStore.index('fcmToken');\n var request = index.get(fcmToken);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve(event.target.result);\n };\n });\n });\n };\n TokenManager.prototype.getTokenDetailsFromSWScope_ = function (swScope) {\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var scopeRequest = objectStore.get(swScope);\n scopeRequest.onerror = function (event) {\n reject(event.target.error);\n };\n scopeRequest.onsuccess = function (event) {\n resolve(event.target.result);\n };\n });\n });\n };\n TokenManager.prototype.getAllTokenDetailsForSenderId_ = function (senderId) {\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var senderIdTokens = [];\n var cursorRequest = objectStore.openCursor();\n cursorRequest.onerror = function (event) {\n reject(event.target.error);\n };\n cursorRequest.onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n if (cursor.value['fcmSenderId'] === senderId) {\n senderIdTokens.push(cursor.value);\n }\n cursor.continue();\n }\n else {\n resolve(senderIdTokens);\n }\n };\n });\n });\n };\n /**\n * Given a PushSubscription and messagingSenderId, get an FCM token.\n * @public\n * @param {string} senderId The 'messagingSenderId' to tie the token to.\n * @param {PushSubscription} subscription The PushSusbcription to \"federate\".\n * @param {string=} pushSet If defined this will swap the subscription for\n * matching FCM token.\n * @return {Promise} Returns the FCM token to be used in place\n * of the PushSubscription.\n */\n TokenManager.prototype.subscribeToFCM = function (senderId, subscription, pushSet) {\n var _this = this;\n var p256dh = arrayBufferToBase64(subscription['getKey']('p256dh'));\n var auth = arrayBufferToBase64(subscription['getKey']('auth'));\n var fcmSubscribeBody = \"authorized_entity=\" + senderId + \"&\" +\n (\"endpoint=\" + subscription.endpoint + \"&\") +\n (\"encryption_key=\" + p256dh + \"&\") +\n (\"encryption_auth=\" + auth);\n if (pushSet) {\n fcmSubscribeBody += \"&pushSet=\" + pushSet;\n }\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var subscribeOptions = {\n method: 'POST',\n headers: headers,\n body: fcmSubscribeBody\n };\n return fetch(FCMDetails.ENDPOINT + '/fcm/connect/subscribe', subscribeOptions)\n .then(function (response) { return response.json(); })\n .then(function (response) {\n var fcmTokenResponse = response;\n if (fcmTokenResponse['error']) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(Errors.codes.TOKEN_SUBSCRIBE_FAILED, {\n message: message\n });\n }\n if (!fcmTokenResponse['token']) {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_SUBSCRIBE_NO_TOKEN);\n }\n if (!fcmTokenResponse['pushSet']) {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_SUBSCRIBE_NO_PUSH_SET);\n }\n return {\n token: fcmTokenResponse['token'],\n pushSet: fcmTokenResponse['pushSet']\n };\n });\n };\n /**\n * Checks the that fields in the PushSubscription are equivalent to the\n * details stores in the masterTokenDetails.\n * @private\n * @param {PushSubscription} subscription The push subscription we expect\n * the master token to match.\n * @param {Object} masterTokenDetails The saved details we wish to compare\n * with the PushSubscription\n * @return {boolean} true if the subscription and token details are\n * equivalent.\n */\n TokenManager.prototype.isSameSubscription_ = function (subscription, masterTokenDetails) {\n // getKey() isn't defined in the PushSubscription externs file, hence\n // subscription['getKey']('').\n return (subscription.endpoint === masterTokenDetails['endpoint'] &&\n arrayBufferToBase64(subscription['getKey']('auth')) ===\n masterTokenDetails['auth'] &&\n arrayBufferToBase64(subscription['getKey']('p256dh')) ===\n masterTokenDetails['p256dh']);\n };\n /**\n * Save the details for the fcm token for re-use at a later date.\n * @private\n * @param {string} senderId The 'messagingSenderId' used for this project\n * @param {ServiceWorkerRegistration} swRegistration The service worker\n * used to subscribe the user for web push\n * @param {PushSubscription} subscription The push subscription passed to\n * FCM for the current token.\n * @param {string} fcmToken The FCM token currently used on this\n * device.\n * @param {string} fcmPushSet The FCM push tied to the fcm token.\n * @return {Promise}\n */\n TokenManager.prototype.saveTokenDetails_ = function (senderId, swRegistration, subscription, fcmToken, fcmPushSet) {\n var details = {\n swScope: swRegistration.scope,\n endpoint: subscription.endpoint,\n auth: arrayBufferToBase64(subscription['getKey']('auth')),\n p256dh: arrayBufferToBase64(subscription['getKey']('p256dh')),\n fcmToken: fcmToken,\n fcmPushSet: fcmPushSet,\n fcmSenderId: senderId\n };\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], 'readwrite');\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var request = objectStore.put(details);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve();\n };\n });\n });\n };\n /**\n * Returns the saved FCM Token if one is available and still valid,\n * otherwise `null` is returned.\n * @param {string} senderId This should be the sender ID associated with the\n * FCM Token being retrieved.\n * @param {ServiceWorkerRegistration} swRegistration Registration to be used\n * to subscribe the user to push.\n * @return {Promise | Promise} Returns the saved FCM Token if\n * avilable and valid.\n * @export\n */\n TokenManager.prototype.getSavedToken = function (senderId, swRegistration) {\n var _this = this;\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.SW_REGISTRATION_EXPECTED));\n }\n if (typeof senderId !== 'string' || senderId.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SENDER_ID));\n }\n return this.getAllTokenDetailsForSenderId_(senderId)\n .then(function (allTokenDetails) {\n if (allTokenDetails.length === 0) {\n return;\n }\n var index = allTokenDetails.findIndex(function (tokenDetails) {\n return (swRegistration.scope === tokenDetails['swScope'] &&\n senderId === tokenDetails['fcmSenderId']);\n });\n if (index === -1) {\n return;\n }\n return allTokenDetails[index];\n })\n .then(function (tokenDetails) {\n if (!tokenDetails) {\n return;\n }\n return swRegistration.pushManager\n .getSubscription()\n .catch(function (err) {\n throw _this.errorFactory_.create(Errors.codes.GET_SUBSCRIPTION_FAILED);\n })\n .then(function (subscription) {\n if (subscription &&\n _this.isSameSubscription_(subscription, tokenDetails)) {\n return tokenDetails['fcmToken'];\n }\n });\n });\n };\n /**\n * Creates a new FCM token.\n */\n TokenManager.prototype.createToken = function (senderId, swRegistration) {\n var _this = this;\n if (typeof senderId !== 'string' || senderId.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SENDER_ID));\n }\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.SW_REGISTRATION_EXPECTED));\n }\n // Check for existing subscription first\n var subscription;\n var fcmTokenDetails;\n return swRegistration.pushManager\n .getSubscription()\n .then(function (subscription) {\n if (subscription) {\n return subscription;\n }\n return swRegistration.pushManager.subscribe(FCMDetails.SUBSCRIPTION_OPTIONS);\n })\n .then(function (sub) {\n subscription = sub;\n return _this.subscribeToFCM(senderId, subscription);\n })\n .then(function (tokenDetails) {\n fcmTokenDetails = tokenDetails;\n return _this.saveTokenDetails_(senderId, swRegistration, subscription, fcmTokenDetails['token'], fcmTokenDetails['pushSet']);\n })\n .then(function () { return fcmTokenDetails['token']; });\n };\n /**\n * This method deletes details of the current FCM token.\n * It's returning a promise in case we need to move to an async\n * method for deleting at a later date.\n * @param {string} token Token to be deleted\n * @return {Promise} Resolves once the FCM token details have been\n * deleted and returns the deleted details.\n */\n TokenManager.prototype.deleteToken = function (token) {\n var _this = this;\n if (typeof token !== 'string' || token.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.INVALID_DELETE_TOKEN));\n }\n return this.getTokenDetailsFromToken(token).then(function (details) {\n if (!details) {\n throw _this.errorFactory_.create(Errors.codes.DELETE_TOKEN_NOT_FOUND);\n }\n return _this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], 'readwrite');\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var request = objectStore.delete(details['swScope']);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n if (event.target.result === 0) {\n reject(_this.errorFactory_.create(Errors.codes.FAILED_TO_DELETE_TOKEN));\n return;\n }\n resolve(details);\n };\n });\n });\n });\n };\n return TokenManager;\n}());\nexport default TokenManager;\n\n//# sourceMappingURL=token-manager.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/token-manager.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport { ErrorFactory } from '@firebase/util';\nimport Errors from '../models/errors';\nimport TokenManager from '../models/token-manager';\nimport NOTIFICATION_PERMISSION from '../models/notification-permission';\nvar SENDER_ID_OPTION_NAME = 'messagingSenderId';\nvar ControllerInterface = /** @class */ (function () {\n /**\n * An interface of the Messaging Service API\n * @param {!firebase.app.App} app\n */\n function ControllerInterface(app) {\n var _this = this;\n this.errorFactory_ = new ErrorFactory('messaging', 'Messaging', Errors.map);\n if (!app.options[SENDER_ID_OPTION_NAME] ||\n typeof app.options[SENDER_ID_OPTION_NAME] !== 'string') {\n throw this.errorFactory_.create(Errors.codes.BAD_SENDER_ID);\n }\n this.messagingSenderId_ = app.options[SENDER_ID_OPTION_NAME];\n this.tokenManager_ = new TokenManager();\n this.app = app;\n this.INTERNAL = {};\n this.INTERNAL.delete = function () { return _this.delete; };\n }\n /**\n * @export\n * @return {Promise | Promise} Returns a promise that\n * resolves to an FCM token.\n */\n ControllerInterface.prototype.getToken = function () {\n var _this = this;\n // Check with permissions\n var currentPermission = this.getNotificationPermission_();\n if (currentPermission !== NOTIFICATION_PERMISSION.granted) {\n if (currentPermission === NOTIFICATION_PERMISSION.denied) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.NOTIFICATIONS_BLOCKED));\n }\n // We must wait for permission to be granted\n return Promise.resolve(null);\n }\n return this.getSWRegistration_().then(function (registration) {\n return _this.tokenManager_\n .getSavedToken(_this.messagingSenderId_, registration)\n .then(function (token) {\n if (token) {\n return token;\n }\n return _this.tokenManager_.createToken(_this.messagingSenderId_, registration);\n });\n });\n };\n /**\n * This method deletes tokens that the token manager looks after and then\n * unregisters the push subscription if it exists.\n * @export\n * @param {string} token\n * @return {Promise}\n */\n ControllerInterface.prototype.deleteToken = function (token) {\n var _this = this;\n return this.tokenManager_.deleteToken(token).then(function () {\n return _this.getSWRegistration_()\n .then(function (registration) {\n if (registration) {\n return registration.pushManager.getSubscription();\n }\n })\n .then(function (subscription) {\n if (subscription) {\n return subscription.unsubscribe();\n }\n });\n });\n };\n ControllerInterface.prototype.getSWRegistration_ = function () {\n throw this.errorFactory_.create(Errors.codes.SHOULD_BE_INHERITED);\n };\n //\n // The following methods should only be available in the window.\n //\n ControllerInterface.prototype.requestPermission = function () {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!ServiceWorkerRegistration} registration\n */\n ControllerInterface.prototype.useServiceWorker = function (registration) {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!firebase.Observer|function(*)} nextOrObserver\n * @param {function(!Error)=} optError\n * @param {function()=} optCompleted\n * @return {!function()}\n */\n ControllerInterface.prototype.onMessage = function (nextOrObserver, optError, optCompleted) {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!firebase.Observer|function()} nextOrObserver An observer object\n * or a function triggered on token refresh.\n * @param {function(!Error)=} optError Optional A function\n * triggered on token refresh error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n ControllerInterface.prototype.onTokenRefresh = function (nextOrObserver, optError, optCompleted) {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_WINDOW);\n };\n //\n // The following methods are used by the service worker only.\n //\n /**\n * @export\n * @param {function(Object)} callback\n */\n ControllerInterface.prototype.setBackgroundMessageHandler = function (callback) {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_SW);\n };\n //\n // The following methods are used by the service themselves and not exposed\n // publicly or not expected to be used by developers.\n //\n /**\n * This method is required to adhere to the Firebase interface.\n * It closes any currently open indexdb database connections.\n */\n ControllerInterface.prototype.delete = function () {\n this.tokenManager_.closeDatabase();\n };\n /**\n * Returns the current Notification Permission state.\n * @private\n * @return {string} The currenct permission state.\n */\n ControllerInterface.prototype.getNotificationPermission_ = function () {\n return Notification.permission;\n };\n /**\n * @protected\n * @returns {TokenManager}\n */\n ControllerInterface.prototype.getTokenManager = function () {\n return this.tokenManager_;\n };\n return ControllerInterface;\n}());\nexport default ControllerInterface;\n\n//# sourceMappingURL=controller-interface.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/controllers/controller-interface.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\n// These fields are strings to prevent closure from thinking goog.getMsg\n// should be used to initialise the values\nvar PARAMS = {\n TYPE_OF_MSG: 'firebase-messaging-msg-type',\n DATA: 'firebase-messaging-msg-data'\n};\n// This value isn't using the TYPE_OF_MSG short hand as closure\n// expects the variable to be defined via goog.getMsg\nvar msgType = {\n PUSH_MSG_RECEIVED: 'push-msg-received',\n NOTIFICATION_CLICKED: 'notification-clicked'\n};\nvar createNewMsg = function (msgType, msgData) {\n var message = (_a = {},\n _a[PARAMS.TYPE_OF_MSG] = msgType,\n _a[PARAMS.DATA] = msgData,\n _a);\n return message;\n var _a;\n};\nexport default {\n PARAMS: PARAMS,\n TYPES_OF_MSG: msgType,\n createNewMsg: createNewMsg\n};\n\n//# sourceMappingURL=worker-page-message.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/worker-page-message.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nexport default {\n path: '/firebase-messaging-sw.js',\n scope: '/firebase-cloud-messaging-push-scope'\n};\n\n//# sourceMappingURL=default-sw.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/default-sw.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport ControllerInterface from './controller-interface';\nimport Errors from '../models/errors';\nimport WorkerPageMessage from '../models/worker-page-message';\nimport DefaultSW from '../models/default-sw';\nimport NOTIFICATION_PERMISSION from '../models/notification-permission';\nimport { createSubscribe } from '@firebase/util';\nvar WindowController = /** @class */ (function (_super) {\n __extends(WindowController, _super);\n /**\n * A service that provides a MessagingService instance.\n * @param {!firebase.app.App} app\n */\n function WindowController(app) {\n var _this = _super.call(this, app) || this;\n /**\n * @private\n * @type {ServiceWorkerRegistration}\n */\n _this.registrationToUse_;\n /**\n * @private\n * @type {Promise}\n */\n _this.manifestCheckPromise_;\n /**\n * @private\n * @type {firebase.Observer}\n */\n _this.messageObserver_ = null;\n /**\n * @private {!firebase.Subscribe} The subscribe function to the onMessage\n * observer.\n */\n _this.onMessage_ = createSubscribe(function (observer) {\n _this.messageObserver_ = observer;\n });\n /**\n * @private\n * @type {firebase.Observer}\n */\n _this.tokenRefreshObserver_ = null;\n _this.onTokenRefresh_ = createSubscribe(function (observer) {\n _this.tokenRefreshObserver_ = observer;\n });\n _this.setupSWMessageListener_();\n return _this;\n }\n /**\n * This method returns an FCM token if it can be generated.\n * The return promise will reject if the browser doesn't support\n * FCM, if permission is denied for notifications or it's not\n * possible to generate a token.\n * @export\n * @return {Promise | Promise} Returns a promise the\n * resolves to an FCM token or null if permission isn't granted.\n */\n WindowController.prototype.getToken = function () {\n var _this = this;\n // Check that the required API's are available\n if (!this.isSupported_()) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.UNSUPPORTED_BROWSER));\n }\n return this.manifestCheck_().then(function () {\n return _super.prototype.getToken.call(_this);\n });\n };\n /**\n * The method checks that a manifest is defined and has the correct GCM\n * sender ID.\n * @private\n * @return {Promise} Returns a promise that resolves if the manifest matches\n * our required sender ID\n */\n WindowController.prototype.manifestCheck_ = function () {\n var _this = this;\n if (this.manifestCheckPromise_) {\n return this.manifestCheckPromise_;\n }\n var manifestTag = document.querySelector('link[rel=\"manifest\"]');\n if (!manifestTag) {\n this.manifestCheckPromise_ = Promise.resolve();\n }\n else {\n this.manifestCheckPromise_ = fetch(manifestTag.href)\n .then(function (response) {\n return response.json();\n })\n .catch(function () {\n // If the download or parsing fails allow check.\n // We only want to error if we KNOW that the gcm_sender_id is incorrect.\n return Promise.resolve();\n })\n .then(function (manifestContent) {\n if (!manifestContent) {\n return;\n }\n if (!manifestContent['gcm_sender_id']) {\n return;\n }\n if (manifestContent['gcm_sender_id'] !== '103953800507') {\n throw _this.errorFactory_.create(Errors.codes.INCORRECT_GCM_SENDER_ID);\n }\n });\n }\n return this.manifestCheckPromise_;\n };\n /**\n * Request permission if it is not currently granted\n * @export\n * @returns {Promise} Resolves if the permission was granted, otherwise\n * rejects\n */\n WindowController.prototype.requestPermission = function () {\n var _this = this;\n if (Notification.permission === NOTIFICATION_PERMISSION.granted) {\n return Promise.resolve();\n }\n return new Promise(function (resolve, reject) {\n var managePermissionResult = function (result) {\n if (result === NOTIFICATION_PERMISSION.granted) {\n return resolve();\n }\n else if (result === NOTIFICATION_PERMISSION.denied) {\n return reject(_this.errorFactory_.create(Errors.codes.PERMISSION_BLOCKED));\n }\n else {\n return reject(_this.errorFactory_.create(Errors.codes.PERMISSION_DEFAULT));\n }\n };\n // The Notification.requestPermission API was changed to\n // return a promise so now have to handle both in case\n // browsers stop support callbacks for promised version\n var permissionPromise = Notification.requestPermission(function (result) {\n if (permissionPromise) {\n // Let the promise manage this\n return;\n }\n managePermissionResult(result);\n });\n if (permissionPromise) {\n // Prefer the promise version as it's the future API.\n permissionPromise.then(managePermissionResult);\n }\n });\n };\n /**\n * This method allows a developer to override the default service worker and\n * instead use a custom service worker.\n * @export\n * @param {!ServiceWorkerRegistration} registration The service worker\n * registration that should be used to receive the push messages.\n */\n WindowController.prototype.useServiceWorker = function (registration) {\n if (!(registration instanceof ServiceWorkerRegistration)) {\n throw this.errorFactory_.create(Errors.codes.SW_REGISTRATION_EXPECTED);\n }\n if (typeof this.registrationToUse_ !== 'undefined') {\n throw this.errorFactory_.create(Errors.codes.USE_SW_BEFORE_GET_TOKEN);\n }\n this.registrationToUse_ = registration;\n };\n /**\n * @export\n * @param {!firebase.Observer|function(*)} nextOrObserver An observer object\n * or a function triggered on message.\n * @param {function(!Error)=} optError Optional A function triggered on\n * message error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n WindowController.prototype.onMessage = function (nextOrObserver, optError, optCompleted) {\n return this.onMessage_(nextOrObserver, optError, optCompleted);\n };\n /**\n * @export\n * @param {!firebase.Observer|function()} nextOrObserver An observer object\n * or a function triggered on token refresh.\n * @param {function(!Error)=} optError Optional A function\n * triggered on token refresh error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n WindowController.prototype.onTokenRefresh = function (nextOrObserver, optError, optCompleted) {\n return this.onTokenRefresh_(nextOrObserver, optError, optCompleted);\n };\n /**\n * Given a registration, wait for the service worker it relates to\n * become activer\n * @private\n * @param {ServiceWorkerRegistration} registration Registration to wait\n * for service worker to become active\n * @return {Promise} Wait for service worker\n * registration to become active\n */\n WindowController.prototype.waitForRegistrationToActivate_ = function (registration) {\n var _this = this;\n var serviceWorker = registration.installing || registration.waiting || registration.active;\n return new Promise(function (resolve, reject) {\n if (!serviceWorker) {\n // This is a rare scenario but has occured in firefox\n reject(_this.errorFactory_.create(Errors.codes.NO_SW_IN_REG));\n return;\n }\n // Because the Promise function is called on next tick there is a\n // small chance that the worker became active or redundant already.\n if (serviceWorker.state === 'activated') {\n resolve(registration);\n return;\n }\n if (serviceWorker.state === 'redundant') {\n reject(_this.errorFactory_.create(Errors.codes.SW_REG_REDUNDANT));\n return;\n }\n var stateChangeListener = function () {\n if (serviceWorker.state === 'activated') {\n resolve(registration);\n }\n else if (serviceWorker.state === 'redundant') {\n reject(_this.errorFactory_.create(Errors.codes.SW_REG_REDUNDANT));\n }\n else {\n // Return early and wait to next state change\n return;\n }\n serviceWorker.removeEventListener('statechange', stateChangeListener);\n };\n serviceWorker.addEventListener('statechange', stateChangeListener);\n });\n };\n /**\n * This will regiater the default service worker and return the registration\n * @private\n * @return {Promise} The service worker\n * registration to be used for the push service.\n */\n WindowController.prototype.getSWRegistration_ = function () {\n var _this = this;\n if (this.registrationToUse_) {\n return this.waitForRegistrationToActivate_(this.registrationToUse_);\n }\n // Make the registration null so we know useServiceWorker will not\n // use a new service worker as registrationToUse_ is no longer undefined\n this.registrationToUse_ = null;\n return navigator.serviceWorker\n .register(DefaultSW.path, {\n scope: DefaultSW.scope\n })\n .catch(function (err) {\n throw _this.errorFactory_.create(Errors.codes.FAILED_DEFAULT_REGISTRATION, {\n browserErrorMessage: err.message\n });\n })\n .then(function (registration) {\n return _this.waitForRegistrationToActivate_(registration).then(function () {\n _this.registrationToUse_ = registration;\n // We update after activation due to an issue with Firefox v49 where\n // a race condition occassionally causes the service work to not\n // install\n registration.update();\n return registration;\n });\n });\n };\n /**\n * This method will set up a message listener to handle\n * events from the service worker that should trigger\n * events in the page.\n *\n * @private\n */\n WindowController.prototype.setupSWMessageListener_ = function () {\n var _this = this;\n if (!('serviceWorker' in navigator)) {\n return;\n }\n navigator.serviceWorker.addEventListener('message', function (event) {\n if (!event.data || !event.data[WorkerPageMessage.PARAMS.TYPE_OF_MSG]) {\n // Not a message from FCM\n return;\n }\n var workerPageMessage = event.data;\n switch (workerPageMessage[WorkerPageMessage.PARAMS.TYPE_OF_MSG]) {\n case WorkerPageMessage.TYPES_OF_MSG.PUSH_MSG_RECEIVED:\n case WorkerPageMessage.TYPES_OF_MSG.NOTIFICATION_CLICKED:\n var pushMessage = workerPageMessage[WorkerPageMessage.PARAMS.DATA];\n _this.messageObserver_.next(pushMessage);\n break;\n default:\n // Noop.\n break;\n }\n }, false);\n };\n /**\n * Checks to see if the required API's are valid or not.\n * @private\n * @return {boolean} Returns true if the desired APIs are available.\n */\n WindowController.prototype.isSupported_ = function () {\n return ('serviceWorker' in navigator &&\n 'PushManager' in window &&\n 'Notification' in window &&\n 'fetch' in window &&\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\n PushSubscription.prototype.hasOwnProperty('getKey'));\n };\n return WindowController;\n}(ControllerInterface));\nexport default WindowController;\n\n//# sourceMappingURL=window-controller.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/controllers/window-controller.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport ControllerInterface from './controller-interface';\nimport Errors from '../models/errors';\nimport WorkerPageMessage from '../models/worker-page-message';\nimport FCMDetails from '../models/fcm-details';\nvar FCM_MSG = 'FCM_MSG';\nvar SWController = /** @class */ (function (_super) {\n __extends(SWController, _super);\n function SWController(app) {\n var _this = _super.call(this, app) || this;\n self.addEventListener('push', function (e) { return _this.onPush_(e); }, false);\n self.addEventListener('pushsubscriptionchange', function (e) { return _this.onSubChange_(e); }, false);\n self.addEventListener('notificationclick', function (e) { return _this.onNotificationClick_(e); }, false);\n /**\n * @private\n * @type {function(Object)|null}\n */\n _this.bgMessageHandler_ = null;\n return _this;\n }\n /**\n * A handler for push events that shows notifications based on the content of\n * the payload.\n *\n * The payload must be a JSON-encoded Object with a `notification` key. The\n * value of the `notification` property will be used as the NotificationOptions\n * object passed to showNotification. Additionally, the `title` property of the\n * notification object will be used as the title.\n *\n * If there is no notification data in the payload then no notification will be\n * shown.\n * @private\n */\n SWController.prototype.onPush_ = function (event) {\n var _this = this;\n var msgPayload;\n try {\n msgPayload = event.data.json();\n }\n catch (err) {\n // Not JSON so not an FCM message\n return;\n }\n var handleMsgPromise = this.hasVisibleClients_().then(function (hasVisibleClients) {\n if (hasVisibleClients) {\n // Do not need to show a notification.\n if (msgPayload.notification || _this.bgMessageHandler_) {\n // Send to page\n return _this.sendMessageToWindowClients_(msgPayload);\n }\n return;\n }\n var notificationDetails = _this.getNotificationData_(msgPayload);\n if (notificationDetails) {\n var notificationTitle = notificationDetails.title || '';\n return self.registration.showNotification(notificationTitle, notificationDetails);\n }\n else if (_this.bgMessageHandler_) {\n return _this.bgMessageHandler_(msgPayload);\n }\n });\n event.waitUntil(handleMsgPromise);\n };\n /**\n * @private\n */\n SWController.prototype.onSubChange_ = function (event) {\n var _this = this;\n var promiseChain = this.getToken().then(function (token) {\n if (!token) {\n // We can't resubscribe if we don't have an FCM token for this scope.\n throw _this.errorFactory_.create(Errors.codes.NO_FCM_TOKEN_FOR_RESUBSCRIBE);\n }\n var tokenDetails = null;\n var tokenManager = _this.getTokenManager();\n return tokenManager\n .getTokenDetailsFromToken(token)\n .then(function (details) {\n tokenDetails = details;\n if (!tokenDetails) {\n throw _this.errorFactory_.create(Errors.codes.INVALID_SAVED_TOKEN);\n }\n // Attempt to get a new subscription\n return self.registration.pushManager.subscribe(FCMDetails.SUBSCRIPTION_OPTIONS);\n })\n .then(function (newSubscription) {\n // Send new subscription to FCM.\n return tokenManager.subscribeToFCM(tokenDetails.fcmSenderId, newSubscription, tokenDetails.fcmPushSet);\n })\n .catch(function (err) {\n // The best thing we can do is log this to the terminal so\n // developers might notice the error.\n return tokenManager.deleteToken(tokenDetails.fcmToken).then(function () {\n throw _this.errorFactory_.create(Errors.codes.UNABLE_TO_RESUBSCRIBE, {\n message: err\n });\n });\n });\n });\n event.waitUntil(promiseChain);\n };\n /**\n * @private\n */\n SWController.prototype.onNotificationClick_ = function (event) {\n var _this = this;\n if (!(event.notification &&\n event.notification.data &&\n event.notification.data[FCM_MSG])) {\n // Not an FCM notification, do nothing.\n return;\n }\n // Prevent other listeners from receiving the event\n event.stopImmediatePropagation();\n event.notification.close();\n var msgPayload = event.notification.data[FCM_MSG];\n var clickAction = msgPayload['notification']['click_action'];\n if (!clickAction) {\n // Nothing to do.\n return;\n }\n var promiseChain = this.getWindowClient_(clickAction)\n .then(function (windowClient) {\n if (!windowClient) {\n // Unable to find window client so need to open one.\n return self.clients.openWindow(clickAction);\n }\n return windowClient;\n })\n .then(function (windowClient) {\n if (!windowClient) {\n // Window Client will not be returned if it's for a third party origin.\n return;\n }\n // Delete notification data from payload before sending to the page.\n var notificationData = msgPayload['notification'];\n delete msgPayload['notification'];\n var internalMsg = WorkerPageMessage.createNewMsg(WorkerPageMessage.TYPES_OF_MSG.NOTIFICATION_CLICKED, msgPayload);\n // Attempt to send a message to the client to handle the data\n // Is affected by: https://github.com/slightlyoff/ServiceWorker/issues/728\n return _this.attemptToMessageClient_(windowClient, internalMsg);\n });\n event.waitUntil(promiseChain);\n };\n /**\n * @private\n * @param {Object} msgPayload\n * @return {NotificationOptions|undefined}\n */\n SWController.prototype.getNotificationData_ = function (msgPayload) {\n if (!msgPayload) {\n return;\n }\n if (typeof msgPayload.notification !== 'object') {\n return;\n }\n var notificationInformation = Object.assign({}, msgPayload.notification);\n // Put the message payload under FCM_MSG name so we can identify the\n // notification as being an FCM notification vs a notification from\n // somewhere else (i.e. normal web push or developer generated\n // notification).\n notificationInformation['data'] = (_a = {},\n _a[FCM_MSG] = msgPayload,\n _a);\n return notificationInformation;\n var _a;\n };\n /**\n * Calling setBackgroundMessageHandler will opt in to some specific\n * behaviours.\n * 1.) If a notification doesn't need to be shown due to a window already\n * being visible, then push messages will be sent to the page.\n * 2.) If a notification needs to be shown, and the message contains no\n * notification data this method will be called\n * and the promise it returns will be passed to event.waitUntil.\n * If you do not set this callback then all push messages will let and the\n * developer can handle them in a their own 'push' event callback\n * @export\n * @param {function(Object)} callback The callback to be called when a push\n * message is received and a notification must be shown. The callback will\n * be given the data from the push message.\n */\n SWController.prototype.setBackgroundMessageHandler = function (callback) {\n if (callback && typeof callback !== 'function') {\n throw this.errorFactory_.create(Errors.codes.BG_HANDLER_FUNCTION_EXPECTED);\n }\n this.bgMessageHandler_ = callback;\n };\n /**\n * @private\n * @param {string} url The URL to look for when focusing a client.\n * @return {Object} Returns an existing window client or a newly opened\n * WindowClient.\n */\n SWController.prototype.getWindowClient_ = function (url) {\n // Use URL to normalize the URL when comparing to windowClients.\n // This at least handles whether to include trailing slashes or not\n var parsedURL = new URL(url).href;\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n var suitableClient = null;\n for (var i = 0; i < clientList.length; i++) {\n var parsedClientUrl = new URL(clientList[i].url).href;\n if (parsedClientUrl === parsedURL) {\n suitableClient = clientList[i];\n break;\n }\n }\n if (suitableClient) {\n suitableClient.focus();\n return suitableClient;\n }\n });\n };\n /**\n * This message will attempt to send the message to a window client.\n * @private\n * @param {Object} client The WindowClient to send the message to.\n * @param {Object} message The message to send to the client.\n * @returns {Promise} Returns a promise that resolves after sending the\n * message. This does not guarantee that the message was successfully\n * received.\n */\n SWController.prototype.attemptToMessageClient_ = function (client, message) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (!client) {\n return reject(_this.errorFactory_.create(Errors.codes.NO_WINDOW_CLIENT_TO_MSG));\n }\n client.postMessage(message);\n resolve();\n });\n };\n /**\n * @private\n * @returns {Promise} If there is currently a visible WindowClient,\n * this method will resolve to true, otherwise false.\n */\n SWController.prototype.hasVisibleClients_ = function () {\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n return clientList.some(function (client) { return client.visibilityState === 'visible'; });\n });\n };\n /**\n * @private\n * @param {Object} msgPayload The data from the push event that should be sent\n * to all available pages.\n * @returns {Promise} Returns a promise that resolves once the message\n * has been sent to all WindowClients.\n */\n SWController.prototype.sendMessageToWindowClients_ = function (msgPayload) {\n var _this = this;\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n var internalMsg = WorkerPageMessage.createNewMsg(WorkerPageMessage.TYPES_OF_MSG.PUSH_MSG_RECEIVED, msgPayload);\n return Promise.all(clientList.map(function (client) {\n return _this.attemptToMessageClient_(client, internalMsg);\n }));\n });\n };\n /**\n * This will register the default service worker and return the registration.\n * @private\n * @return {Promise} The service worker\n * registration to be used for the push service.\n */\n SWController.prototype.getSWRegistration_ = function () {\n return Promise.resolve(self.registration);\n };\n return SWController;\n}(ControllerInterface));\nexport default SWController;\n\n//# sourceMappingURL=sw-controller.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/controllers/sw-controller.js\n// module id = null\n// module chunks = ","/*!\n * @license Firebase v4.5.2\n * Build: rev-646dbb2\n * Terms: https://firebase.google.com/terms/\n */\ntry {\n webpackJsonpFirebase([2],{\n\n/***/ 118:\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n__webpack_require__(119);\n\n\n/***/ }),\n\n/***/ 119:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n// EXTERNAL MODULE: ../app/dist/esm/index.js + 1 modules\nvar esm = __webpack_require__(6);\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/constants.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Constants used in the Firebase Storage library.\n */\n/**\n * Domain and scheme for API calls.\n */\nvar domainBase = 'https://firebasestorage.googleapis.com';\n/**\n * Domain and scheme for object downloads.\n */\nvar downloadBase = 'https://firebasestorage.googleapis.com';\n/**\n * Base URL for non-upload calls to the API.\n */\nvar apiBaseUrl = '/v0';\n/**\n * Base URL for upload calls to the API.\n */\nvar apiUploadBaseUrl = '/v0';\nfunction setDomainBase(domainBase) {\n domainBase = domainBase;\n}\nvar configOption = 'storageBucket';\n/**\n * 1 minute\n */\nvar shortMaxOperationRetryTime = 1 * 60 * 1000;\n/**\n * 2 minutes\n */\nvar defaultMaxOperationRetryTime = 2 * 60 * 1000;\n/**\n * 10 minutes\n */\nvar defaultMaxUploadRetryTime = 10 * 60 * 100;\n/**\n * This is the value of Number.MIN_SAFE_INTEGER, which is not well supported\n * enough for us to use it directly.\n */\nvar minSafeInteger = -9007199254740991;\n\n//# sourceMappingURL=constants.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/error.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar FirebaseStorageError = /** @class */ (function () {\n function FirebaseStorageError(code, message) {\n this.code_ = prependCode(code);\n this.message_ = 'Firebase Storage: ' + message;\n this.serverResponse_ = null;\n this.name_ = 'FirebaseError';\n }\n FirebaseStorageError.prototype.codeProp = function () {\n return this.code;\n };\n FirebaseStorageError.prototype.codeEquals = function (code) {\n return prependCode(code) === this.codeProp();\n };\n FirebaseStorageError.prototype.serverResponseProp = function () {\n return this.serverResponse_;\n };\n FirebaseStorageError.prototype.setServerResponseProp = function (serverResponse) {\n this.serverResponse_ = serverResponse;\n };\n Object.defineProperty(FirebaseStorageError.prototype, \"name\", {\n get: function () {\n return this.name_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"code\", {\n get: function () {\n return this.code_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"message\", {\n get: function () {\n return this.message_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"serverResponse\", {\n get: function () {\n return this.serverResponse_;\n },\n enumerable: true,\n configurable: true\n });\n return FirebaseStorageError;\n}());\n\nvar errors = {};\nvar Code = {\n // Shared between all platforms\n UNKNOWN: 'unknown',\n OBJECT_NOT_FOUND: 'object-not-found',\n BUCKET_NOT_FOUND: 'bucket-not-found',\n PROJECT_NOT_FOUND: 'project-not-found',\n QUOTA_EXCEEDED: 'quota-exceeded',\n UNAUTHENTICATED: 'unauthenticated',\n UNAUTHORIZED: 'unauthorized',\n RETRY_LIMIT_EXCEEDED: 'retry-limit-exceeded',\n INVALID_CHECKSUM: 'invalid-checksum',\n CANCELED: 'canceled',\n // JS specific\n INVALID_EVENT_NAME: 'invalid-event-name',\n INVALID_URL: 'invalid-url',\n INVALID_DEFAULT_BUCKET: 'invalid-default-bucket',\n NO_DEFAULT_BUCKET: 'no-default-bucket',\n CANNOT_SLICE_BLOB: 'cannot-slice-blob',\n SERVER_FILE_WRONG_SIZE: 'server-file-wrong-size',\n NO_DOWNLOAD_URL: 'no-download-url',\n INVALID_ARGUMENT: 'invalid-argument',\n INVALID_ARGUMENT_COUNT: 'invalid-argument-count',\n APP_DELETED: 'app-deleted',\n INVALID_ROOT_OPERATION: 'invalid-root-operation',\n INVALID_FORMAT: 'invalid-format',\n INTERNAL_ERROR: 'internal-error'\n};\nfunction prependCode(code) {\n return 'storage/' + code;\n}\nfunction unknown() {\n var message = 'An unknown error occurred, please check the error payload for ' +\n 'server response.';\n return new FirebaseStorageError(Code.UNKNOWN, message);\n}\nfunction objectNotFound(path) {\n return new FirebaseStorageError(Code.OBJECT_NOT_FOUND, \"Object '\" + path + \"' does not exist.\");\n}\nfunction bucketNotFound(bucket) {\n return new FirebaseStorageError(Code.BUCKET_NOT_FOUND, \"Bucket '\" + bucket + \"' does not exist.\");\n}\nfunction projectNotFound(project) {\n return new FirebaseStorageError(Code.PROJECT_NOT_FOUND, \"Project '\" + project + \"' does not exist.\");\n}\nfunction quotaExceeded(bucket) {\n return new FirebaseStorageError(Code.QUOTA_EXCEEDED, \"Quota for bucket '\" +\n bucket +\n \"' exceeded, please view quota on \" +\n 'https://firebase.google.com/pricing/.');\n}\nfunction unauthenticated() {\n var message = 'User is not authenticated, please authenticate using Firebase ' +\n 'Authentication and try again.';\n return new FirebaseStorageError(Code.UNAUTHENTICATED, message);\n}\nfunction unauthorized(path) {\n return new FirebaseStorageError(Code.UNAUTHORIZED, \"User does not have permission to access '\" + path + \"'.\");\n}\nfunction retryLimitExceeded() {\n return new FirebaseStorageError(Code.RETRY_LIMIT_EXCEEDED, 'Max retry time for operation exceeded, please try again.');\n}\nfunction invalidChecksum(path, checksum, calculated) {\n return new FirebaseStorageError(Code.INVALID_CHECKSUM, \"Uploaded/downloaded object '\" +\n path +\n \"' has checksum '\" +\n checksum +\n \"' which does not match '\" +\n calculated +\n \"'. Please retry the upload/download.\");\n}\nfunction error_canceled() {\n return new FirebaseStorageError(Code.CANCELED, 'User canceled the upload/download.');\n}\nfunction invalidEventName(name) {\n return new FirebaseStorageError(Code.INVALID_EVENT_NAME, \"Invalid event name '\" + name + \"'.\");\n}\nfunction invalidUrl(url) {\n return new FirebaseStorageError(Code.INVALID_URL, \"Invalid URL '\" + url + \"'.\");\n}\nfunction invalidDefaultBucket(bucket) {\n return new FirebaseStorageError(Code.INVALID_DEFAULT_BUCKET, \"Invalid default bucket '\" + bucket + \"'.\");\n}\nfunction noDefaultBucket() {\n return new FirebaseStorageError(Code.NO_DEFAULT_BUCKET, 'No default bucket ' +\n \"found. Did you set the '\" +\n configOption +\n \"' property when initializing the app?\");\n}\nfunction cannotSliceBlob() {\n return new FirebaseStorageError(Code.CANNOT_SLICE_BLOB, 'Cannot slice blob for upload. Please retry the upload.');\n}\nfunction serverFileWrongSize() {\n return new FirebaseStorageError(Code.SERVER_FILE_WRONG_SIZE, 'Server recorded incorrect upload file size, please retry the upload.');\n}\nfunction noDownloadURL() {\n return new FirebaseStorageError(Code.NO_DOWNLOAD_URL, 'The given file does not have any download URLs.');\n}\nfunction invalidArgument(index, fnName, message) {\n return new FirebaseStorageError(Code.INVALID_ARGUMENT, 'Invalid argument in `' + fnName + '` at index ' + index + ': ' + message);\n}\nfunction invalidArgumentCount(argMin, argMax, fnName, real) {\n var countPart;\n var plural;\n if (argMin === argMax) {\n countPart = argMin;\n plural = argMin === 1 ? 'argument' : 'arguments';\n }\n else {\n countPart = 'between ' + argMin + ' and ' + argMax;\n plural = 'arguments';\n }\n return new FirebaseStorageError(Code.INVALID_ARGUMENT_COUNT, 'Invalid argument count in `' +\n fnName +\n '`: Expected ' +\n countPart +\n ' ' +\n plural +\n ', received ' +\n real +\n '.');\n}\nfunction appDeleted() {\n return new FirebaseStorageError(Code.APP_DELETED, 'The Firebase app was deleted.');\n}\n/**\n * @param name The name of the operation that was invalid.\n */\nfunction invalidRootOperation(name) {\n return new FirebaseStorageError(Code.INVALID_ROOT_OPERATION, \"The operation '\" +\n name +\n \"' cannot be performed on a root reference, create a non-root \" +\n \"reference using child, such as .child('file.png').\");\n}\n/**\n * @param format The format that was not valid.\n * @param message A message describing the format violation.\n */\nfunction invalidFormat(format, message) {\n return new FirebaseStorageError(Code.INVALID_FORMAT, \"String does not match format '\" + format + \"': \" + message);\n}\n/**\n * @param message A message describing the internal error.\n */\nfunction internalError(message) {\n throw new FirebaseStorageError(Code.INTERNAL_ERROR, 'Internal error: ' + message);\n}\n\n//# sourceMappingURL=error.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/string.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar StringFormat = {\n RAW: 'raw',\n BASE64: 'base64',\n BASE64URL: 'base64url',\n DATA_URL: 'data_url'\n};\nfunction formatValidator(stringFormat) {\n switch (stringFormat) {\n case StringFormat.RAW:\n case StringFormat.BASE64:\n case StringFormat.BASE64URL:\n case StringFormat.DATA_URL:\n return;\n default:\n throw 'Expected one of the event types: [' +\n StringFormat.RAW +\n ', ' +\n StringFormat.BASE64 +\n ', ' +\n StringFormat.BASE64URL +\n ', ' +\n StringFormat.DATA_URL +\n '].';\n }\n}\n/**\n * @struct\n */\nvar StringData = /** @class */ (function () {\n function StringData(data, opt_contentType) {\n this.data = data;\n this.contentType = opt_contentType || null;\n }\n return StringData;\n}());\n\nfunction dataFromString(format, string) {\n switch (format) {\n case StringFormat.RAW:\n return new StringData(utf8Bytes_(string));\n case StringFormat.BASE64:\n case StringFormat.BASE64URL:\n return new StringData(base64Bytes_(format, string));\n case StringFormat.DATA_URL:\n return new StringData(dataURLBytes_(string), dataURLContentType_(string));\n }\n // assert(false);\n throw unknown();\n}\nfunction utf8Bytes_(string) {\n var b = [];\n for (var i = 0; i < string.length; i++) {\n var c = string.charCodeAt(i);\n if (c <= 127) {\n b.push(c);\n }\n else {\n if (c <= 2047) {\n b.push(192 | (c >> 6), 128 | (c & 63));\n }\n else {\n if ((c & 64512) == 55296) {\n // The start of a surrogate pair.\n var valid = i < string.length - 1 &&\n (string.charCodeAt(i + 1) & 64512) == 56320;\n if (!valid) {\n // The second surrogate wasn't there.\n b.push(239, 191, 189);\n }\n else {\n var hi = c;\n var lo = string.charCodeAt(++i);\n c = 65536 | ((hi & 1023) << 10) | (lo & 1023);\n b.push(240 | (c >> 18), 128 | ((c >> 12) & 63), 128 | ((c >> 6) & 63), 128 | (c & 63));\n }\n }\n else {\n if ((c & 64512) == 56320) {\n // Invalid low surrogate.\n b.push(239, 191, 189);\n }\n else {\n b.push(224 | (c >> 12), 128 | ((c >> 6) & 63), 128 | (c & 63));\n }\n }\n }\n }\n }\n return new Uint8Array(b);\n}\nfunction percentEncodedBytes_(string) {\n var decoded;\n try {\n decoded = decodeURIComponent(string);\n }\n catch (e) {\n throw invalidFormat(StringFormat.DATA_URL, 'Malformed data URL.');\n }\n return utf8Bytes_(decoded);\n}\nfunction base64Bytes_(format, string) {\n switch (format) {\n case StringFormat.BASE64: {\n var hasMinus = string.indexOf('-') !== -1;\n var hasUnder = string.indexOf('_') !== -1;\n if (hasMinus || hasUnder) {\n var invalidChar = hasMinus ? '-' : '_';\n throw invalidFormat(format, \"Invalid character '\" +\n invalidChar +\n \"' found: is it base64url encoded?\");\n }\n break;\n }\n case StringFormat.BASE64URL: {\n var hasPlus = string.indexOf('+') !== -1;\n var hasSlash = string.indexOf('/') !== -1;\n if (hasPlus || hasSlash) {\n var invalidChar = hasPlus ? '+' : '/';\n throw invalidFormat(format, \"Invalid character '\" + invalidChar + \"' found: is it base64 encoded?\");\n }\n string = string.replace(/-/g, '+').replace(/_/g, '/');\n break;\n }\n }\n var bytes;\n try {\n bytes = atob(string);\n }\n catch (e) {\n throw invalidFormat(format, 'Invalid character found');\n }\n var array = new Uint8Array(bytes.length);\n for (var i = 0; i < bytes.length; i++) {\n array[i] = bytes.charCodeAt(i);\n }\n return array;\n}\n/**\n * @struct\n */\nvar string_DataURLParts = /** @class */ (function () {\n function DataURLParts(dataURL) {\n this.base64 = false;\n this.contentType = null;\n var matches = dataURL.match(/^data:([^,]+)?,/);\n if (matches === null) {\n throw invalidFormat(StringFormat.DATA_URL, \"Must be formatted 'data:[][;base64],\");\n }\n var middle = matches[1] || null;\n if (middle != null) {\n this.base64 = endsWith(middle, ';base64');\n this.contentType = this.base64\n ? middle.substring(0, middle.length - ';base64'.length)\n : middle;\n }\n this.rest = dataURL.substring(dataURL.indexOf(',') + 1);\n }\n return DataURLParts;\n}());\nfunction dataURLBytes_(string) {\n var parts = new string_DataURLParts(string);\n if (parts.base64) {\n return base64Bytes_(StringFormat.BASE64, parts.rest);\n }\n else {\n return percentEncodedBytes_(parts.rest);\n }\n}\nfunction dataURLContentType_(string) {\n var parts = new string_DataURLParts(string);\n return parts.contentType;\n}\nfunction endsWith(s, end) {\n var longEnough = s.length >= end.length;\n if (!longEnough) {\n return false;\n }\n return s.substring(s.length - end.length) === end;\n}\n\n//# sourceMappingURL=string.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/taskenums.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar TaskEvent = {\n /** Triggered whenever the task changes or progress is updated. */\n STATE_CHANGED: 'state_changed'\n};\nvar InternalTaskState = {\n RUNNING: 'running',\n PAUSING: 'pausing',\n PAUSED: 'paused',\n SUCCESS: 'success',\n CANCELING: 'canceling',\n CANCELED: 'canceled',\n ERROR: 'error'\n};\nvar TaskState = {\n /** The task is currently transferring data. */\n RUNNING: 'running',\n /** The task was paused by the user. */\n PAUSED: 'paused',\n /** The task completed successfully. */\n SUCCESS: 'success',\n /** The task was canceled. */\n CANCELED: 'canceled',\n /** The task failed with an error. */\n ERROR: 'error'\n};\nfunction taskStateFromInternalTaskState(state) {\n switch (state) {\n case InternalTaskState.RUNNING:\n case InternalTaskState.PAUSING:\n case InternalTaskState.CANCELING:\n return TaskState.RUNNING;\n case InternalTaskState.PAUSED:\n return TaskState.PAUSED;\n case InternalTaskState.SUCCESS:\n return TaskState.SUCCESS;\n case InternalTaskState.CANCELED:\n return TaskState.CANCELED;\n case InternalTaskState.ERROR:\n return TaskState.ERROR;\n default:\n // TODO(andysoto): assert(false);\n return TaskState.ERROR;\n }\n}\n\n//# sourceMappingURL=taskenums.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/object.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Contains methods for working with objects.\n */\nfunction contains(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nfunction forEach(obj, f) {\n for (var key in obj) {\n if (contains(obj, key)) {\n f(key, obj[key]);\n }\n }\n}\nfunction clone(obj) {\n if (obj == null) {\n return {};\n }\n var c = {};\n forEach(obj, function (key, val) {\n c[key] = val;\n });\n return c;\n}\n\n//# sourceMappingURL=object.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/promise_external.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Implements the promise abstraction interface for external\n * (public SDK) packaging, which just passes through to the firebase-app impl.\n */\n/**\n * @template T\n * @param {function((function(T): void),\n * (function(!Error): void))} resolver\n */\nfunction make(resolver) {\n return new Promise(resolver);\n}\n/**\n * @template T\n */\nfunction promise_external_resolve(value) {\n return Promise.resolve(value);\n}\nfunction promise_external_reject(error) {\n return Promise.reject(error);\n}\n\n//# sourceMappingURL=promise_external.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/type.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @return False if the object is undefined or null, true otherwise.\n */\nfunction isDef(p) {\n return p != null;\n}\nfunction isJustDef(p) {\n return p !== void 0;\n}\nfunction isFunction(p) {\n return typeof p === 'function';\n}\nfunction isObject(p) {\n return typeof p === 'object';\n}\nfunction isNonNullObject(p) {\n return isObject(p) && p !== null;\n}\nfunction isNonArrayObject(p) {\n return isObject(p) && !Array.isArray(p);\n}\nfunction isString(p) {\n return typeof p === 'string' || p instanceof String;\n}\nfunction isNumber(p) {\n return typeof p === 'number' || p instanceof Number;\n}\nfunction isNativeBlob(p) {\n return isNativeBlobDefined() && p instanceof Blob;\n}\nfunction isNativeBlobDefined() {\n return typeof Blob !== 'undefined';\n}\n\n//# sourceMappingURL=type.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/xhrio.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @enum{number}\n */\nvar ErrorCode;\n(function (ErrorCode) {\n ErrorCode[ErrorCode[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\n ErrorCode[ErrorCode[\"NETWORK_ERROR\"] = 1] = \"NETWORK_ERROR\";\n ErrorCode[ErrorCode[\"ABORT\"] = 2] = \"ABORT\";\n})(ErrorCode = ErrorCode || (ErrorCode = {}));\n\n//# sourceMappingURL=xhrio.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/xhrio_network.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n/**\n * We use this instead of goog.net.XhrIo because goog.net.XhrIo is hyuuuuge and\n * doesn't work in React Native on Android.\n */\nvar xhrio_network_NetworkXhrIo = /** @class */ (function () {\n function NetworkXhrIo() {\n var _this = this;\n this.sent_ = false;\n this.xhr_ = new XMLHttpRequest();\n this.errorCode_ = ErrorCode.NO_ERROR;\n this.sendPromise_ = make(function (resolve, reject) {\n _this.xhr_.addEventListener('abort', function (event) {\n _this.errorCode_ = ErrorCode.ABORT;\n resolve(_this);\n });\n _this.xhr_.addEventListener('error', function (event) {\n _this.errorCode_ = ErrorCode.NETWORK_ERROR;\n resolve(_this);\n });\n _this.xhr_.addEventListener('load', function (event) {\n resolve(_this);\n });\n });\n }\n /**\n * @override\n */\n NetworkXhrIo.prototype.send = function (url, method, opt_body, opt_headers) {\n var _this = this;\n if (this.sent_) {\n throw internalError('cannot .send() more than once');\n }\n this.sent_ = true;\n this.xhr_.open(method, url, true);\n if (isDef(opt_headers)) {\n var headers = opt_headers;\n forEach(headers, function (key, val) {\n _this.xhr_.setRequestHeader(key, val.toString());\n });\n }\n if (isDef(opt_body)) {\n this.xhr_.send(opt_body);\n }\n else {\n this.xhr_.send();\n }\n return this.sendPromise_;\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getErrorCode = function () {\n if (!this.sent_) {\n throw internalError('cannot .getErrorCode() before sending');\n }\n return this.errorCode_;\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getStatus = function () {\n if (!this.sent_) {\n throw internalError('cannot .getStatus() before sending');\n }\n try {\n return this.xhr_.status;\n }\n catch (e) {\n return -1;\n }\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getResponseText = function () {\n if (!this.sent_) {\n throw internalError('cannot .getResponseText() before sending');\n }\n return this.xhr_.responseText;\n };\n /**\n * Aborts the request.\n * @override\n */\n NetworkXhrIo.prototype.abort = function () {\n this.xhr_.abort();\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getResponseHeader = function (header) {\n return this.xhr_.getResponseHeader(header);\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.addUploadProgressListener = function (listener) {\n if (isDef(this.xhr_.upload)) {\n this.xhr_.upload.addEventListener('progress', listener);\n }\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.removeUploadProgressListener = function (listener) {\n if (isDef(this.xhr_.upload)) {\n this.xhr_.upload.removeEventListener('progress', listener);\n }\n };\n return NetworkXhrIo;\n}());\n\n\n//# sourceMappingURL=xhrio_network.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/xhriopool.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Factory-like class for creating XhrIo instances.\n */\nvar xhriopool_XhrIoPool = /** @class */ (function () {\n function XhrIoPool() {\n }\n XhrIoPool.prototype.createXhrIo = function () {\n return new xhrio_network_NetworkXhrIo();\n };\n return XhrIoPool;\n}());\n\n\n//# sourceMappingURL=xhriopool.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/json.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Returns the Object resulting from parsing the given JSON, or null if the\n * given string does not represent a JSON object.\n */\nfunction jsonObjectOrNull(s) {\n var obj;\n try {\n obj = JSON.parse(s);\n }\n catch (e) {\n return null;\n }\n if (isNonArrayObject(obj)) {\n return obj;\n }\n else {\n return null;\n }\n}\n\n//# sourceMappingURL=json.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/location.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Functionality related to the parsing/composition of bucket/\n * object location.\n */\n\n/**\n * @struct\n */\nvar location_Location = /** @class */ (function () {\n function Location(bucket, path) {\n this.bucket = bucket;\n this.path_ = path;\n }\n Object.defineProperty(Location.prototype, \"path\", {\n get: function () {\n return this.path_;\n },\n enumerable: true,\n configurable: true\n });\n Location.prototype.fullServerUrl = function () {\n var encode = encodeURIComponent;\n return '/b/' + encode(this.bucket) + '/o/' + encode(this.path);\n };\n Location.prototype.bucketOnlyServerUrl = function () {\n var encode = encodeURIComponent;\n return '/b/' + encode(this.bucket) + '/o';\n };\n Location.makeFromBucketSpec = function (bucketString) {\n var bucketLocation;\n try {\n bucketLocation = Location.makeFromUrl(bucketString);\n }\n catch (e) {\n // Not valid URL, use as-is. This lets you put bare bucket names in\n // config.\n return new Location(bucketString, '');\n }\n if (bucketLocation.path === '') {\n return bucketLocation;\n }\n else {\n throw invalidDefaultBucket(bucketString);\n }\n };\n Location.makeFromUrl = function (url) {\n var location = null;\n var bucketDomain = '([A-Za-z0-9.\\\\-]+)';\n function gsModify(loc) {\n if (loc.path.charAt(loc.path.length - 1) === '/') {\n loc.path_ = loc.path_.slice(0, -1);\n }\n }\n var gsPath = '(/(.*))?$';\n var path = '(/([^?#]*).*)?$';\n var gsRegex = new RegExp('^gs://' + bucketDomain + gsPath, 'i');\n var gsIndices = { bucket: 1, path: 3 };\n function httpModify(loc) {\n loc.path_ = decodeURIComponent(loc.path);\n }\n var version = 'v[A-Za-z0-9_]+';\n var httpRegex = new RegExp('^https?://firebasestorage\\\\.googleapis\\\\.com/' +\n version +\n '/b/' +\n bucketDomain +\n '/o' +\n path, 'i');\n var httpIndices = { bucket: 1, path: 3 };\n var groups = [\n { regex: gsRegex, indices: gsIndices, postModify: gsModify },\n { regex: httpRegex, indices: httpIndices, postModify: httpModify }\n ];\n for (var i = 0; i < groups.length; i++) {\n var group = groups[i];\n var captures = group.regex.exec(url);\n if (captures) {\n var bucketValue = captures[group.indices.bucket];\n var pathValue = captures[group.indices.path];\n if (!pathValue) {\n pathValue = '';\n }\n location = new Location(bucketValue, pathValue);\n group.postModify(location);\n break;\n }\n }\n if (location == null) {\n throw invalidUrl(url);\n }\n return location;\n };\n return Location;\n}());\n\n\n//# sourceMappingURL=location.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/path.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Contains helper methods for manipulating paths.\n */\n/**\n * @return Null if the path is already at the root.\n */\nfunction path_parent(path) {\n if (path.length == 0) {\n return null;\n }\n var index = path.lastIndexOf('/');\n if (index === -1) {\n return '';\n }\n var newPath = path.slice(0, index);\n return newPath;\n}\nfunction child(path, childPath) {\n var canonicalChildPath = childPath\n .split('/')\n .filter(function (component) {\n return component.length > 0;\n })\n .join('/');\n if (path.length === 0) {\n return canonicalChildPath;\n }\n else {\n return path + '/' + canonicalChildPath;\n }\n}\n/**\n * Returns the last component of a path.\n * '/foo/bar' -> 'bar'\n * '/foo/bar/baz/' -> 'baz/'\n * '/a' -> 'a'\n */\nfunction lastComponent(path) {\n var index = path.lastIndexOf('/', path.length - 2);\n if (index === -1) {\n return path;\n }\n else {\n return path.slice(index + 1);\n }\n}\n\n//# sourceMappingURL=path.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/url.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Functions to create and manipulate URLs for the server API.\n */\n\n\nfunction makeNormalUrl(urlPart) {\n return domainBase + apiBaseUrl + urlPart;\n}\nfunction makeDownloadUrl(urlPart) {\n return downloadBase + apiBaseUrl + urlPart;\n}\nfunction makeUploadUrl(urlPart) {\n return domainBase + apiUploadBaseUrl + urlPart;\n}\nfunction makeQueryString(params) {\n var encode = encodeURIComponent;\n var queryPart = '?';\n forEach(params, function (key, val) {\n var nextPart = encode(key) + '=' + encode(val);\n queryPart = queryPart + nextPart + '&';\n });\n // Chop off the extra '&' or '?' on the end\n queryPart = queryPart.slice(0, -1);\n return queryPart;\n}\n\n//# sourceMappingURL=url.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/metadata.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\nfunction noXform_(metadata, value) {\n return value;\n}\n/**\n * @struct\n */\nvar Mapping = /** @class */ (function () {\n function Mapping(server, opt_local, opt_writable, opt_xform) {\n this.server = server;\n this.local = opt_local || server;\n this.writable = !!opt_writable;\n this.xform = opt_xform || noXform_;\n }\n return Mapping;\n}());\n\nvar mappings_ = null;\nfunction xformPath(fullPath) {\n var valid = isString(fullPath);\n if (!valid || fullPath.length < 2) {\n return fullPath;\n }\n else {\n fullPath = fullPath;\n return lastComponent(fullPath);\n }\n}\nfunction getMappings() {\n if (mappings_) {\n return mappings_;\n }\n var mappings = [];\n mappings.push(new Mapping('bucket'));\n mappings.push(new Mapping('generation'));\n mappings.push(new Mapping('metageneration'));\n mappings.push(new Mapping('name', 'fullPath', true));\n function mappingsXformPath(metadata, fullPath) {\n return xformPath(fullPath);\n }\n var nameMapping = new Mapping('name');\n nameMapping.xform = mappingsXformPath;\n mappings.push(nameMapping);\n /**\n * Coerces the second param to a number, if it is defined.\n */\n function xformSize(metadata, size) {\n if (isDef(size)) {\n return +size;\n }\n else {\n return size;\n }\n }\n var sizeMapping = new Mapping('size');\n sizeMapping.xform = xformSize;\n mappings.push(sizeMapping);\n mappings.push(new Mapping('timeCreated'));\n mappings.push(new Mapping('updated'));\n mappings.push(new Mapping('md5Hash', null, true));\n mappings.push(new Mapping('cacheControl', null, true));\n mappings.push(new Mapping('contentDisposition', null, true));\n mappings.push(new Mapping('contentEncoding', null, true));\n mappings.push(new Mapping('contentLanguage', null, true));\n mappings.push(new Mapping('contentType', null, true));\n mappings.push(new Mapping('metadata', 'customMetadata', true));\n /**\n * Transforms a comma-separated string of tokens into a list of download\n * URLs.\n */\n function xformTokens(metadata, tokens) {\n var valid = isString(tokens) && tokens.length > 0;\n if (!valid) {\n // This can happen if objects are uploaded through GCS and retrieved\n // through list, so we don't want to throw an Error.\n return [];\n }\n var encode = encodeURIComponent;\n var tokensList = tokens.split(',');\n var urls = tokensList.map(function (token) {\n var bucket = metadata['bucket'];\n var path = metadata['fullPath'];\n var urlPart = '/b/' + encode(bucket) + '/o/' + encode(path);\n var base = makeDownloadUrl(urlPart);\n var queryString = makeQueryString({\n alt: 'media',\n token: token\n });\n return base + queryString;\n });\n return urls;\n }\n mappings.push(new Mapping('downloadTokens', 'downloadURLs', false, xformTokens));\n mappings_ = mappings;\n return mappings_;\n}\nfunction addRef(metadata, authWrapper) {\n function generateRef() {\n var bucket = metadata['bucket'];\n var path = metadata['fullPath'];\n var loc = new location_Location(bucket, path);\n return authWrapper.makeStorageReference(loc);\n }\n Object.defineProperty(metadata, 'ref', { get: generateRef });\n}\nfunction fromResource(authWrapper, resource, mappings) {\n var metadata = {};\n metadata['type'] = 'file';\n var len = mappings.length;\n for (var i = 0; i < len; i++) {\n var mapping = mappings[i];\n metadata[mapping.local] = mapping.xform(metadata, resource[mapping.server]);\n }\n addRef(metadata, authWrapper);\n return metadata;\n}\nfunction fromResourceString(authWrapper, resourceString, mappings) {\n var obj = jsonObjectOrNull(resourceString);\n if (obj === null) {\n return null;\n }\n var resource = obj;\n return fromResource(authWrapper, resource, mappings);\n}\nfunction toResourceString(metadata, mappings) {\n var resource = {};\n var len = mappings.length;\n for (var i = 0; i < len; i++) {\n var mapping = mappings[i];\n if (mapping.writable) {\n resource[mapping.server] = metadata[mapping.local];\n }\n }\n return JSON.stringify(resource);\n}\nfunction metadataValidator(p) {\n var validType = p && isObject(p);\n if (!validType) {\n throw 'Expected Metadata object.';\n }\n for (var key in p) {\n var val = p[key];\n if (key === 'customMetadata') {\n if (!isObject(val)) {\n throw 'Expected object for \\'customMetadata\\' mapping.';\n }\n }\n else {\n if (isNonNullObject(val)) {\n throw \"Mapping for '\" + key + \"' cannot be an object.\";\n }\n }\n }\n}\n\n//# sourceMappingURL=metadata.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/args.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n/**\n * @param name Name of the function.\n * @param specs Argument specs.\n * @param passed The actual arguments passed to the function.\n * @throws {fbs.Error} If the arguments are invalid.\n */\nfunction validate(name, specs, passed) {\n var minArgs = specs.length;\n var maxArgs = specs.length;\n for (var i = 0; i < specs.length; i++) {\n if (specs[i].optional) {\n minArgs = i;\n break;\n }\n }\n var validLength = minArgs <= passed.length && passed.length <= maxArgs;\n if (!validLength) {\n throw invalidArgumentCount(minArgs, maxArgs, name, passed.length);\n }\n for (var i = 0; i < passed.length; i++) {\n try {\n specs[i].validator(passed[i]);\n }\n catch (e) {\n if (e instanceof Error) {\n throw invalidArgument(i, name, e.message);\n }\n else {\n throw invalidArgument(i, name, e);\n }\n }\n }\n}\n/**\n * @struct\n */\nvar args_ArgSpec = /** @class */ (function () {\n function ArgSpec(validator, opt_optional) {\n var self = this;\n this.validator = function (p) {\n if (self.optional && !isJustDef(p)) {\n return;\n }\n validator(p);\n };\n this.optional = !!opt_optional;\n }\n return ArgSpec;\n}());\n\nfunction and_(v1, v2) {\n return function (p) {\n v1(p);\n v2(p);\n };\n}\nfunction stringSpec(opt_validator, opt_optional) {\n function stringValidator(p) {\n if (!isString(p)) {\n throw 'Expected string.';\n }\n }\n var validator;\n if (opt_validator) {\n validator = and_(stringValidator, opt_validator);\n }\n else {\n validator = stringValidator;\n }\n return new args_ArgSpec(validator, opt_optional);\n}\nfunction uploadDataSpec() {\n function validator(p) {\n var valid = p instanceof Uint8Array ||\n p instanceof ArrayBuffer ||\n (isNativeBlobDefined() && p instanceof Blob);\n if (!valid) {\n throw 'Expected Blob or File.';\n }\n }\n return new args_ArgSpec(validator);\n}\nfunction metadataSpec(opt_optional) {\n return new args_ArgSpec(metadataValidator, opt_optional);\n}\nfunction nonNegativeNumberSpec() {\n function validator(p) {\n var valid = isNumber(p) && p >= 0;\n if (!valid) {\n throw 'Expected a number 0 or greater.';\n }\n }\n return new args_ArgSpec(validator);\n}\nfunction looseObjectSpec(opt_validator, opt_optional) {\n function validator(p) {\n var isLooseObject = p === null || (isDef(p) && p instanceof Object);\n if (!isLooseObject) {\n throw 'Expected an Object.';\n }\n if (opt_validator !== undefined && opt_validator !== null) {\n opt_validator(p);\n }\n }\n return new args_ArgSpec(validator, opt_optional);\n}\nfunction nullFunctionSpec(opt_optional) {\n function validator(p) {\n var valid = p === null || isFunction(p);\n if (!valid) {\n throw 'Expected a Function.';\n }\n }\n return new args_ArgSpec(validator, opt_optional);\n}\n\n//# sourceMappingURL=args.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/fs.js\n\nfunction getBlobBuilder() {\n if (typeof BlobBuilder !== 'undefined') {\n return BlobBuilder;\n }\n else if (typeof WebKitBlobBuilder !== 'undefined') {\n return WebKitBlobBuilder;\n }\n else {\n return undefined;\n }\n}\n/**\n * Concatenates one or more values together and converts them to a Blob.\n *\n * @param var_args The values that will make up the resulting blob.\n * @return The blob.\n */\nfunction getBlob() {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var BlobBuilder = getBlobBuilder();\n if (BlobBuilder !== undefined) {\n var bb = new BlobBuilder();\n for (var i = 0; i < var_args.length; i++) {\n bb.append(var_args[i]);\n }\n return bb.getBlob();\n }\n else {\n if (isNativeBlobDefined()) {\n return new Blob(var_args);\n }\n else {\n throw Error(\"This browser doesn't seem to support creating Blobs\");\n }\n }\n}\n/**\n * Slices the blob. The returned blob contains data from the start byte\n * (inclusive) till the end byte (exclusive). Negative indices cannot be used.\n *\n * @param blob The blob to be sliced.\n * @param start Index of the starting byte.\n * @param end Index of the ending byte.\n * @return The blob slice or null if not supported.\n */\nfunction sliceBlob(blob, start, end) {\n if (blob.webkitSlice) {\n return blob.webkitSlice(start, end);\n }\n else if (blob.mozSlice) {\n return blob.mozSlice(start, end);\n }\n else if (blob.slice) {\n return blob.slice(start, end);\n }\n return null;\n}\n\n//# sourceMappingURL=fs.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/blob.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @file Provides a Blob-like wrapper for various binary types (including the\n * native Blob type). This makes it possible to upload types like ArrayBuffers,\n * making uploads possible in environments without the native Blob type.\n */\n\n\n\n\n/**\n * @param opt_elideCopy If true, doesn't copy mutable input data\n * (e.g. Uint8Arrays). Pass true only if you know the objects will not be\n * modified after this blob's construction.\n */\nvar blob_FbsBlob = /** @class */ (function () {\n function FbsBlob(data, opt_elideCopy) {\n var size = 0;\n var blobType = '';\n if (isNativeBlob(data)) {\n this.data_ = data;\n size = data.size;\n blobType = data.type;\n }\n else if (data instanceof ArrayBuffer) {\n if (opt_elideCopy) {\n this.data_ = new Uint8Array(data);\n }\n else {\n this.data_ = new Uint8Array(data.byteLength);\n this.data_.set(new Uint8Array(data));\n }\n size = this.data_.length;\n }\n else if (data instanceof Uint8Array) {\n if (opt_elideCopy) {\n this.data_ = data;\n }\n else {\n this.data_ = new Uint8Array(data.length);\n this.data_.set(data);\n }\n size = data.length;\n }\n this.size_ = size;\n this.type_ = blobType;\n }\n FbsBlob.prototype.size = function () {\n return this.size_;\n };\n FbsBlob.prototype.type = function () {\n return this.type_;\n };\n FbsBlob.prototype.slice = function (startByte, endByte) {\n if (isNativeBlob(this.data_)) {\n var realBlob = this.data_;\n var sliced = sliceBlob(realBlob, startByte, endByte);\n if (sliced === null) {\n return null;\n }\n return new FbsBlob(sliced);\n }\n else {\n var slice = new Uint8Array(this.data_.buffer, startByte, endByte - startByte);\n return new FbsBlob(slice, true);\n }\n };\n FbsBlob.getBlob = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n if (isNativeBlobDefined()) {\n var blobby = var_args.map(function (val) {\n if (val instanceof FbsBlob) {\n return val.data_;\n }\n else {\n return val;\n }\n });\n return new FbsBlob(getBlob.apply(null, blobby));\n }\n else {\n var uint8Arrays = var_args.map(function (val) {\n if (isString(val)) {\n return dataFromString(StringFormat.RAW, val).data;\n }\n else {\n // Blobs don't exist, so this has to be a Uint8Array.\n return val.data_;\n }\n });\n var finalLength_1 = 0;\n uint8Arrays.forEach(function (array) {\n finalLength_1 += array.byteLength;\n });\n var merged_1 = new Uint8Array(finalLength_1);\n var index_1 = 0;\n uint8Arrays.forEach(function (array) {\n for (var i = 0; i < array.length; i++) {\n merged_1[index_1++] = array[i];\n }\n });\n return new FbsBlob(merged_1, true);\n }\n };\n FbsBlob.prototype.uploadData = function () {\n return this.data_;\n };\n return FbsBlob;\n}());\n\n\n//# sourceMappingURL=blob.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/array.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns true if the object is contained in the array (compared with ===).\n * @template T\n */\nfunction array_contains(array, elem) {\n return array.indexOf(elem) !== -1;\n}\n/**\n * Returns a shallow copy of the array or array-like object (e.g. arguments).\n * @template T\n */\nfunction array_clone(arraylike) {\n return Array.prototype.slice.call(arraylike);\n}\n/**\n * Removes the given element from the given array, if it is contained.\n * Directly modifies the passed-in array.\n * @template T\n */\nfunction remove(array, elem) {\n var i = array.indexOf(elem);\n if (i !== -1) {\n array.splice(i, 1);\n }\n}\n\n//# sourceMappingURL=array.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/requestinfo.js\nvar RequestInfo = /** @class */ (function () {\n function RequestInfo(url, method, \n /**\n * Returns the value with which to resolve the request's promise. Only called\n * if the request is successful. Throw from this function to reject the\n * returned Request's promise with the thrown error.\n * Note: The XhrIo passed to this function may be reused after this callback\n * returns. Do not keep a reference to it in any way.\n */\n handler, timeout) {\n this.url = url;\n this.method = method;\n this.handler = handler;\n this.timeout = timeout;\n this.urlParams = {};\n this.headers = {};\n this.body = null;\n this.errorHandler = null;\n /**\n * Called with the current number of bytes uploaded and total size (-1 if not\n * computable) of the request body (i.e. used to report upload progress).\n */\n this.progressCallback = null;\n this.successCodes = [200];\n this.additionalRetryCodes = [];\n }\n return RequestInfo;\n}());\n\n\n//# sourceMappingURL=requestinfo.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/requests.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n\n/**\n * Throws the UNKNOWN FirebaseStorageError if cndn is false.\n */\nfunction handlerCheck(cndn) {\n if (!cndn) {\n throw unknown();\n }\n}\nfunction metadataHandler(authWrapper, mappings) {\n function handler(xhr, text) {\n var metadata = fromResourceString(authWrapper, text, mappings);\n handlerCheck(metadata !== null);\n return metadata;\n }\n return handler;\n}\nfunction sharedErrorHandler(location) {\n function errorHandler(xhr, err) {\n var newErr;\n if (xhr.getStatus() === 401) {\n newErr = unauthenticated();\n }\n else {\n if (xhr.getStatus() === 402) {\n newErr = quotaExceeded(location.bucket);\n }\n else {\n if (xhr.getStatus() === 403) {\n newErr = unauthorized(location.path);\n }\n else {\n newErr = err;\n }\n }\n }\n newErr.setServerResponseProp(err.serverResponseProp());\n return newErr;\n }\n return errorHandler;\n}\nfunction objectErrorHandler(location) {\n var shared = sharedErrorHandler(location);\n function errorHandler(xhr, err) {\n var newErr = shared(xhr, err);\n if (xhr.getStatus() === 404) {\n newErr = objectNotFound(location.path);\n }\n newErr.setServerResponseProp(err.serverResponseProp());\n return newErr;\n }\n return errorHandler;\n}\nfunction getMetadata(authWrapper, location, mappings) {\n var urlPart = location.fullServerUrl();\n var url = makeNormalUrl(urlPart);\n var method = 'GET';\n var timeout = authWrapper.maxOperationRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nfunction updateMetadata(authWrapper, location, metadata, mappings) {\n var urlPart = location.fullServerUrl();\n var url = makeNormalUrl(urlPart);\n var method = 'PATCH';\n var body = toResourceString(metadata, mappings);\n var headers = { 'Content-Type': 'application/json; charset=utf-8' };\n var timeout = authWrapper.maxOperationRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.headers = headers;\n requestInfo.body = body;\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nfunction deleteObject(authWrapper, location) {\n var urlPart = location.fullServerUrl();\n var url = makeNormalUrl(urlPart);\n var method = 'DELETE';\n var timeout = authWrapper.maxOperationRetryTime();\n function handler(xhr, text) { }\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.successCodes = [200, 204];\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nfunction determineContentType_(metadata, blob) {\n return ((metadata && metadata['contentType']) ||\n (blob && blob.type()) ||\n 'application/octet-stream');\n}\nfunction metadataForUpload_(location, blob, opt_metadata) {\n var metadata = clone(opt_metadata);\n metadata['fullPath'] = location.path;\n metadata['size'] = blob.size();\n if (!metadata['contentType']) {\n metadata['contentType'] = determineContentType_(null, blob);\n }\n return metadata;\n}\nfunction multipartUpload(authWrapper, location, mappings, blob, opt_metadata) {\n var urlPart = location.bucketOnlyServerUrl();\n var headers = {\n 'X-Goog-Upload-Protocol': 'multipart'\n };\n function genBoundary() {\n var str = '';\n for (var i = 0; i < 2; i++) {\n str =\n str +\n Math.random()\n .toString()\n .slice(2);\n }\n return str;\n }\n var boundary = genBoundary();\n headers['Content-Type'] = 'multipart/related; boundary=' + boundary;\n var metadata = metadataForUpload_(location, blob, opt_metadata);\n var metadataString = toResourceString(metadata, mappings);\n var preBlobPart = '--' +\n boundary +\n '\\r\\n' +\n 'Content-Type: application/json; charset=utf-8\\r\\n\\r\\n' +\n metadataString +\n '\\r\\n--' +\n boundary +\n '\\r\\n' +\n 'Content-Type: ' +\n metadata['contentType'] +\n '\\r\\n\\r\\n';\n var postBlobPart = '\\r\\n--' + boundary + '--';\n var body = blob_FbsBlob.getBlob(preBlobPart, blob, postBlobPart);\n if (body === null) {\n throw cannotSliceBlob();\n }\n var urlParams = { name: metadata['fullPath'] };\n var url = makeUploadUrl(urlPart);\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.urlParams = urlParams;\n requestInfo.headers = headers;\n requestInfo.body = body.uploadData();\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * @param current The number of bytes that have been uploaded so far.\n * @param total The total number of bytes in the upload.\n * @param opt_finalized True if the server has finished the upload.\n * @param opt_metadata The upload metadata, should\n * only be passed if opt_finalized is true.\n * @struct\n */\nvar ResumableUploadStatus = /** @class */ (function () {\n function ResumableUploadStatus(current, total, finalized, metadata) {\n this.current = current;\n this.total = total;\n this.finalized = !!finalized;\n this.metadata = metadata || null;\n }\n return ResumableUploadStatus;\n}());\n\nfunction checkResumeHeader_(xhr, opt_allowed) {\n var status;\n try {\n status = xhr.getResponseHeader('X-Goog-Upload-Status');\n }\n catch (e) {\n handlerCheck(false);\n }\n var allowed = opt_allowed || ['active'];\n handlerCheck(array_contains(allowed, status));\n return status;\n}\nfunction createResumableUpload(authWrapper, location, mappings, blob, opt_metadata) {\n var urlPart = location.bucketOnlyServerUrl();\n var metadata = metadataForUpload_(location, blob, opt_metadata);\n var urlParams = { name: metadata['fullPath'] };\n var url = makeUploadUrl(urlPart);\n var method = 'POST';\n var headers = {\n 'X-Goog-Upload-Protocol': 'resumable',\n 'X-Goog-Upload-Command': 'start',\n 'X-Goog-Upload-Header-Content-Length': blob.size(),\n 'X-Goog-Upload-Header-Content-Type': metadata['contentType'],\n 'Content-Type': 'application/json; charset=utf-8'\n };\n var body = toResourceString(metadata, mappings);\n var timeout = authWrapper.maxUploadRetryTime();\n function handler(xhr, text) {\n checkResumeHeader_(xhr);\n var url;\n try {\n url = xhr.getResponseHeader('X-Goog-Upload-URL');\n }\n catch (e) {\n handlerCheck(false);\n }\n handlerCheck(isString(url));\n return url;\n }\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.urlParams = urlParams;\n requestInfo.headers = headers;\n requestInfo.body = body;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * @param url From a call to fbs.requests.createResumableUpload.\n */\nfunction getResumableUploadStatus(authWrapper, location, url, blob) {\n var headers = { 'X-Goog-Upload-Command': 'query' };\n function handler(xhr, text) {\n var status = checkResumeHeader_(xhr, ['active', 'final']);\n var sizeString;\n try {\n sizeString = xhr.getResponseHeader('X-Goog-Upload-Size-Received');\n }\n catch (e) {\n handlerCheck(false);\n }\n var size = parseInt(sizeString, 10);\n handlerCheck(!isNaN(size));\n return new ResumableUploadStatus(size, blob.size(), status === 'final');\n }\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.headers = headers;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * Any uploads via the resumable upload API must transfer a number of bytes\n * that is a multiple of this number.\n */\nvar resumableUploadChunkSize = 256 * 1024;\n/**\n * @param url From a call to fbs.requests.createResumableUpload.\n * @param chunkSize Number of bytes to upload.\n * @param opt_status The previous status.\n * If not passed or null, we start from the beginning.\n * @throws fbs.Error If the upload is already complete, the passed in status\n * has a final size inconsistent with the blob, or the blob cannot be sliced\n * for upload.\n */\nfunction continueResumableUpload(location, authWrapper, url, blob, chunkSize, mappings, opt_status, opt_progressCallback) {\n // TODO(andysoto): standardize on internal asserts\n // assert(!(opt_status && opt_status.finalized));\n var status = new ResumableUploadStatus(0, 0);\n if (opt_status) {\n status.current = opt_status.current;\n status.total = opt_status.total;\n }\n else {\n status.current = 0;\n status.total = blob.size();\n }\n if (blob.size() !== status.total) {\n throw serverFileWrongSize();\n }\n var bytesLeft = status.total - status.current;\n var bytesToUpload = bytesLeft;\n if (chunkSize > 0) {\n bytesToUpload = Math.min(bytesToUpload, chunkSize);\n }\n var startByte = status.current;\n var endByte = startByte + bytesToUpload;\n var uploadCommand = bytesToUpload === bytesLeft ? 'upload, finalize' : 'upload';\n var headers = {\n 'X-Goog-Upload-Command': uploadCommand,\n 'X-Goog-Upload-Offset': status.current\n };\n var body = blob.slice(startByte, endByte);\n if (body === null) {\n throw cannotSliceBlob();\n }\n function handler(xhr, text) {\n // TODO(andysoto): Verify the MD5 of each uploaded range:\n // the 'x-range-md5' header comes back with status code 308 responses.\n // We'll only be able to bail out though, because you can't re-upload a\n // range that you previously uploaded.\n var uploadStatus = checkResumeHeader_(xhr, ['active', 'final']);\n var newCurrent = status.current + bytesToUpload;\n var size = blob.size();\n var metadata;\n if (uploadStatus === 'final') {\n metadata = metadataHandler(authWrapper, mappings)(xhr, text);\n }\n else {\n metadata = null;\n }\n return new ResumableUploadStatus(newCurrent, size, uploadStatus === 'final', metadata);\n }\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.headers = headers;\n requestInfo.body = body.uploadData();\n requestInfo.progressCallback = opt_progressCallback || null;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n\n//# sourceMappingURL=requests.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/observer.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @struct\n */\nvar observer_Observer = /** @class */ (function () {\n function Observer(nextOrObserver, opt_error, opt_complete) {\n var asFunctions = isFunction(nextOrObserver) ||\n isDef(opt_error) ||\n isDef(opt_complete);\n if (asFunctions) {\n this.next = nextOrObserver;\n this.error = opt_error || null;\n this.complete = opt_complete || null;\n }\n else {\n var observer = nextOrObserver;\n this.next = observer.next || null;\n this.error = observer.error || null;\n this.complete = observer.complete || null;\n }\n }\n return Observer;\n}());\n\n\n//# sourceMappingURL=observer.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/tasksnapshot.js\nvar UploadTaskSnapshot = /** @class */ (function () {\n function UploadTaskSnapshot(bytesTransferred, totalBytes, state, metadata, task, ref) {\n this.bytesTransferred = bytesTransferred;\n this.totalBytes = totalBytes;\n this.state = state;\n this.metadata = metadata;\n this.task = task;\n this.ref = ref;\n }\n Object.defineProperty(UploadTaskSnapshot.prototype, \"downloadURL\", {\n get: function () {\n if (this.metadata !== null) {\n var urls = this.metadata['downloadURLs'];\n if (urls != null && urls[0] != null) {\n return urls[0];\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n return UploadTaskSnapshot;\n}());\n\n\n//# sourceMappingURL=tasksnapshot.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/async.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Method for invoking a callback asynchronously.\n */\n\n/**\n * Returns a function that invokes f with its arguments asynchronously as a\n * microtask, i.e. as soon as possible after the current script returns back\n * into browser code.\n */\nfunction async_async(f) {\n return function () {\n var argsToForward = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n argsToForward[_i] = arguments[_i];\n }\n promise_external_resolve(true).then(function () {\n f.apply(null, argsToForward);\n });\n };\n}\n\n//# sourceMappingURL=async.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/task.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines types for interacting with blob transfer tasks.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Represents a blob being uploaded. Can be used to pause/resume/cancel the\n * upload and manage callbacks for various events.\n */\nvar task_UploadTask = /** @class */ (function () {\n /**\n * @param ref The firebaseStorage.Reference object this task came\n * from, untyped to avoid cyclic dependencies.\n * @param blob The blob to upload.\n */\n function UploadTask(ref, authWrapper, location, mappings, blob, metadata) {\n if (metadata === void 0) { metadata = null; }\n var _this = this;\n this.transferred_ = 0;\n this.needToFetchStatus_ = false;\n this.needToFetchMetadata_ = false;\n this.observers_ = [];\n this.error_ = null;\n this.uploadUrl_ = null;\n this.request_ = null;\n this.chunkMultiplier_ = 1;\n this.resolve_ = null;\n this.reject_ = null;\n this.ref_ = ref;\n this.authWrapper_ = authWrapper;\n this.location_ = location;\n this.blob_ = blob;\n this.metadata_ = metadata;\n this.mappings_ = mappings;\n this.resumable_ = this.shouldDoResumable_(this.blob_);\n this.state_ = InternalTaskState.RUNNING;\n this.errorHandler_ = function (error) {\n _this.request_ = null;\n _this.chunkMultiplier_ = 1;\n if (error.codeEquals(Code.CANCELED)) {\n _this.needToFetchStatus_ = true;\n _this.completeTransitions_();\n }\n else {\n _this.error_ = error;\n _this.transition_(InternalTaskState.ERROR);\n }\n };\n this.metadataErrorHandler_ = function (error) {\n _this.request_ = null;\n if (error.codeEquals(Code.CANCELED)) {\n _this.completeTransitions_();\n }\n else {\n _this.error_ = error;\n _this.transition_(InternalTaskState.ERROR);\n }\n };\n this.promise_ = make(function (resolve, reject) {\n _this.resolve_ = resolve;\n _this.reject_ = reject;\n _this.start_();\n });\n // Prevent uncaught rejections on the internal promise from bubbling out\n // to the top level with a dummy handler.\n this.promise_.then(null, function () { });\n }\n UploadTask.prototype.makeProgressCallback_ = function () {\n var _this = this;\n var sizeBefore = this.transferred_;\n return function (loaded, total) {\n _this.updateProgress_(sizeBefore + loaded);\n };\n };\n UploadTask.prototype.shouldDoResumable_ = function (blob) {\n return blob.size() > 256 * 1024;\n };\n UploadTask.prototype.start_ = function () {\n if (this.state_ !== InternalTaskState.RUNNING) {\n // This can happen if someone pauses us in a resume callback, for example.\n return;\n }\n if (this.request_ !== null) {\n return;\n }\n if (this.resumable_) {\n if (this.uploadUrl_ === null) {\n this.createResumable_();\n }\n else {\n if (this.needToFetchStatus_) {\n this.fetchStatus_();\n }\n else {\n if (this.needToFetchMetadata_) {\n // Happens if we miss the metadata on upload completion.\n this.fetchMetadata_();\n }\n else {\n this.continueUpload_();\n }\n }\n }\n }\n else {\n this.oneShotUpload_();\n }\n };\n UploadTask.prototype.resolveToken_ = function (callback) {\n var _this = this;\n this.authWrapper_.getAuthToken().then(function (authToken) {\n switch (_this.state_) {\n case InternalTaskState.RUNNING:\n callback(authToken);\n break;\n case InternalTaskState.CANCELING:\n _this.transition_(InternalTaskState.CANCELED);\n break;\n case InternalTaskState.PAUSING:\n _this.transition_(InternalTaskState.PAUSED);\n break;\n default:\n }\n });\n };\n // TODO(andysoto): assert false\n UploadTask.prototype.createResumable_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = createResumableUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\n var createRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = createRequest;\n createRequest.getPromise().then(function (url) {\n _this.request_ = null;\n _this.uploadUrl_ = url;\n _this.needToFetchStatus_ = false;\n _this.completeTransitions_();\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.fetchStatus_ = function () {\n var _this = this;\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\n var url = this.uploadUrl_;\n this.resolveToken_(function (authToken) {\n var requestInfo = getResumableUploadStatus(_this.authWrapper_, _this.location_, url, _this.blob_);\n var statusRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = statusRequest;\n statusRequest.getPromise().then(function (status) {\n status = status;\n _this.request_ = null;\n _this.updateProgress_(status.current);\n _this.needToFetchStatus_ = false;\n if (status.finalized) {\n _this.needToFetchMetadata_ = true;\n }\n _this.completeTransitions_();\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.continueUpload_ = function () {\n var _this = this;\n var chunkSize = resumableUploadChunkSize * this.chunkMultiplier_;\n var status = new ResumableUploadStatus(this.transferred_, this.blob_.size());\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\n var url = this.uploadUrl_;\n this.resolveToken_(function (authToken) {\n var requestInfo;\n try {\n requestInfo = continueResumableUpload(_this.location_, _this.authWrapper_, url, _this.blob_, chunkSize, _this.mappings_, status, _this.makeProgressCallback_());\n }\n catch (e) {\n _this.error_ = e;\n _this.transition_(InternalTaskState.ERROR);\n return;\n }\n var uploadRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = uploadRequest;\n uploadRequest\n .getPromise()\n .then(function (newStatus) {\n _this.increaseMultiplier_();\n _this.request_ = null;\n _this.updateProgress_(newStatus.current);\n if (newStatus.finalized) {\n _this.metadata_ = newStatus.metadata;\n _this.transition_(InternalTaskState.SUCCESS);\n }\n else {\n _this.completeTransitions_();\n }\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.increaseMultiplier_ = function () {\n var currentSize = resumableUploadChunkSize * this.chunkMultiplier_;\n // Max chunk size is 32M.\n if (currentSize < 32 * 1024 * 1024) {\n this.chunkMultiplier_ *= 2;\n }\n };\n UploadTask.prototype.fetchMetadata_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = getMetadata(_this.authWrapper_, _this.location_, _this.mappings_);\n var metadataRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = metadataRequest;\n metadataRequest.getPromise().then(function (metadata) {\n _this.request_ = null;\n _this.metadata_ = metadata;\n _this.transition_(InternalTaskState.SUCCESS);\n }, _this.metadataErrorHandler_);\n });\n };\n UploadTask.prototype.oneShotUpload_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = multipartUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\n var multipartRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = multipartRequest;\n multipartRequest.getPromise().then(function (metadata) {\n _this.request_ = null;\n _this.metadata_ = metadata;\n _this.updateProgress_(_this.blob_.size());\n _this.transition_(InternalTaskState.SUCCESS);\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.updateProgress_ = function (transferred) {\n var old = this.transferred_;\n this.transferred_ = transferred;\n // A progress update can make the \"transferred\" value smaller (e.g. a\n // partial upload not completed by server, after which the \"transferred\"\n // value may reset to the value at the beginning of the request).\n if (this.transferred_ !== old) {\n this.notifyObservers_();\n }\n };\n UploadTask.prototype.transition_ = function (state) {\n if (this.state_ === state) {\n return;\n }\n switch (state) {\n case InternalTaskState.CANCELING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING);\n this.state_ = state;\n if (this.request_ !== null) {\n this.request_.cancel();\n }\n break;\n case InternalTaskState.PAUSING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING);\n this.state_ = state;\n if (this.request_ !== null) {\n this.request_.cancel();\n }\n break;\n case InternalTaskState.RUNNING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSED ||\n // this.state_ === InternalTaskState.PAUSING);\n var wasPaused = this.state_ === InternalTaskState.PAUSED;\n this.state_ = state;\n if (wasPaused) {\n this.notifyObservers_();\n this.start_();\n }\n break;\n case InternalTaskState.PAUSED:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.CANCELED:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSED ||\n // this.state_ === InternalTaskState.CANCELING);\n this.error_ = error_canceled();\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.ERROR:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING ||\n // this.state_ === InternalTaskState.CANCELING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.SUCCESS:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING ||\n // this.state_ === InternalTaskState.CANCELING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n }\n };\n UploadTask.prototype.completeTransitions_ = function () {\n switch (this.state_) {\n case InternalTaskState.PAUSING:\n this.transition_(InternalTaskState.PAUSED);\n break;\n case InternalTaskState.CANCELING:\n this.transition_(InternalTaskState.CANCELED);\n break;\n case InternalTaskState.RUNNING:\n this.start_();\n break;\n default:\n // TODO(andysoto): assert(false);\n break;\n }\n };\n Object.defineProperty(UploadTask.prototype, \"snapshot\", {\n get: function () {\n var externalState = taskStateFromInternalTaskState(this.state_);\n return new UploadTaskSnapshot(this.transferred_, this.blob_.size(), externalState, this.metadata_, this, this.ref_);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Adds a callback for an event.\n * @param type The type of event to listen for.\n */\n UploadTask.prototype.on = function (type, nextOrObserver, error, completed) {\n if (nextOrObserver === void 0) { nextOrObserver = undefined; }\n if (error === void 0) { error = undefined; }\n if (completed === void 0) { completed = undefined; }\n function typeValidator(_p) {\n if (type !== TaskEvent.STATE_CHANGED) {\n throw \"Expected one of the event types: [\" + TaskEvent.STATE_CHANGED + \"].\";\n }\n }\n var nextOrObserverMessage = 'Expected a function or an Object with one of ' +\n '`next`, `error`, `complete` properties.';\n var nextValidator = nullFunctionSpec(true).validator;\n var observerValidator = looseObjectSpec(null, true).validator;\n function nextOrObserverValidator(p) {\n try {\n nextValidator(p);\n return;\n }\n catch (e) { }\n try {\n observerValidator(p);\n var anyDefined = isJustDef(p['next']) ||\n isJustDef(p['error']) ||\n isJustDef(p['complete']);\n if (!anyDefined) {\n throw '';\n }\n return;\n }\n catch (e) {\n throw nextOrObserverMessage;\n }\n }\n var specs = [\n stringSpec(typeValidator),\n looseObjectSpec(nextOrObserverValidator, true),\n nullFunctionSpec(true),\n nullFunctionSpec(true)\n ];\n validate('on', specs, arguments);\n var self = this;\n function makeBinder(specs) {\n function binder(nextOrObserver, error, opt_complete) {\n if (specs !== null) {\n validate('on', specs, arguments);\n }\n var observer = new observer_Observer(nextOrObserver, error, completed);\n self.addObserver_(observer);\n return function () {\n self.removeObserver_(observer);\n };\n }\n return binder;\n }\n function binderNextOrObserverValidator(p) {\n if (p === null) {\n throw nextOrObserverMessage;\n }\n nextOrObserverValidator(p);\n }\n var binderSpecs = [\n looseObjectSpec(binderNextOrObserverValidator),\n nullFunctionSpec(true),\n nullFunctionSpec(true)\n ];\n var typeOnly = !(isJustDef(nextOrObserver) ||\n isJustDef(error) ||\n isJustDef(completed));\n if (typeOnly) {\n return makeBinder(binderSpecs);\n }\n else {\n return makeBinder(null)(nextOrObserver, error, completed);\n }\n };\n /**\n * This object behaves like a Promise, and resolves with its snapshot data\n * when the upload completes.\n * @param onFulfilled The fulfillment callback. Promise chaining works as normal.\n * @param onRejected The rejection callback.\n */\n UploadTask.prototype.then = function (onFulfilled, onRejected) {\n // These casts are needed so that TypeScript can infer the types of the\n // resulting Promise.\n return this.promise_.then(onFulfilled, onRejected);\n };\n /**\n * Equivalent to calling `then(null, onRejected)`.\n */\n UploadTask.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n /**\n * Adds the given observer.\n */\n UploadTask.prototype.addObserver_ = function (observer) {\n this.observers_.push(observer);\n this.notifyObserver_(observer);\n };\n /**\n * Removes the given observer.\n */\n UploadTask.prototype.removeObserver_ = function (observer) {\n remove(this.observers_, observer);\n };\n UploadTask.prototype.notifyObservers_ = function () {\n var _this = this;\n this.finishPromise_();\n var observers = array_clone(this.observers_);\n observers.forEach(function (observer) {\n _this.notifyObserver_(observer);\n });\n };\n UploadTask.prototype.finishPromise_ = function () {\n if (this.resolve_ !== null) {\n var triggered = true;\n switch (taskStateFromInternalTaskState(this.state_)) {\n case TaskState.SUCCESS:\n async_async(this.resolve_.bind(null, this.snapshot))();\n break;\n case TaskState.CANCELED:\n case TaskState.ERROR:\n var toCall = this.reject_;\n async_async(toCall.bind(null, this.error_))();\n break;\n default:\n triggered = false;\n break;\n }\n if (triggered) {\n this.resolve_ = null;\n this.reject_ = null;\n }\n }\n };\n UploadTask.prototype.notifyObserver_ = function (observer) {\n var externalState = taskStateFromInternalTaskState(this.state_);\n switch (externalState) {\n case TaskState.RUNNING:\n case TaskState.PAUSED:\n if (observer.next !== null) {\n async_async(observer.next.bind(observer, this.snapshot))();\n }\n break;\n case TaskState.SUCCESS:\n if (observer.complete !== null) {\n async_async(observer.complete.bind(observer))();\n }\n break;\n case TaskState.CANCELED:\n case TaskState.ERROR:\n if (observer.error !== null) {\n async_async(observer.error.bind(observer, this.error_))();\n }\n break;\n default:\n // TODO(andysoto): assert(false);\n if (observer.error !== null) {\n async_async(observer.error.bind(observer, this.error_))();\n }\n }\n };\n /**\n * Resumes a paused task. Has no effect on a currently running or failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.resume = function () {\n validate('resume', [], arguments);\n var valid = this.state_ === InternalTaskState.PAUSED ||\n this.state_ === InternalTaskState.PAUSING;\n if (valid) {\n this.transition_(InternalTaskState.RUNNING);\n }\n return valid;\n };\n /**\n * Pauses a currently running task. Has no effect on a paused or failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.pause = function () {\n validate('pause', [], arguments);\n var valid = this.state_ === InternalTaskState.RUNNING;\n if (valid) {\n this.transition_(InternalTaskState.PAUSING);\n }\n return valid;\n };\n /**\n * Cancels a currently running or paused task. Has no effect on a complete or\n * failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.cancel = function () {\n validate('cancel', [], arguments);\n var valid = this.state_ === InternalTaskState.RUNNING ||\n this.state_ === InternalTaskState.PAUSING;\n if (valid) {\n this.transition_(InternalTaskState.CANCELING);\n }\n return valid;\n };\n return UploadTask;\n}());\n\n\n//# sourceMappingURL=task.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/reference.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines the Firebase Storage Reference class.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Provides methods to interact with a bucket in the Firebase Storage service.\n * @param location An fbs.location, or the URL at\n * which to base this object, in one of the following forms:\n * gs:///\n * http[s]://firebasestorage.googleapis.com/\n * /b//o/\n * Any query or fragment strings will be ignored in the http[s]\n * format. If no value is passed, the storage object will use a URL based on\n * the project ID of the base firebase.App instance.\n */\nvar reference_Reference = /** @class */ (function () {\n function Reference(authWrapper, location) {\n this.authWrapper = authWrapper;\n if (location instanceof location_Location) {\n this.location = location;\n }\n else {\n this.location = location_Location.makeFromUrl(location);\n }\n }\n /**\n * @return The URL for the bucket and path this object references,\n * in the form gs:///\n * @override\n */\n Reference.prototype.toString = function () {\n validate('toString', [], arguments);\n return 'gs://' + this.location.bucket + '/' + this.location.path;\n };\n Reference.prototype.newRef = function (authWrapper, location) {\n return new Reference(authWrapper, location);\n };\n Reference.prototype.mappings = function () {\n return getMappings();\n };\n /**\n * @return A reference to the object obtained by\n * appending childPath, removing any duplicate, beginning, or trailing\n * slashes.\n */\n Reference.prototype.child = function (childPath) {\n validate('child', [stringSpec()], arguments);\n var newPath = child(this.location.path, childPath);\n var location = new location_Location(this.location.bucket, newPath);\n return this.newRef(this.authWrapper, location);\n };\n Object.defineProperty(Reference.prototype, \"parent\", {\n /**\n * @return A reference to the parent of the\n * current object, or null if the current object is the root.\n */\n get: function () {\n var newPath = path_parent(this.location.path);\n if (newPath === null) {\n return null;\n }\n var location = new location_Location(this.location.bucket, newPath);\n return this.newRef(this.authWrapper, location);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"root\", {\n /**\n * @return An reference to the root of this\n * object's bucket.\n */\n get: function () {\n var location = new location_Location(this.location.bucket, '');\n return this.newRef(this.authWrapper, location);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"bucket\", {\n get: function () {\n return this.location.bucket;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"fullPath\", {\n get: function () {\n return this.location.path;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"name\", {\n get: function () {\n return lastComponent(this.location.path);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"storage\", {\n get: function () {\n return this.authWrapper.service();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Uploads a blob to this object's location.\n * @param data The blob to upload.\n * @return An UploadTask that lets you control and\n * observe the upload.\n */\n Reference.prototype.put = function (data, metadata) {\n if (metadata === void 0) { metadata = null; }\n validate('put', [uploadDataSpec(), metadataSpec(true)], arguments);\n this.throwIfRoot_('put');\n return new task_UploadTask(this, this.authWrapper, this.location, this.mappings(), new blob_FbsBlob(data), metadata);\n };\n /**\n * Uploads a string to this object's location.\n * @param string The string to upload.\n * @param opt_format The format of the string to upload.\n * @return An UploadTask that lets you control and\n * observe the upload.\n */\n Reference.prototype.putString = function (string, format, opt_metadata) {\n if (format === void 0) { format = StringFormat.RAW; }\n validate('putString', [\n stringSpec(),\n stringSpec(formatValidator, true),\n metadataSpec(true)\n ], arguments);\n this.throwIfRoot_('putString');\n var data = dataFromString(format, string);\n var metadata = clone(opt_metadata);\n if (!isDef(metadata['contentType']) && isDef(data.contentType)) {\n metadata['contentType'] = data.contentType;\n }\n return new task_UploadTask(this, this.authWrapper, this.location, this.mappings(), new blob_FbsBlob(data.data, true), metadata);\n };\n /**\n * Deletes the object at this location.\n * @return A promise that resolves if the deletion succeeds.\n */\n Reference.prototype.delete = function () {\n validate('delete', [], arguments);\n this.throwIfRoot_('delete');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = deleteObject(self.authWrapper, self.location);\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * A promise that resolves with the metadata for this object. If this\n * object doesn't exist or metadata cannot be retreived, the promise is\n * rejected.\n */\n Reference.prototype.getMetadata = function () {\n validate('getMetadata', [], arguments);\n this.throwIfRoot_('getMetadata');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = getMetadata(self.authWrapper, self.location, self.mappings());\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * Updates the metadata for this object.\n * @param metadata The new metadata for the object.\n * Only values that have been explicitly set will be changed. Explicitly\n * setting a value to null will remove the metadata.\n * @return A promise that resolves\n * with the new metadata for this object.\n * @see firebaseStorage.Reference.prototype.getMetadata\n */\n Reference.prototype.updateMetadata = function (metadata) {\n validate('updateMetadata', [metadataSpec()], arguments);\n this.throwIfRoot_('updateMetadata');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = updateMetadata(self.authWrapper, self.location, metadata, self.mappings());\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * @return A promise that resolves with the download\n * URL for this object.\n */\n Reference.prototype.getDownloadURL = function () {\n validate('getDownloadURL', [], arguments);\n this.throwIfRoot_('getDownloadURL');\n return this.getMetadata().then(function (metadata) {\n var url = metadata['downloadURLs'][0];\n if (isDef(url)) {\n return url;\n }\n else {\n throw noDownloadURL();\n }\n });\n };\n Reference.prototype.throwIfRoot_ = function (name) {\n if (this.location.path === '') {\n throw invalidRootOperation(name);\n }\n };\n return Reference;\n}());\n\n\n//# sourceMappingURL=reference.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/failrequest.js\n\n/**\n * A request whose promise always fails.\n * @struct\n * @template T\n */\nvar failrequest_FailRequest = /** @class */ (function () {\n function FailRequest(error) {\n this.promise_ = promise_external_reject(error);\n }\n /** @inheritDoc */\n FailRequest.prototype.getPromise = function () {\n return this.promise_;\n };\n /** @inheritDoc */\n FailRequest.prototype.cancel = function (appDelete) {\n if (appDelete === void 0) { appDelete = false; }\n };\n return FailRequest;\n}());\n\n\n//# sourceMappingURL=failrequest.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/requestmap.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * @struct\n */\nvar requestmap_RequestMap = /** @class */ (function () {\n function RequestMap() {\n this.map_ = {};\n this.id_ = minSafeInteger;\n }\n /**\n * Registers the given request with this map.\n * The request is unregistered when it completes.\n * @param r The request to register.\n */\n RequestMap.prototype.addRequest = function (r) {\n var id = this.id_;\n this.id_++;\n this.map_[id] = r;\n var self = this;\n function unmap() {\n delete self.map_[id];\n }\n r.getPromise().then(unmap, unmap);\n };\n /**\n * Cancels all registered requests.\n */\n RequestMap.prototype.clear = function () {\n forEach(this.map_, function (key, val) {\n if (val) {\n val.cancel(true);\n }\n });\n this.map_ = {};\n };\n return RequestMap;\n}());\n\n\n//# sourceMappingURL=requestmap.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/authwrapper.js\n\n\n\n\n\n\n\n/**\n * @param app If null, getAuthToken always resolves with null.\n * @param service The storage service associated with this auth wrapper.\n * Untyped to avoid circular type dependencies.\n * @struct\n */\nvar authwrapper_AuthWrapper = /** @class */ (function () {\n function AuthWrapper(app, maker, requestMaker, service, pool) {\n this.bucket_ = null;\n this.deleted_ = false;\n this.app_ = app;\n if (this.app_ !== null) {\n var options = this.app_.options;\n if (isDef(options)) {\n this.bucket_ = AuthWrapper.extractBucket_(options);\n }\n }\n this.storageRefMaker_ = maker;\n this.requestMaker_ = requestMaker;\n this.pool_ = pool;\n this.service_ = service;\n this.maxOperationRetryTime_ = defaultMaxOperationRetryTime;\n this.maxUploadRetryTime_ = defaultMaxUploadRetryTime;\n this.requestMap_ = new requestmap_RequestMap();\n }\n AuthWrapper.extractBucket_ = function (config) {\n var bucketString = config[configOption] || null;\n if (bucketString == null) {\n return null;\n }\n var loc = location_Location.makeFromBucketSpec(bucketString);\n return loc.bucket;\n };\n AuthWrapper.prototype.getAuthToken = function () {\n // TODO(andysoto): remove ifDef checks after firebase-app implements stubs\n // (b/28673818).\n if (this.app_ !== null &&\n isDef(this.app_.INTERNAL) &&\n isDef(this.app_.INTERNAL.getToken)) {\n return this.app_.INTERNAL.getToken().then(function (response) {\n if (response !== null) {\n return response.accessToken;\n }\n else {\n return null;\n }\n }, function (_error) {\n return null;\n });\n }\n else {\n return promise_external_resolve(null);\n }\n };\n AuthWrapper.prototype.bucket = function () {\n if (this.deleted_) {\n throw appDeleted();\n }\n else {\n return this.bucket_;\n }\n };\n /**\n * The service associated with this auth wrapper. Untyped to avoid circular\n * type dependencies.\n */\n AuthWrapper.prototype.service = function () {\n return this.service_;\n };\n /**\n * Returns a new firebaseStorage.Reference object referencing this AuthWrapper\n * at the given Location.\n * @param loc The Location.\n * @return Actually a firebaseStorage.Reference, typing not allowed\n * because of circular dependency problems.\n */\n AuthWrapper.prototype.makeStorageReference = function (loc) {\n return this.storageRefMaker_(this, loc);\n };\n AuthWrapper.prototype.makeRequest = function (requestInfo, authToken) {\n if (!this.deleted_) {\n var request = this.requestMaker_(requestInfo, authToken, this.pool_);\n this.requestMap_.addRequest(request);\n return request;\n }\n else {\n return new failrequest_FailRequest(appDeleted());\n }\n };\n /**\n * Stop running requests and prevent more from being created.\n */\n AuthWrapper.prototype.deleteApp = function () {\n this.deleted_ = true;\n this.app_ = null;\n this.requestMap_.clear();\n };\n AuthWrapper.prototype.maxUploadRetryTime = function () {\n return this.maxUploadRetryTime_;\n };\n AuthWrapper.prototype.setMaxUploadRetryTime = function (time) {\n this.maxUploadRetryTime_ = time;\n };\n AuthWrapper.prototype.maxOperationRetryTime = function () {\n return this.maxOperationRetryTime_;\n };\n AuthWrapper.prototype.setMaxOperationRetryTime = function (time) {\n this.maxOperationRetryTime_ = time;\n };\n return AuthWrapper;\n}());\n\n\n//# sourceMappingURL=authwrapper.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/backoff.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @param f May be invoked\n * before the function returns.\n * @param callback Get all the arguments passed to the function\n * passed to f, including the initial boolean.\n */\nfunction start(f, callback, timeout) {\n // TODO(andysoto): make this code cleaner (probably refactor into an actual\n // type instead of a bunch of functions with state shared in the closure)\n var waitSeconds = 1;\n // Would type this as \"number\" but that doesn't work for Node so ¯\\_(ツ)_/¯\n var timeoutId = null;\n var hitTimeout = false;\n var cancelState = 0;\n function canceled() {\n return cancelState === 2;\n }\n var triggeredCallback = false;\n function triggerCallback() {\n if (!triggeredCallback) {\n triggeredCallback = true;\n callback.apply(null, arguments);\n }\n }\n function callWithDelay(millis) {\n timeoutId = setTimeout(function () {\n timeoutId = null;\n f(handler, canceled());\n }, millis);\n }\n function handler(success) {\n var var_args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n var_args[_i - 1] = arguments[_i];\n }\n if (triggeredCallback) {\n return;\n }\n if (success) {\n triggerCallback.apply(null, arguments);\n return;\n }\n var mustStop = canceled() || hitTimeout;\n if (mustStop) {\n triggerCallback.apply(null, arguments);\n return;\n }\n if (waitSeconds < 64) {\n /* TODO(andysoto): don't back off so quickly if we know we're offline. */\n waitSeconds *= 2;\n }\n var waitMillis;\n if (cancelState === 1) {\n cancelState = 2;\n waitMillis = 0;\n }\n else {\n waitMillis = (waitSeconds + Math.random()) * 1000;\n }\n callWithDelay(waitMillis);\n }\n var stopped = false;\n function stop(wasTimeout) {\n if (stopped) {\n return;\n }\n stopped = true;\n if (triggeredCallback) {\n return;\n }\n if (timeoutId !== null) {\n if (!wasTimeout) {\n cancelState = 2;\n }\n clearTimeout(timeoutId);\n callWithDelay(0);\n }\n else {\n if (!wasTimeout) {\n cancelState = 1;\n }\n }\n }\n callWithDelay(0);\n setTimeout(function () {\n hitTimeout = true;\n stop(true);\n }, timeout);\n return stop;\n}\n/**\n * Stops the retry loop from repeating.\n * If the function is currently \"in between\" retries, it is invoked immediately\n * with the second parameter as \"true\". Otherwise, it will be invoked once more\n * after the current invocation finishes iff the current invocation would have\n * triggered another retry.\n */\nfunction stop(id) {\n id(false);\n}\n\n//# sourceMappingURL=backoff.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/request.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines methods used to actually send HTTP requests from\n * abstract representations.\n */\n\n\n\n\n\n\n\n\n\n/**\n * @struct\n * @template T\n */\nvar request_NetworkRequest = /** @class */ (function () {\n function NetworkRequest(url, method, headers, body, successCodes, additionalRetryCodes, callback, errorCallback, timeout, progressCallback, pool) {\n this.pendingXhr_ = null;\n this.backoffId_ = null;\n this.resolve_ = null;\n this.reject_ = null;\n this.canceled_ = false;\n this.appDelete_ = false;\n this.url_ = url;\n this.method_ = method;\n this.headers_ = headers;\n this.body_ = body;\n this.successCodes_ = successCodes.slice();\n this.additionalRetryCodes_ = additionalRetryCodes.slice();\n this.callback_ = callback;\n this.errorCallback_ = errorCallback;\n this.progressCallback_ = progressCallback;\n this.timeout_ = timeout;\n this.pool_ = pool;\n var self = this;\n this.promise_ = make(function (resolve, reject) {\n self.resolve_ = resolve;\n self.reject_ = reject;\n self.start_();\n });\n }\n /**\n * Actually starts the retry loop.\n */\n NetworkRequest.prototype.start_ = function () {\n var self = this;\n function doTheRequest(backoffCallback, canceled) {\n if (canceled) {\n backoffCallback(false, new RequestEndStatus(false, null, true));\n return;\n }\n var xhr = self.pool_.createXhrIo();\n self.pendingXhr_ = xhr;\n function progressListener(progressEvent) {\n var loaded = progressEvent.loaded;\n var total = progressEvent.lengthComputable ? progressEvent.total : -1;\n if (self.progressCallback_ !== null) {\n self.progressCallback_(loaded, total);\n }\n }\n if (self.progressCallback_ !== null) {\n xhr.addUploadProgressListener(progressListener);\n }\n xhr\n .send(self.url_, self.method_, self.body_, self.headers_)\n .then(function (xhr) {\n if (self.progressCallback_ !== null) {\n xhr.removeUploadProgressListener(progressListener);\n }\n self.pendingXhr_ = null;\n xhr = xhr;\n var hitServer = xhr.getErrorCode() === ErrorCode.NO_ERROR;\n var status = xhr.getStatus();\n if (!hitServer || self.isRetryStatusCode_(status)) {\n var wasCanceled = xhr.getErrorCode() === ErrorCode.ABORT;\n backoffCallback(false, new RequestEndStatus(false, null, wasCanceled));\n return;\n }\n var successCode = array_contains(self.successCodes_, status);\n backoffCallback(true, new RequestEndStatus(successCode, xhr));\n });\n }\n /**\n * @param requestWentThrough True if the request eventually went\n * through, false if it hit the retry limit or was canceled.\n */\n function backoffDone(requestWentThrough, status) {\n var resolve = self.resolve_;\n var reject = self.reject_;\n var xhr = status.xhr;\n if (status.wasSuccessCode) {\n try {\n var result = self.callback_(xhr, xhr.getResponseText());\n if (isJustDef(result)) {\n resolve(result);\n }\n else {\n resolve();\n }\n }\n catch (e) {\n reject(e);\n }\n }\n else {\n if (xhr !== null) {\n var err = unknown();\n err.setServerResponseProp(xhr.getResponseText());\n if (self.errorCallback_) {\n reject(self.errorCallback_(xhr, err));\n }\n else {\n reject(err);\n }\n }\n else {\n if (status.canceled) {\n var err = self.appDelete_\n ? appDeleted()\n : error_canceled();\n reject(err);\n }\n else {\n var err = retryLimitExceeded();\n reject(err);\n }\n }\n }\n }\n if (this.canceled_) {\n backoffDone(false, new RequestEndStatus(false, null, true));\n }\n else {\n this.backoffId_ = start(doTheRequest, backoffDone, this.timeout_);\n }\n };\n /** @inheritDoc */\n NetworkRequest.prototype.getPromise = function () {\n return this.promise_;\n };\n /** @inheritDoc */\n NetworkRequest.prototype.cancel = function (appDelete) {\n this.canceled_ = true;\n this.appDelete_ = appDelete || false;\n if (this.backoffId_ !== null) {\n stop(this.backoffId_);\n }\n if (this.pendingXhr_ !== null) {\n this.pendingXhr_.abort();\n }\n };\n NetworkRequest.prototype.isRetryStatusCode_ = function (status) {\n // The codes for which to retry came from this page:\n // https://cloud.google.com/storage/docs/exponential-backoff\n var isFiveHundredCode = status >= 500 && status < 600;\n var extraRetryCodes = [\n // Request Timeout: web server didn't receive full request in time.\n 408,\n // Too Many Requests: you're getting rate-limited, basically.\n 429\n ];\n var isExtraRetryCode = array_contains(extraRetryCodes, status);\n var isRequestSpecificRetryCode = array_contains(this.additionalRetryCodes_, status);\n return isFiveHundredCode || isExtraRetryCode || isRequestSpecificRetryCode;\n };\n return NetworkRequest;\n}());\n/**\n * A collection of information about the result of a network request.\n * @param opt_canceled Defaults to false.\n * @struct\n */\nvar RequestEndStatus = /** @class */ (function () {\n function RequestEndStatus(wasSuccessCode, xhr, opt_canceled) {\n this.wasSuccessCode = wasSuccessCode;\n this.xhr = xhr;\n this.canceled = !!opt_canceled;\n }\n return RequestEndStatus;\n}());\n\nfunction addAuthHeader_(headers, authToken) {\n if (authToken !== null && authToken.length > 0) {\n headers['Authorization'] = 'Firebase ' + authToken;\n }\n}\nfunction addVersionHeader_(headers) {\n var number = typeof esm[\"default\"] !== 'undefined' ? esm[\"default\"].SDK_VERSION : 'AppManager';\n headers['X-Firebase-Storage-Version'] = 'webjs/' + number;\n}\n/**\n * @template T\n */\nfunction makeRequest(requestInfo, authToken, pool) {\n var queryPart = makeQueryString(requestInfo.urlParams);\n var url = requestInfo.url + queryPart;\n var headers = clone(requestInfo.headers);\n addAuthHeader_(headers, authToken);\n addVersionHeader_(headers);\n return new request_NetworkRequest(url, requestInfo.method, headers, requestInfo.body, requestInfo.successCodes, requestInfo.additionalRetryCodes, requestInfo.handler, requestInfo.errorHandler, requestInfo.timeout, requestInfo.progressCallback, pool);\n}\n\n//# sourceMappingURL=request.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/service.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n/**\n * A service that provides firebaseStorage.Reference instances.\n * @param opt_url gs:// url to a custom Storage Bucket\n *\n * @struct\n */\nvar service_Service = /** @class */ (function () {\n function Service(app, pool, url) {\n this.bucket_ = null;\n function maker(authWrapper, loc) {\n return new reference_Reference(authWrapper, loc);\n }\n this.authWrapper_ = new authwrapper_AuthWrapper(app, maker, makeRequest, this, pool);\n this.app_ = app;\n if (url != null) {\n this.bucket_ = location_Location.makeFromBucketSpec(url);\n }\n else {\n var authWrapperBucket = this.authWrapper_.bucket();\n if (authWrapperBucket != null) {\n this.bucket_ = new location_Location(authWrapperBucket, '');\n }\n }\n this.internals_ = new service_ServiceInternals(this);\n }\n /**\n * Returns a firebaseStorage.Reference for the given path in the default\n * bucket.\n */\n Service.prototype.ref = function (path) {\n function validator(path) {\n if (/^[A-Za-z]+:\\/\\//.test(path)) {\n throw 'Expected child path but got a URL, use refFromURL instead.';\n }\n }\n validate('ref', [stringSpec(validator, true)], arguments);\n if (this.bucket_ == null) {\n throw new Error('No Storage Bucket defined in Firebase Options.');\n }\n var ref = new reference_Reference(this.authWrapper_, this.bucket_);\n if (path != null) {\n return ref.child(path);\n }\n else {\n return ref;\n }\n };\n /**\n * Returns a firebaseStorage.Reference object for the given absolute URL,\n * which must be a gs:// or http[s]:// URL.\n */\n Service.prototype.refFromURL = function (url) {\n function validator(p) {\n if (!/^[A-Za-z]+:\\/\\//.test(p)) {\n throw 'Expected full URL but got a child path, use ref instead.';\n }\n try {\n location_Location.makeFromUrl(p);\n }\n catch (e) {\n throw 'Expected valid full URL but got an invalid one.';\n }\n }\n validate('refFromURL', [stringSpec(validator, false)], arguments);\n return new reference_Reference(this.authWrapper_, url);\n };\n Object.defineProperty(Service.prototype, \"maxUploadRetryTime\", {\n get: function () {\n return this.authWrapper_.maxUploadRetryTime();\n },\n enumerable: true,\n configurable: true\n });\n Service.prototype.setMaxUploadRetryTime = function (time) {\n validate('setMaxUploadRetryTime', [nonNegativeNumberSpec()], arguments);\n this.authWrapper_.setMaxUploadRetryTime(time);\n };\n Object.defineProperty(Service.prototype, \"maxOperationRetryTime\", {\n get: function () {\n return this.authWrapper_.maxOperationRetryTime();\n },\n enumerable: true,\n configurable: true\n });\n Service.prototype.setMaxOperationRetryTime = function (time) {\n validate('setMaxOperationRetryTime', [nonNegativeNumberSpec()], arguments);\n this.authWrapper_.setMaxOperationRetryTime(time);\n };\n Object.defineProperty(Service.prototype, \"app\", {\n get: function () {\n return this.app_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Service.prototype, \"INTERNAL\", {\n get: function () {\n return this.internals_;\n },\n enumerable: true,\n configurable: true\n });\n return Service;\n}());\n\n/**\n * @struct\n */\nvar service_ServiceInternals = /** @class */ (function () {\n function ServiceInternals(service) {\n this.service_ = service;\n }\n /**\n * Called when the associated app is deleted.\n * @see {!fbs.AuthWrapper.prototype.deleteApp}\n */\n ServiceInternals.prototype.delete = function () {\n this.service_.authWrapper_.deleteApp();\n return promise_external_resolve(undefined);\n };\n return ServiceInternals;\n}());\n\n\n//# sourceMappingURL=service.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/index.js\n/* harmony export (immutable) */ __webpack_exports__[\"registerStorage\"] = registerStorage;\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n/**\n * Type constant for Firebase Storage.\n */\nvar STORAGE_TYPE = 'storage';\nfunction factory(app, unused, opt_url) {\n return new service_Service(app, new xhriopool_XhrIoPool(), opt_url);\n}\nfunction registerStorage(instance) {\n var namespaceExports = {\n // no-inline\n TaskState: TaskState,\n TaskEvent: TaskEvent,\n StringFormat: StringFormat,\n Storage: service_Service,\n Reference: reference_Reference\n };\n instance.INTERNAL.registerService(STORAGE_TYPE, factory, namespaceExports, undefined, \n // Allow multiple storage instances per app.\n true);\n}\nregisterStorage(esm[\"default\"]);\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ })\n\n},[118]);\n } catch(error) {\n throw new Error(\n 'Cannot instantiate firebase-storage.js - ' +\n 'be sure to load firebase-app.js first.'\n )\n }\n\n\n// WEBPACK FOOTER //\n// firebase-storage.js","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nrequire('@firebase/storage');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./storage/index.js\n// module id = 118\n// module chunks = 2","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { configOption } from './constants';\nvar FirebaseStorageError = /** @class */ (function () {\n function FirebaseStorageError(code, message) {\n this.code_ = prependCode(code);\n this.message_ = 'Firebase Storage: ' + message;\n this.serverResponse_ = null;\n this.name_ = 'FirebaseError';\n }\n FirebaseStorageError.prototype.codeProp = function () {\n return this.code;\n };\n FirebaseStorageError.prototype.codeEquals = function (code) {\n return prependCode(code) === this.codeProp();\n };\n FirebaseStorageError.prototype.serverResponseProp = function () {\n return this.serverResponse_;\n };\n FirebaseStorageError.prototype.setServerResponseProp = function (serverResponse) {\n this.serverResponse_ = serverResponse;\n };\n Object.defineProperty(FirebaseStorageError.prototype, \"name\", {\n get: function () {\n return this.name_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"code\", {\n get: function () {\n return this.code_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"message\", {\n get: function () {\n return this.message_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"serverResponse\", {\n get: function () {\n return this.serverResponse_;\n },\n enumerable: true,\n configurable: true\n });\n return FirebaseStorageError;\n}());\nexport { FirebaseStorageError };\nexport var errors = {};\nexport var Code = {\n // Shared between all platforms\n UNKNOWN: 'unknown',\n OBJECT_NOT_FOUND: 'object-not-found',\n BUCKET_NOT_FOUND: 'bucket-not-found',\n PROJECT_NOT_FOUND: 'project-not-found',\n QUOTA_EXCEEDED: 'quota-exceeded',\n UNAUTHENTICATED: 'unauthenticated',\n UNAUTHORIZED: 'unauthorized',\n RETRY_LIMIT_EXCEEDED: 'retry-limit-exceeded',\n INVALID_CHECKSUM: 'invalid-checksum',\n CANCELED: 'canceled',\n // JS specific\n INVALID_EVENT_NAME: 'invalid-event-name',\n INVALID_URL: 'invalid-url',\n INVALID_DEFAULT_BUCKET: 'invalid-default-bucket',\n NO_DEFAULT_BUCKET: 'no-default-bucket',\n CANNOT_SLICE_BLOB: 'cannot-slice-blob',\n SERVER_FILE_WRONG_SIZE: 'server-file-wrong-size',\n NO_DOWNLOAD_URL: 'no-download-url',\n INVALID_ARGUMENT: 'invalid-argument',\n INVALID_ARGUMENT_COUNT: 'invalid-argument-count',\n APP_DELETED: 'app-deleted',\n INVALID_ROOT_OPERATION: 'invalid-root-operation',\n INVALID_FORMAT: 'invalid-format',\n INTERNAL_ERROR: 'internal-error'\n};\nexport function prependCode(code) {\n return 'storage/' + code;\n}\nexport function unknown() {\n var message = 'An unknown error occurred, please check the error payload for ' +\n 'server response.';\n return new FirebaseStorageError(Code.UNKNOWN, message);\n}\nexport function objectNotFound(path) {\n return new FirebaseStorageError(Code.OBJECT_NOT_FOUND, \"Object '\" + path + \"' does not exist.\");\n}\nexport function bucketNotFound(bucket) {\n return new FirebaseStorageError(Code.BUCKET_NOT_FOUND, \"Bucket '\" + bucket + \"' does not exist.\");\n}\nexport function projectNotFound(project) {\n return new FirebaseStorageError(Code.PROJECT_NOT_FOUND, \"Project '\" + project + \"' does not exist.\");\n}\nexport function quotaExceeded(bucket) {\n return new FirebaseStorageError(Code.QUOTA_EXCEEDED, \"Quota for bucket '\" +\n bucket +\n \"' exceeded, please view quota on \" +\n 'https://firebase.google.com/pricing/.');\n}\nexport function unauthenticated() {\n var message = 'User is not authenticated, please authenticate using Firebase ' +\n 'Authentication and try again.';\n return new FirebaseStorageError(Code.UNAUTHENTICATED, message);\n}\nexport function unauthorized(path) {\n return new FirebaseStorageError(Code.UNAUTHORIZED, \"User does not have permission to access '\" + path + \"'.\");\n}\nexport function retryLimitExceeded() {\n return new FirebaseStorageError(Code.RETRY_LIMIT_EXCEEDED, 'Max retry time for operation exceeded, please try again.');\n}\nexport function invalidChecksum(path, checksum, calculated) {\n return new FirebaseStorageError(Code.INVALID_CHECKSUM, \"Uploaded/downloaded object '\" +\n path +\n \"' has checksum '\" +\n checksum +\n \"' which does not match '\" +\n calculated +\n \"'. Please retry the upload/download.\");\n}\nexport function canceled() {\n return new FirebaseStorageError(Code.CANCELED, 'User canceled the upload/download.');\n}\nexport function invalidEventName(name) {\n return new FirebaseStorageError(Code.INVALID_EVENT_NAME, \"Invalid event name '\" + name + \"'.\");\n}\nexport function invalidUrl(url) {\n return new FirebaseStorageError(Code.INVALID_URL, \"Invalid URL '\" + url + \"'.\");\n}\nexport function invalidDefaultBucket(bucket) {\n return new FirebaseStorageError(Code.INVALID_DEFAULT_BUCKET, \"Invalid default bucket '\" + bucket + \"'.\");\n}\nexport function noDefaultBucket() {\n return new FirebaseStorageError(Code.NO_DEFAULT_BUCKET, 'No default bucket ' +\n \"found. Did you set the '\" +\n configOption +\n \"' property when initializing the app?\");\n}\nexport function cannotSliceBlob() {\n return new FirebaseStorageError(Code.CANNOT_SLICE_BLOB, 'Cannot slice blob for upload. Please retry the upload.');\n}\nexport function serverFileWrongSize() {\n return new FirebaseStorageError(Code.SERVER_FILE_WRONG_SIZE, 'Server recorded incorrect upload file size, please retry the upload.');\n}\nexport function noDownloadURL() {\n return new FirebaseStorageError(Code.NO_DOWNLOAD_URL, 'The given file does not have any download URLs.');\n}\nexport function invalidArgument(index, fnName, message) {\n return new FirebaseStorageError(Code.INVALID_ARGUMENT, 'Invalid argument in `' + fnName + '` at index ' + index + ': ' + message);\n}\nexport function invalidArgumentCount(argMin, argMax, fnName, real) {\n var countPart;\n var plural;\n if (argMin === argMax) {\n countPart = argMin;\n plural = argMin === 1 ? 'argument' : 'arguments';\n }\n else {\n countPart = 'between ' + argMin + ' and ' + argMax;\n plural = 'arguments';\n }\n return new FirebaseStorageError(Code.INVALID_ARGUMENT_COUNT, 'Invalid argument count in `' +\n fnName +\n '`: Expected ' +\n countPart +\n ' ' +\n plural +\n ', received ' +\n real +\n '.');\n}\nexport function appDeleted() {\n return new FirebaseStorageError(Code.APP_DELETED, 'The Firebase app was deleted.');\n}\n/**\n * @param name The name of the operation that was invalid.\n */\nexport function invalidRootOperation(name) {\n return new FirebaseStorageError(Code.INVALID_ROOT_OPERATION, \"The operation '\" +\n name +\n \"' cannot be performed on a root reference, create a non-root \" +\n \"reference using child, such as .child('file.png').\");\n}\n/**\n * @param format The format that was not valid.\n * @param message A message describing the format violation.\n */\nexport function invalidFormat(format, message) {\n return new FirebaseStorageError(Code.INVALID_FORMAT, \"String does not match format '\" + format + \"': \" + message);\n}\n/**\n * @param message A message describing the internal error.\n */\nexport function internalError(message) {\n throw new FirebaseStorageError(Code.INTERNAL_ERROR, 'Internal error: ' + message);\n}\n\n//# sourceMappingURL=error.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/error.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as errorsExports from './error';\nexport var StringFormat = {\n RAW: 'raw',\n BASE64: 'base64',\n BASE64URL: 'base64url',\n DATA_URL: 'data_url'\n};\nexport function formatValidator(stringFormat) {\n switch (stringFormat) {\n case StringFormat.RAW:\n case StringFormat.BASE64:\n case StringFormat.BASE64URL:\n case StringFormat.DATA_URL:\n return;\n default:\n throw 'Expected one of the event types: [' +\n StringFormat.RAW +\n ', ' +\n StringFormat.BASE64 +\n ', ' +\n StringFormat.BASE64URL +\n ', ' +\n StringFormat.DATA_URL +\n '].';\n }\n}\n/**\n * @struct\n */\nvar StringData = /** @class */ (function () {\n function StringData(data, opt_contentType) {\n this.data = data;\n this.contentType = opt_contentType || null;\n }\n return StringData;\n}());\nexport { StringData };\nexport function dataFromString(format, string) {\n switch (format) {\n case StringFormat.RAW:\n return new StringData(utf8Bytes_(string));\n case StringFormat.BASE64:\n case StringFormat.BASE64URL:\n return new StringData(base64Bytes_(format, string));\n case StringFormat.DATA_URL:\n return new StringData(dataURLBytes_(string), dataURLContentType_(string));\n }\n // assert(false);\n throw errorsExports.unknown();\n}\nexport function utf8Bytes_(string) {\n var b = [];\n for (var i = 0; i < string.length; i++) {\n var c = string.charCodeAt(i);\n if (c <= 127) {\n b.push(c);\n }\n else {\n if (c <= 2047) {\n b.push(192 | (c >> 6), 128 | (c & 63));\n }\n else {\n if ((c & 64512) == 55296) {\n // The start of a surrogate pair.\n var valid = i < string.length - 1 &&\n (string.charCodeAt(i + 1) & 64512) == 56320;\n if (!valid) {\n // The second surrogate wasn't there.\n b.push(239, 191, 189);\n }\n else {\n var hi = c;\n var lo = string.charCodeAt(++i);\n c = 65536 | ((hi & 1023) << 10) | (lo & 1023);\n b.push(240 | (c >> 18), 128 | ((c >> 12) & 63), 128 | ((c >> 6) & 63), 128 | (c & 63));\n }\n }\n else {\n if ((c & 64512) == 56320) {\n // Invalid low surrogate.\n b.push(239, 191, 189);\n }\n else {\n b.push(224 | (c >> 12), 128 | ((c >> 6) & 63), 128 | (c & 63));\n }\n }\n }\n }\n }\n return new Uint8Array(b);\n}\nexport function percentEncodedBytes_(string) {\n var decoded;\n try {\n decoded = decodeURIComponent(string);\n }\n catch (e) {\n throw errorsExports.invalidFormat(StringFormat.DATA_URL, 'Malformed data URL.');\n }\n return utf8Bytes_(decoded);\n}\nexport function base64Bytes_(format, string) {\n switch (format) {\n case StringFormat.BASE64: {\n var hasMinus = string.indexOf('-') !== -1;\n var hasUnder = string.indexOf('_') !== -1;\n if (hasMinus || hasUnder) {\n var invalidChar = hasMinus ? '-' : '_';\n throw errorsExports.invalidFormat(format, \"Invalid character '\" +\n invalidChar +\n \"' found: is it base64url encoded?\");\n }\n break;\n }\n case StringFormat.BASE64URL: {\n var hasPlus = string.indexOf('+') !== -1;\n var hasSlash = string.indexOf('/') !== -1;\n if (hasPlus || hasSlash) {\n var invalidChar = hasPlus ? '+' : '/';\n throw errorsExports.invalidFormat(format, \"Invalid character '\" + invalidChar + \"' found: is it base64 encoded?\");\n }\n string = string.replace(/-/g, '+').replace(/_/g, '/');\n break;\n }\n }\n var bytes;\n try {\n bytes = atob(string);\n }\n catch (e) {\n throw errorsExports.invalidFormat(format, 'Invalid character found');\n }\n var array = new Uint8Array(bytes.length);\n for (var i = 0; i < bytes.length; i++) {\n array[i] = bytes.charCodeAt(i);\n }\n return array;\n}\n/**\n * @struct\n */\nvar DataURLParts = /** @class */ (function () {\n function DataURLParts(dataURL) {\n this.base64 = false;\n this.contentType = null;\n var matches = dataURL.match(/^data:([^,]+)?,/);\n if (matches === null) {\n throw errorsExports.invalidFormat(StringFormat.DATA_URL, \"Must be formatted 'data:[][;base64],\");\n }\n var middle = matches[1] || null;\n if (middle != null) {\n this.base64 = endsWith(middle, ';base64');\n this.contentType = this.base64\n ? middle.substring(0, middle.length - ';base64'.length)\n : middle;\n }\n this.rest = dataURL.substring(dataURL.indexOf(',') + 1);\n }\n return DataURLParts;\n}());\nexport function dataURLBytes_(string) {\n var parts = new DataURLParts(string);\n if (parts.base64) {\n return base64Bytes_(StringFormat.BASE64, parts.rest);\n }\n else {\n return percentEncodedBytes_(parts.rest);\n }\n}\nexport function dataURLContentType_(string) {\n var parts = new DataURLParts(string);\n return parts.contentType;\n}\nfunction endsWith(s, end) {\n var longEnough = s.length >= end.length;\n if (!longEnough) {\n return false;\n }\n return s.substring(s.length - end.length) === end;\n}\n\n//# sourceMappingURL=string.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/string.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var TaskEvent = {\n /** Triggered whenever the task changes or progress is updated. */\n STATE_CHANGED: 'state_changed'\n};\nexport var InternalTaskState = {\n RUNNING: 'running',\n PAUSING: 'pausing',\n PAUSED: 'paused',\n SUCCESS: 'success',\n CANCELING: 'canceling',\n CANCELED: 'canceled',\n ERROR: 'error'\n};\nexport var TaskState = {\n /** The task is currently transferring data. */\n RUNNING: 'running',\n /** The task was paused by the user. */\n PAUSED: 'paused',\n /** The task completed successfully. */\n SUCCESS: 'success',\n /** The task was canceled. */\n CANCELED: 'canceled',\n /** The task failed with an error. */\n ERROR: 'error'\n};\nexport function taskStateFromInternalTaskState(state) {\n switch (state) {\n case InternalTaskState.RUNNING:\n case InternalTaskState.PAUSING:\n case InternalTaskState.CANCELING:\n return TaskState.RUNNING;\n case InternalTaskState.PAUSED:\n return TaskState.PAUSED;\n case InternalTaskState.SUCCESS:\n return TaskState.SUCCESS;\n case InternalTaskState.CANCELED:\n return TaskState.CANCELED;\n case InternalTaskState.ERROR:\n return TaskState.ERROR;\n default:\n // TODO(andysoto): assert(false);\n return TaskState.ERROR;\n }\n}\n\n//# sourceMappingURL=taskenums.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/taskenums.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Contains methods for working with objects.\n */\nexport function contains(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nexport function forEach(obj, f) {\n for (var key in obj) {\n if (contains(obj, key)) {\n f(key, obj[key]);\n }\n }\n}\nexport function clone(obj) {\n if (obj == null) {\n return {};\n }\n var c = {};\n forEach(obj, function (key, val) {\n c[key] = val;\n });\n return c;\n}\n\n//# sourceMappingURL=object.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/object.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Implements the promise abstraction interface for external\n * (public SDK) packaging, which just passes through to the firebase-app impl.\n */\n/**\n * @template T\n * @param {function((function(T): void),\n * (function(!Error): void))} resolver\n */\nexport function make(resolver) {\n return new Promise(resolver);\n}\n/**\n * @template T\n */\nexport function resolve(value) {\n return Promise.resolve(value);\n}\nexport function reject(error) {\n return Promise.reject(error);\n}\n\n//# sourceMappingURL=promise_external.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/promise_external.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @return False if the object is undefined or null, true otherwise.\n */\nexport function isDef(p) {\n return p != null;\n}\nexport function isJustDef(p) {\n return p !== void 0;\n}\nexport function isFunction(p) {\n return typeof p === 'function';\n}\nexport function isObject(p) {\n return typeof p === 'object';\n}\nexport function isNonNullObject(p) {\n return isObject(p) && p !== null;\n}\nexport function isNonArrayObject(p) {\n return isObject(p) && !Array.isArray(p);\n}\nexport function isString(p) {\n return typeof p === 'string' || p instanceof String;\n}\nexport function isNumber(p) {\n return typeof p === 'number' || p instanceof Number;\n}\nexport function isNativeBlob(p) {\n return isNativeBlobDefined() && p instanceof Blob;\n}\nexport function isNativeBlobDefined() {\n return typeof Blob !== 'undefined';\n}\n\n//# sourceMappingURL=type.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/type.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as type from './type';\n/**\n * Returns the Object resulting from parsing the given JSON, or null if the\n * given string does not represent a JSON object.\n */\nexport function jsonObjectOrNull(s) {\n var obj;\n try {\n obj = JSON.parse(s);\n }\n catch (e) {\n return null;\n }\n if (type.isNonArrayObject(obj)) {\n return obj;\n }\n else {\n return null;\n }\n}\n\n//# sourceMappingURL=json.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/json.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Contains helper methods for manipulating paths.\n */\n/**\n * @return Null if the path is already at the root.\n */\nexport function parent(path) {\n if (path.length == 0) {\n return null;\n }\n var index = path.lastIndexOf('/');\n if (index === -1) {\n return '';\n }\n var newPath = path.slice(0, index);\n return newPath;\n}\nexport function child(path, childPath) {\n var canonicalChildPath = childPath\n .split('/')\n .filter(function (component) {\n return component.length > 0;\n })\n .join('/');\n if (path.length === 0) {\n return canonicalChildPath;\n }\n else {\n return path + '/' + canonicalChildPath;\n }\n}\n/**\n * Returns the last component of a path.\n * '/foo/bar' -> 'bar'\n * '/foo/bar/baz/' -> 'baz/'\n * '/a' -> 'a'\n */\nexport function lastComponent(path) {\n var index = path.lastIndexOf('/', path.length - 2);\n if (index === -1) {\n return path;\n }\n else {\n return path.slice(index + 1);\n }\n}\n\n//# sourceMappingURL=path.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/path.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Functions to create and manipulate URLs for the server API.\n */\nimport * as constants from './constants';\nimport * as object from './object';\nexport function makeNormalUrl(urlPart) {\n return constants.domainBase + constants.apiBaseUrl + urlPart;\n}\nexport function makeDownloadUrl(urlPart) {\n return constants.downloadBase + constants.apiBaseUrl + urlPart;\n}\nexport function makeUploadUrl(urlPart) {\n return constants.domainBase + constants.apiUploadBaseUrl + urlPart;\n}\nexport function makeQueryString(params) {\n var encode = encodeURIComponent;\n var queryPart = '?';\n object.forEach(params, function (key, val) {\n var nextPart = encode(key) + '=' + encode(val);\n queryPart = queryPart + nextPart + '&';\n });\n // Chop off the extra '&' or '?' on the end\n queryPart = queryPart.slice(0, -1);\n return queryPart;\n}\n\n//# sourceMappingURL=url.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/url.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as json from './json';\nimport { Location } from './location';\nimport * as path from './path';\nimport * as type from './type';\nimport * as UrlUtils from './url';\nexport function noXform_(metadata, value) {\n return value;\n}\n/**\n * @struct\n */\nvar Mapping = /** @class */ (function () {\n function Mapping(server, opt_local, opt_writable, opt_xform) {\n this.server = server;\n this.local = opt_local || server;\n this.writable = !!opt_writable;\n this.xform = opt_xform || noXform_;\n }\n return Mapping;\n}());\nexport { Mapping };\nvar mappings_ = null;\nexport function xformPath(fullPath) {\n var valid = type.isString(fullPath);\n if (!valid || fullPath.length < 2) {\n return fullPath;\n }\n else {\n fullPath = fullPath;\n return path.lastComponent(fullPath);\n }\n}\nexport function getMappings() {\n if (mappings_) {\n return mappings_;\n }\n var mappings = [];\n mappings.push(new Mapping('bucket'));\n mappings.push(new Mapping('generation'));\n mappings.push(new Mapping('metageneration'));\n mappings.push(new Mapping('name', 'fullPath', true));\n function mappingsXformPath(metadata, fullPath) {\n return xformPath(fullPath);\n }\n var nameMapping = new Mapping('name');\n nameMapping.xform = mappingsXformPath;\n mappings.push(nameMapping);\n /**\n * Coerces the second param to a number, if it is defined.\n */\n function xformSize(metadata, size) {\n if (type.isDef(size)) {\n return +size;\n }\n else {\n return size;\n }\n }\n var sizeMapping = new Mapping('size');\n sizeMapping.xform = xformSize;\n mappings.push(sizeMapping);\n mappings.push(new Mapping('timeCreated'));\n mappings.push(new Mapping('updated'));\n mappings.push(new Mapping('md5Hash', null, true));\n mappings.push(new Mapping('cacheControl', null, true));\n mappings.push(new Mapping('contentDisposition', null, true));\n mappings.push(new Mapping('contentEncoding', null, true));\n mappings.push(new Mapping('contentLanguage', null, true));\n mappings.push(new Mapping('contentType', null, true));\n mappings.push(new Mapping('metadata', 'customMetadata', true));\n /**\n * Transforms a comma-separated string of tokens into a list of download\n * URLs.\n */\n function xformTokens(metadata, tokens) {\n var valid = type.isString(tokens) && tokens.length > 0;\n if (!valid) {\n // This can happen if objects are uploaded through GCS and retrieved\n // through list, so we don't want to throw an Error.\n return [];\n }\n var encode = encodeURIComponent;\n var tokensList = tokens.split(',');\n var urls = tokensList.map(function (token) {\n var bucket = metadata['bucket'];\n var path = metadata['fullPath'];\n var urlPart = '/b/' + encode(bucket) + '/o/' + encode(path);\n var base = UrlUtils.makeDownloadUrl(urlPart);\n var queryString = UrlUtils.makeQueryString({\n alt: 'media',\n token: token\n });\n return base + queryString;\n });\n return urls;\n }\n mappings.push(new Mapping('downloadTokens', 'downloadURLs', false, xformTokens));\n mappings_ = mappings;\n return mappings_;\n}\nexport function addRef(metadata, authWrapper) {\n function generateRef() {\n var bucket = metadata['bucket'];\n var path = metadata['fullPath'];\n var loc = new Location(bucket, path);\n return authWrapper.makeStorageReference(loc);\n }\n Object.defineProperty(metadata, 'ref', { get: generateRef });\n}\nexport function fromResource(authWrapper, resource, mappings) {\n var metadata = {};\n metadata['type'] = 'file';\n var len = mappings.length;\n for (var i = 0; i < len; i++) {\n var mapping = mappings[i];\n metadata[mapping.local] = mapping.xform(metadata, resource[mapping.server]);\n }\n addRef(metadata, authWrapper);\n return metadata;\n}\nexport function fromResourceString(authWrapper, resourceString, mappings) {\n var obj = json.jsonObjectOrNull(resourceString);\n if (obj === null) {\n return null;\n }\n var resource = obj;\n return fromResource(authWrapper, resource, mappings);\n}\nexport function toResourceString(metadata, mappings) {\n var resource = {};\n var len = mappings.length;\n for (var i = 0; i < len; i++) {\n var mapping = mappings[i];\n if (mapping.writable) {\n resource[mapping.server] = metadata[mapping.local];\n }\n }\n return JSON.stringify(resource);\n}\nexport function metadataValidator(p) {\n var validType = p && type.isObject(p);\n if (!validType) {\n throw 'Expected Metadata object.';\n }\n for (var key in p) {\n var val = p[key];\n if (key === 'customMetadata') {\n if (!type.isObject(val)) {\n throw 'Expected object for \\'customMetadata\\' mapping.';\n }\n }\n else {\n if (type.isNonNullObject(val)) {\n throw \"Mapping for '\" + key + \"' cannot be an object.\";\n }\n }\n }\n}\n\n//# sourceMappingURL=metadata.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/metadata.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as errorsExports from './error';\nimport * as MetadataUtils from './metadata';\nimport * as type from './type';\n/**\n * @param name Name of the function.\n * @param specs Argument specs.\n * @param passed The actual arguments passed to the function.\n * @throws {fbs.Error} If the arguments are invalid.\n */\nexport function validate(name, specs, passed) {\n var minArgs = specs.length;\n var maxArgs = specs.length;\n for (var i = 0; i < specs.length; i++) {\n if (specs[i].optional) {\n minArgs = i;\n break;\n }\n }\n var validLength = minArgs <= passed.length && passed.length <= maxArgs;\n if (!validLength) {\n throw errorsExports.invalidArgumentCount(minArgs, maxArgs, name, passed.length);\n }\n for (var i = 0; i < passed.length; i++) {\n try {\n specs[i].validator(passed[i]);\n }\n catch (e) {\n if (e instanceof Error) {\n throw errorsExports.invalidArgument(i, name, e.message);\n }\n else {\n throw errorsExports.invalidArgument(i, name, e);\n }\n }\n }\n}\n/**\n * @struct\n */\nvar ArgSpec = /** @class */ (function () {\n function ArgSpec(validator, opt_optional) {\n var self = this;\n this.validator = function (p) {\n if (self.optional && !type.isJustDef(p)) {\n return;\n }\n validator(p);\n };\n this.optional = !!opt_optional;\n }\n return ArgSpec;\n}());\nexport { ArgSpec };\nexport function and_(v1, v2) {\n return function (p) {\n v1(p);\n v2(p);\n };\n}\nexport function stringSpec(opt_validator, opt_optional) {\n function stringValidator(p) {\n if (!type.isString(p)) {\n throw 'Expected string.';\n }\n }\n var validator;\n if (opt_validator) {\n validator = and_(stringValidator, opt_validator);\n }\n else {\n validator = stringValidator;\n }\n return new ArgSpec(validator, opt_optional);\n}\nexport function uploadDataSpec() {\n function validator(p) {\n var valid = p instanceof Uint8Array ||\n p instanceof ArrayBuffer ||\n (type.isNativeBlobDefined() && p instanceof Blob);\n if (!valid) {\n throw 'Expected Blob or File.';\n }\n }\n return new ArgSpec(validator);\n}\nexport function metadataSpec(opt_optional) {\n return new ArgSpec(MetadataUtils.metadataValidator, opt_optional);\n}\nexport function nonNegativeNumberSpec() {\n function validator(p) {\n var valid = type.isNumber(p) && p >= 0;\n if (!valid) {\n throw 'Expected a number 0 or greater.';\n }\n }\n return new ArgSpec(validator);\n}\nexport function looseObjectSpec(opt_validator, opt_optional) {\n function validator(p) {\n var isLooseObject = p === null || (type.isDef(p) && p instanceof Object);\n if (!isLooseObject) {\n throw 'Expected an Object.';\n }\n if (opt_validator !== undefined && opt_validator !== null) {\n opt_validator(p);\n }\n }\n return new ArgSpec(validator, opt_optional);\n}\nexport function nullFunctionSpec(opt_optional) {\n function validator(p) {\n var valid = p === null || type.isFunction(p);\n if (!valid) {\n throw 'Expected a Function.';\n }\n }\n return new ArgSpec(validator, opt_optional);\n}\n\n//# sourceMappingURL=args.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/args.js\n// module id = null\n// module chunks = ","import * as type from './type';\nfunction getBlobBuilder() {\n if (typeof BlobBuilder !== 'undefined') {\n return BlobBuilder;\n }\n else if (typeof WebKitBlobBuilder !== 'undefined') {\n return WebKitBlobBuilder;\n }\n else {\n return undefined;\n }\n}\n/**\n * Concatenates one or more values together and converts them to a Blob.\n *\n * @param var_args The values that will make up the resulting blob.\n * @return The blob.\n */\nexport function getBlob() {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var BlobBuilder = getBlobBuilder();\n if (BlobBuilder !== undefined) {\n var bb = new BlobBuilder();\n for (var i = 0; i < var_args.length; i++) {\n bb.append(var_args[i]);\n }\n return bb.getBlob();\n }\n else {\n if (type.isNativeBlobDefined()) {\n return new Blob(var_args);\n }\n else {\n throw Error(\"This browser doesn't seem to support creating Blobs\");\n }\n }\n}\n/**\n * Slices the blob. The returned blob contains data from the start byte\n * (inclusive) till the end byte (exclusive). Negative indices cannot be used.\n *\n * @param blob The blob to be sliced.\n * @param start Index of the starting byte.\n * @param end Index of the ending byte.\n * @return The blob slice or null if not supported.\n */\nexport function sliceBlob(blob, start, end) {\n if (blob.webkitSlice) {\n return blob.webkitSlice(start, end);\n }\n else if (blob.mozSlice) {\n return blob.mozSlice(start, end);\n }\n else if (blob.slice) {\n return blob.slice(start, end);\n }\n return null;\n}\n\n//# sourceMappingURL=fs.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/fs.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns true if the object is contained in the array (compared with ===).\n * @template T\n */\nexport function contains(array, elem) {\n return array.indexOf(elem) !== -1;\n}\n/**\n * Returns a shallow copy of the array or array-like object (e.g. arguments).\n * @template T\n */\nexport function clone(arraylike) {\n return Array.prototype.slice.call(arraylike);\n}\n/**\n * Removes the given element from the given array, if it is contained.\n * Directly modifies the passed-in array.\n * @template T\n */\nexport function remove(array, elem) {\n var i = array.indexOf(elem);\n if (i !== -1) {\n array.splice(i, 1);\n }\n}\n\n//# sourceMappingURL=array.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/array.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as array from './array';\nimport { FbsBlob } from './blob';\nimport * as errorsExports from './error';\nimport * as MetadataUtils from './metadata';\nimport * as object from './object';\nimport { RequestInfo } from './requestinfo';\nimport * as type from './type';\nimport * as UrlUtils from './url';\n/**\n * Throws the UNKNOWN FirebaseStorageError if cndn is false.\n */\nexport function handlerCheck(cndn) {\n if (!cndn) {\n throw errorsExports.unknown();\n }\n}\nexport function metadataHandler(authWrapper, mappings) {\n function handler(xhr, text) {\n var metadata = MetadataUtils.fromResourceString(authWrapper, text, mappings);\n handlerCheck(metadata !== null);\n return metadata;\n }\n return handler;\n}\nexport function sharedErrorHandler(location) {\n function errorHandler(xhr, err) {\n var newErr;\n if (xhr.getStatus() === 401) {\n newErr = errorsExports.unauthenticated();\n }\n else {\n if (xhr.getStatus() === 402) {\n newErr = errorsExports.quotaExceeded(location.bucket);\n }\n else {\n if (xhr.getStatus() === 403) {\n newErr = errorsExports.unauthorized(location.path);\n }\n else {\n newErr = err;\n }\n }\n }\n newErr.setServerResponseProp(err.serverResponseProp());\n return newErr;\n }\n return errorHandler;\n}\nexport function objectErrorHandler(location) {\n var shared = sharedErrorHandler(location);\n function errorHandler(xhr, err) {\n var newErr = shared(xhr, err);\n if (xhr.getStatus() === 404) {\n newErr = errorsExports.objectNotFound(location.path);\n }\n newErr.setServerResponseProp(err.serverResponseProp());\n return newErr;\n }\n return errorHandler;\n}\nexport function getMetadata(authWrapper, location, mappings) {\n var urlPart = location.fullServerUrl();\n var url = UrlUtils.makeNormalUrl(urlPart);\n var method = 'GET';\n var timeout = authWrapper.maxOperationRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nexport function updateMetadata(authWrapper, location, metadata, mappings) {\n var urlPart = location.fullServerUrl();\n var url = UrlUtils.makeNormalUrl(urlPart);\n var method = 'PATCH';\n var body = MetadataUtils.toResourceString(metadata, mappings);\n var headers = { 'Content-Type': 'application/json; charset=utf-8' };\n var timeout = authWrapper.maxOperationRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.headers = headers;\n requestInfo.body = body;\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nexport function deleteObject(authWrapper, location) {\n var urlPart = location.fullServerUrl();\n var url = UrlUtils.makeNormalUrl(urlPart);\n var method = 'DELETE';\n var timeout = authWrapper.maxOperationRetryTime();\n function handler(xhr, text) { }\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.successCodes = [200, 204];\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nexport function determineContentType_(metadata, blob) {\n return ((metadata && metadata['contentType']) ||\n (blob && blob.type()) ||\n 'application/octet-stream');\n}\nexport function metadataForUpload_(location, blob, opt_metadata) {\n var metadata = object.clone(opt_metadata);\n metadata['fullPath'] = location.path;\n metadata['size'] = blob.size();\n if (!metadata['contentType']) {\n metadata['contentType'] = determineContentType_(null, blob);\n }\n return metadata;\n}\nexport function multipartUpload(authWrapper, location, mappings, blob, opt_metadata) {\n var urlPart = location.bucketOnlyServerUrl();\n var headers = {\n 'X-Goog-Upload-Protocol': 'multipart'\n };\n function genBoundary() {\n var str = '';\n for (var i = 0; i < 2; i++) {\n str =\n str +\n Math.random()\n .toString()\n .slice(2);\n }\n return str;\n }\n var boundary = genBoundary();\n headers['Content-Type'] = 'multipart/related; boundary=' + boundary;\n var metadata = metadataForUpload_(location, blob, opt_metadata);\n var metadataString = MetadataUtils.toResourceString(metadata, mappings);\n var preBlobPart = '--' +\n boundary +\n '\\r\\n' +\n 'Content-Type: application/json; charset=utf-8\\r\\n\\r\\n' +\n metadataString +\n '\\r\\n--' +\n boundary +\n '\\r\\n' +\n 'Content-Type: ' +\n metadata['contentType'] +\n '\\r\\n\\r\\n';\n var postBlobPart = '\\r\\n--' + boundary + '--';\n var body = FbsBlob.getBlob(preBlobPart, blob, postBlobPart);\n if (body === null) {\n throw errorsExports.cannotSliceBlob();\n }\n var urlParams = { name: metadata['fullPath'] };\n var url = UrlUtils.makeUploadUrl(urlPart);\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.urlParams = urlParams;\n requestInfo.headers = headers;\n requestInfo.body = body.uploadData();\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * @param current The number of bytes that have been uploaded so far.\n * @param total The total number of bytes in the upload.\n * @param opt_finalized True if the server has finished the upload.\n * @param opt_metadata The upload metadata, should\n * only be passed if opt_finalized is true.\n * @struct\n */\nvar ResumableUploadStatus = /** @class */ (function () {\n function ResumableUploadStatus(current, total, finalized, metadata) {\n this.current = current;\n this.total = total;\n this.finalized = !!finalized;\n this.metadata = metadata || null;\n }\n return ResumableUploadStatus;\n}());\nexport { ResumableUploadStatus };\nexport function checkResumeHeader_(xhr, opt_allowed) {\n var status;\n try {\n status = xhr.getResponseHeader('X-Goog-Upload-Status');\n }\n catch (e) {\n handlerCheck(false);\n }\n var allowed = opt_allowed || ['active'];\n handlerCheck(array.contains(allowed, status));\n return status;\n}\nexport function createResumableUpload(authWrapper, location, mappings, blob, opt_metadata) {\n var urlPart = location.bucketOnlyServerUrl();\n var metadata = metadataForUpload_(location, blob, opt_metadata);\n var urlParams = { name: metadata['fullPath'] };\n var url = UrlUtils.makeUploadUrl(urlPart);\n var method = 'POST';\n var headers = {\n 'X-Goog-Upload-Protocol': 'resumable',\n 'X-Goog-Upload-Command': 'start',\n 'X-Goog-Upload-Header-Content-Length': blob.size(),\n 'X-Goog-Upload-Header-Content-Type': metadata['contentType'],\n 'Content-Type': 'application/json; charset=utf-8'\n };\n var body = MetadataUtils.toResourceString(metadata, mappings);\n var timeout = authWrapper.maxUploadRetryTime();\n function handler(xhr, text) {\n checkResumeHeader_(xhr);\n var url;\n try {\n url = xhr.getResponseHeader('X-Goog-Upload-URL');\n }\n catch (e) {\n handlerCheck(false);\n }\n handlerCheck(type.isString(url));\n return url;\n }\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.urlParams = urlParams;\n requestInfo.headers = headers;\n requestInfo.body = body;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * @param url From a call to fbs.requests.createResumableUpload.\n */\nexport function getResumableUploadStatus(authWrapper, location, url, blob) {\n var headers = { 'X-Goog-Upload-Command': 'query' };\n function handler(xhr, text) {\n var status = checkResumeHeader_(xhr, ['active', 'final']);\n var sizeString;\n try {\n sizeString = xhr.getResponseHeader('X-Goog-Upload-Size-Received');\n }\n catch (e) {\n handlerCheck(false);\n }\n var size = parseInt(sizeString, 10);\n handlerCheck(!isNaN(size));\n return new ResumableUploadStatus(size, blob.size(), status === 'final');\n }\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.headers = headers;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * Any uploads via the resumable upload API must transfer a number of bytes\n * that is a multiple of this number.\n */\nexport var resumableUploadChunkSize = 256 * 1024;\n/**\n * @param url From a call to fbs.requests.createResumableUpload.\n * @param chunkSize Number of bytes to upload.\n * @param opt_status The previous status.\n * If not passed or null, we start from the beginning.\n * @throws fbs.Error If the upload is already complete, the passed in status\n * has a final size inconsistent with the blob, or the blob cannot be sliced\n * for upload.\n */\nexport function continueResumableUpload(location, authWrapper, url, blob, chunkSize, mappings, opt_status, opt_progressCallback) {\n // TODO(andysoto): standardize on internal asserts\n // assert(!(opt_status && opt_status.finalized));\n var status = new ResumableUploadStatus(0, 0);\n if (opt_status) {\n status.current = opt_status.current;\n status.total = opt_status.total;\n }\n else {\n status.current = 0;\n status.total = blob.size();\n }\n if (blob.size() !== status.total) {\n throw errorsExports.serverFileWrongSize();\n }\n var bytesLeft = status.total - status.current;\n var bytesToUpload = bytesLeft;\n if (chunkSize > 0) {\n bytesToUpload = Math.min(bytesToUpload, chunkSize);\n }\n var startByte = status.current;\n var endByte = startByte + bytesToUpload;\n var uploadCommand = bytesToUpload === bytesLeft ? 'upload, finalize' : 'upload';\n var headers = {\n 'X-Goog-Upload-Command': uploadCommand,\n 'X-Goog-Upload-Offset': status.current\n };\n var body = blob.slice(startByte, endByte);\n if (body === null) {\n throw errorsExports.cannotSliceBlob();\n }\n function handler(xhr, text) {\n // TODO(andysoto): Verify the MD5 of each uploaded range:\n // the 'x-range-md5' header comes back with status code 308 responses.\n // We'll only be able to bail out though, because you can't re-upload a\n // range that you previously uploaded.\n var uploadStatus = checkResumeHeader_(xhr, ['active', 'final']);\n var newCurrent = status.current + bytesToUpload;\n var size = blob.size();\n var metadata;\n if (uploadStatus === 'final') {\n metadata = metadataHandler(authWrapper, mappings)(xhr, text);\n }\n else {\n metadata = null;\n }\n return new ResumableUploadStatus(newCurrent, size, uploadStatus === 'final', metadata);\n }\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.headers = headers;\n requestInfo.body = body.uploadData();\n requestInfo.progressCallback = opt_progressCallback || null;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n\n//# sourceMappingURL=requests.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/requests.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Method for invoking a callback asynchronously.\n */\nimport * as promiseimpl from './promise_external';\n/**\n * Returns a function that invokes f with its arguments asynchronously as a\n * microtask, i.e. as soon as possible after the current script returns back\n * into browser code.\n */\nexport function async(f) {\n return function () {\n var argsToForward = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n argsToForward[_i] = arguments[_i];\n }\n promiseimpl.resolve(true).then(function () {\n f.apply(null, argsToForward);\n });\n };\n}\n\n//# sourceMappingURL=async.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/async.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @param f May be invoked\n * before the function returns.\n * @param callback Get all the arguments passed to the function\n * passed to f, including the initial boolean.\n */\nexport function start(f, callback, timeout) {\n // TODO(andysoto): make this code cleaner (probably refactor into an actual\n // type instead of a bunch of functions with state shared in the closure)\n var waitSeconds = 1;\n // Would type this as \"number\" but that doesn't work for Node so ¯\\_(ツ)_/¯\n var timeoutId = null;\n var hitTimeout = false;\n var cancelState = 0;\n function canceled() {\n return cancelState === 2;\n }\n var triggeredCallback = false;\n function triggerCallback() {\n if (!triggeredCallback) {\n triggeredCallback = true;\n callback.apply(null, arguments);\n }\n }\n function callWithDelay(millis) {\n timeoutId = setTimeout(function () {\n timeoutId = null;\n f(handler, canceled());\n }, millis);\n }\n function handler(success) {\n var var_args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n var_args[_i - 1] = arguments[_i];\n }\n if (triggeredCallback) {\n return;\n }\n if (success) {\n triggerCallback.apply(null, arguments);\n return;\n }\n var mustStop = canceled() || hitTimeout;\n if (mustStop) {\n triggerCallback.apply(null, arguments);\n return;\n }\n if (waitSeconds < 64) {\n /* TODO(andysoto): don't back off so quickly if we know we're offline. */\n waitSeconds *= 2;\n }\n var waitMillis;\n if (cancelState === 1) {\n cancelState = 2;\n waitMillis = 0;\n }\n else {\n waitMillis = (waitSeconds + Math.random()) * 1000;\n }\n callWithDelay(waitMillis);\n }\n var stopped = false;\n function stop(wasTimeout) {\n if (stopped) {\n return;\n }\n stopped = true;\n if (triggeredCallback) {\n return;\n }\n if (timeoutId !== null) {\n if (!wasTimeout) {\n cancelState = 2;\n }\n clearTimeout(timeoutId);\n callWithDelay(0);\n }\n else {\n if (!wasTimeout) {\n cancelState = 1;\n }\n }\n }\n callWithDelay(0);\n setTimeout(function () {\n hitTimeout = true;\n stop(true);\n }, timeout);\n return stop;\n}\n/**\n * Stops the retry loop from repeating.\n * If the function is currently \"in between\" retries, it is invoked immediately\n * with the second parameter as \"true\". Otherwise, it will be invoked once more\n * after the current invocation finishes iff the current invocation would have\n * triggered another retry.\n */\nexport function stop(id) {\n id(false);\n}\n\n//# sourceMappingURL=backoff.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/backoff.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines methods used to actually send HTTP requests from\n * abstract representations.\n */\nimport firebase from '@firebase/app';\nimport * as array from './array';\nimport * as backoff from './backoff';\nimport * as errorsExports from './error';\nimport * as object from './object';\nimport * as promiseimpl from './promise_external';\nimport * as type from './type';\nimport * as UrlUtils from './url';\nimport * as XhrIoExports from './xhrio';\n/**\n * @struct\n * @template T\n */\nvar NetworkRequest = /** @class */ (function () {\n function NetworkRequest(url, method, headers, body, successCodes, additionalRetryCodes, callback, errorCallback, timeout, progressCallback, pool) {\n this.pendingXhr_ = null;\n this.backoffId_ = null;\n this.resolve_ = null;\n this.reject_ = null;\n this.canceled_ = false;\n this.appDelete_ = false;\n this.url_ = url;\n this.method_ = method;\n this.headers_ = headers;\n this.body_ = body;\n this.successCodes_ = successCodes.slice();\n this.additionalRetryCodes_ = additionalRetryCodes.slice();\n this.callback_ = callback;\n this.errorCallback_ = errorCallback;\n this.progressCallback_ = progressCallback;\n this.timeout_ = timeout;\n this.pool_ = pool;\n var self = this;\n this.promise_ = promiseimpl.make(function (resolve, reject) {\n self.resolve_ = resolve;\n self.reject_ = reject;\n self.start_();\n });\n }\n /**\n * Actually starts the retry loop.\n */\n NetworkRequest.prototype.start_ = function () {\n var self = this;\n function doTheRequest(backoffCallback, canceled) {\n if (canceled) {\n backoffCallback(false, new RequestEndStatus(false, null, true));\n return;\n }\n var xhr = self.pool_.createXhrIo();\n self.pendingXhr_ = xhr;\n function progressListener(progressEvent) {\n var loaded = progressEvent.loaded;\n var total = progressEvent.lengthComputable ? progressEvent.total : -1;\n if (self.progressCallback_ !== null) {\n self.progressCallback_(loaded, total);\n }\n }\n if (self.progressCallback_ !== null) {\n xhr.addUploadProgressListener(progressListener);\n }\n xhr\n .send(self.url_, self.method_, self.body_, self.headers_)\n .then(function (xhr) {\n if (self.progressCallback_ !== null) {\n xhr.removeUploadProgressListener(progressListener);\n }\n self.pendingXhr_ = null;\n xhr = xhr;\n var hitServer = xhr.getErrorCode() === XhrIoExports.ErrorCode.NO_ERROR;\n var status = xhr.getStatus();\n if (!hitServer || self.isRetryStatusCode_(status)) {\n var wasCanceled = xhr.getErrorCode() === XhrIoExports.ErrorCode.ABORT;\n backoffCallback(false, new RequestEndStatus(false, null, wasCanceled));\n return;\n }\n var successCode = array.contains(self.successCodes_, status);\n backoffCallback(true, new RequestEndStatus(successCode, xhr));\n });\n }\n /**\n * @param requestWentThrough True if the request eventually went\n * through, false if it hit the retry limit or was canceled.\n */\n function backoffDone(requestWentThrough, status) {\n var resolve = self.resolve_;\n var reject = self.reject_;\n var xhr = status.xhr;\n if (status.wasSuccessCode) {\n try {\n var result = self.callback_(xhr, xhr.getResponseText());\n if (type.isJustDef(result)) {\n resolve(result);\n }\n else {\n resolve();\n }\n }\n catch (e) {\n reject(e);\n }\n }\n else {\n if (xhr !== null) {\n var err = errorsExports.unknown();\n err.setServerResponseProp(xhr.getResponseText());\n if (self.errorCallback_) {\n reject(self.errorCallback_(xhr, err));\n }\n else {\n reject(err);\n }\n }\n else {\n if (status.canceled) {\n var err = self.appDelete_\n ? errorsExports.appDeleted()\n : errorsExports.canceled();\n reject(err);\n }\n else {\n var err = errorsExports.retryLimitExceeded();\n reject(err);\n }\n }\n }\n }\n if (this.canceled_) {\n backoffDone(false, new RequestEndStatus(false, null, true));\n }\n else {\n this.backoffId_ = backoff.start(doTheRequest, backoffDone, this.timeout_);\n }\n };\n /** @inheritDoc */\n NetworkRequest.prototype.getPromise = function () {\n return this.promise_;\n };\n /** @inheritDoc */\n NetworkRequest.prototype.cancel = function (appDelete) {\n this.canceled_ = true;\n this.appDelete_ = appDelete || false;\n if (this.backoffId_ !== null) {\n backoff.stop(this.backoffId_);\n }\n if (this.pendingXhr_ !== null) {\n this.pendingXhr_.abort();\n }\n };\n NetworkRequest.prototype.isRetryStatusCode_ = function (status) {\n // The codes for which to retry came from this page:\n // https://cloud.google.com/storage/docs/exponential-backoff\n var isFiveHundredCode = status >= 500 && status < 600;\n var extraRetryCodes = [\n // Request Timeout: web server didn't receive full request in time.\n 408,\n // Too Many Requests: you're getting rate-limited, basically.\n 429\n ];\n var isExtraRetryCode = array.contains(extraRetryCodes, status);\n var isRequestSpecificRetryCode = array.contains(this.additionalRetryCodes_, status);\n return isFiveHundredCode || isExtraRetryCode || isRequestSpecificRetryCode;\n };\n return NetworkRequest;\n}());\n/**\n * A collection of information about the result of a network request.\n * @param opt_canceled Defaults to false.\n * @struct\n */\nvar RequestEndStatus = /** @class */ (function () {\n function RequestEndStatus(wasSuccessCode, xhr, opt_canceled) {\n this.wasSuccessCode = wasSuccessCode;\n this.xhr = xhr;\n this.canceled = !!opt_canceled;\n }\n return RequestEndStatus;\n}());\nexport { RequestEndStatus };\nexport function addAuthHeader_(headers, authToken) {\n if (authToken !== null && authToken.length > 0) {\n headers['Authorization'] = 'Firebase ' + authToken;\n }\n}\nexport function addVersionHeader_(headers) {\n var number = typeof firebase !== 'undefined' ? firebase.SDK_VERSION : 'AppManager';\n headers['X-Firebase-Storage-Version'] = 'webjs/' + number;\n}\n/**\n * @template T\n */\nexport function makeRequest(requestInfo, authToken, pool) {\n var queryPart = UrlUtils.makeQueryString(requestInfo.urlParams);\n var url = requestInfo.url + queryPart;\n var headers = object.clone(requestInfo.headers);\n addAuthHeader_(headers, authToken);\n addVersionHeader_(headers);\n return new NetworkRequest(url, requestInfo.method, headers, requestInfo.body, requestInfo.successCodes, requestInfo.additionalRetryCodes, requestInfo.handler, requestInfo.errorHandler, requestInfo.timeout, requestInfo.progressCallback, pool);\n}\n\n//# sourceMappingURL=request.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/request.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport firebase from '@firebase/app';\nimport { StringFormat } from './src/implementation/string';\nimport { TaskEvent } from './src/implementation/taskenums';\nimport { TaskState } from './src/implementation/taskenums';\nimport { XhrIoPool } from './src/implementation/xhriopool';\nimport { Reference } from './src/reference';\nimport { Service } from './src/service';\n/**\n * Type constant for Firebase Storage.\n */\nvar STORAGE_TYPE = 'storage';\nfunction factory(app, unused, opt_url) {\n return new Service(app, new XhrIoPool(), opt_url);\n}\nexport function registerStorage(instance) {\n var namespaceExports = {\n // no-inline\n TaskState: TaskState,\n TaskEvent: TaskEvent,\n StringFormat: StringFormat,\n Storage: Service,\n Reference: Reference\n };\n instance.INTERNAL.registerService(STORAGE_TYPE, factory, namespaceExports, undefined, \n // Allow multiple storage instances per app.\n true);\n}\nregisterStorage(firebase);\n\n//# sourceMappingURL=index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/index.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @enum{number}\n */\nexport var ErrorCode;\n(function (ErrorCode) {\n ErrorCode[ErrorCode[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\n ErrorCode[ErrorCode[\"NETWORK_ERROR\"] = 1] = \"NETWORK_ERROR\";\n ErrorCode[ErrorCode[\"ABORT\"] = 2] = \"ABORT\";\n})(ErrorCode = ErrorCode || (ErrorCode = {}));\n\n//# sourceMappingURL=xhrio.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/xhrio.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Constants used in the Firebase Storage library.\n */\n/**\n * Domain and scheme for API calls.\n */\nexport var domainBase = 'https://firebasestorage.googleapis.com';\n/**\n * Domain and scheme for object downloads.\n */\nexport var downloadBase = 'https://firebasestorage.googleapis.com';\n/**\n * Base URL for non-upload calls to the API.\n */\nexport var apiBaseUrl = '/v0';\n/**\n * Base URL for upload calls to the API.\n */\nexport var apiUploadBaseUrl = '/v0';\nexport function setDomainBase(domainBase) {\n domainBase = domainBase;\n}\nexport var configOption = 'storageBucket';\n/**\n * 1 minute\n */\nexport var shortMaxOperationRetryTime = 1 * 60 * 1000;\n/**\n * 2 minutes\n */\nexport var defaultMaxOperationRetryTime = 2 * 60 * 1000;\n/**\n * 10 minutes\n */\nexport var defaultMaxUploadRetryTime = 10 * 60 * 100;\n/**\n * This is the value of Number.MIN_SAFE_INTEGER, which is not well supported\n * enough for us to use it directly.\n */\nexport var minSafeInteger = -9007199254740991;\n\n//# sourceMappingURL=constants.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/constants.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as errorsExports from './error';\nimport * as object from './object';\nimport * as promiseimpl from './promise_external';\nimport * as type from './type';\nimport * as XhrIoExports from './xhrio';\n/**\n * We use this instead of goog.net.XhrIo because goog.net.XhrIo is hyuuuuge and\n * doesn't work in React Native on Android.\n */\nvar NetworkXhrIo = /** @class */ (function () {\n function NetworkXhrIo() {\n var _this = this;\n this.sent_ = false;\n this.xhr_ = new XMLHttpRequest();\n this.errorCode_ = XhrIoExports.ErrorCode.NO_ERROR;\n this.sendPromise_ = promiseimpl.make(function (resolve, reject) {\n _this.xhr_.addEventListener('abort', function (event) {\n _this.errorCode_ = XhrIoExports.ErrorCode.ABORT;\n resolve(_this);\n });\n _this.xhr_.addEventListener('error', function (event) {\n _this.errorCode_ = XhrIoExports.ErrorCode.NETWORK_ERROR;\n resolve(_this);\n });\n _this.xhr_.addEventListener('load', function (event) {\n resolve(_this);\n });\n });\n }\n /**\n * @override\n */\n NetworkXhrIo.prototype.send = function (url, method, opt_body, opt_headers) {\n var _this = this;\n if (this.sent_) {\n throw errorsExports.internalError('cannot .send() more than once');\n }\n this.sent_ = true;\n this.xhr_.open(method, url, true);\n if (type.isDef(opt_headers)) {\n var headers = opt_headers;\n object.forEach(headers, function (key, val) {\n _this.xhr_.setRequestHeader(key, val.toString());\n });\n }\n if (type.isDef(opt_body)) {\n this.xhr_.send(opt_body);\n }\n else {\n this.xhr_.send();\n }\n return this.sendPromise_;\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getErrorCode = function () {\n if (!this.sent_) {\n throw errorsExports.internalError('cannot .getErrorCode() before sending');\n }\n return this.errorCode_;\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getStatus = function () {\n if (!this.sent_) {\n throw errorsExports.internalError('cannot .getStatus() before sending');\n }\n try {\n return this.xhr_.status;\n }\n catch (e) {\n return -1;\n }\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getResponseText = function () {\n if (!this.sent_) {\n throw errorsExports.internalError('cannot .getResponseText() before sending');\n }\n return this.xhr_.responseText;\n };\n /**\n * Aborts the request.\n * @override\n */\n NetworkXhrIo.prototype.abort = function () {\n this.xhr_.abort();\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getResponseHeader = function (header) {\n return this.xhr_.getResponseHeader(header);\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.addUploadProgressListener = function (listener) {\n if (type.isDef(this.xhr_.upload)) {\n this.xhr_.upload.addEventListener('progress', listener);\n }\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.removeUploadProgressListener = function (listener) {\n if (type.isDef(this.xhr_.upload)) {\n this.xhr_.upload.removeEventListener('progress', listener);\n }\n };\n return NetworkXhrIo;\n}());\nexport { NetworkXhrIo };\n\n//# sourceMappingURL=xhrio_network.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/xhrio_network.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { NetworkXhrIo } from './xhrio_network';\n/**\n * Factory-like class for creating XhrIo instances.\n */\nvar XhrIoPool = /** @class */ (function () {\n function XhrIoPool() {\n }\n XhrIoPool.prototype.createXhrIo = function () {\n return new NetworkXhrIo();\n };\n return XhrIoPool;\n}());\nexport { XhrIoPool };\n\n//# sourceMappingURL=xhriopool.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/xhriopool.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Functionality related to the parsing/composition of bucket/\n * object location.\n */\nimport * as errorsExports from './error';\n/**\n * @struct\n */\nvar Location = /** @class */ (function () {\n function Location(bucket, path) {\n this.bucket = bucket;\n this.path_ = path;\n }\n Object.defineProperty(Location.prototype, \"path\", {\n get: function () {\n return this.path_;\n },\n enumerable: true,\n configurable: true\n });\n Location.prototype.fullServerUrl = function () {\n var encode = encodeURIComponent;\n return '/b/' + encode(this.bucket) + '/o/' + encode(this.path);\n };\n Location.prototype.bucketOnlyServerUrl = function () {\n var encode = encodeURIComponent;\n return '/b/' + encode(this.bucket) + '/o';\n };\n Location.makeFromBucketSpec = function (bucketString) {\n var bucketLocation;\n try {\n bucketLocation = Location.makeFromUrl(bucketString);\n }\n catch (e) {\n // Not valid URL, use as-is. This lets you put bare bucket names in\n // config.\n return new Location(bucketString, '');\n }\n if (bucketLocation.path === '') {\n return bucketLocation;\n }\n else {\n throw errorsExports.invalidDefaultBucket(bucketString);\n }\n };\n Location.makeFromUrl = function (url) {\n var location = null;\n var bucketDomain = '([A-Za-z0-9.\\\\-]+)';\n function gsModify(loc) {\n if (loc.path.charAt(loc.path.length - 1) === '/') {\n loc.path_ = loc.path_.slice(0, -1);\n }\n }\n var gsPath = '(/(.*))?$';\n var path = '(/([^?#]*).*)?$';\n var gsRegex = new RegExp('^gs://' + bucketDomain + gsPath, 'i');\n var gsIndices = { bucket: 1, path: 3 };\n function httpModify(loc) {\n loc.path_ = decodeURIComponent(loc.path);\n }\n var version = 'v[A-Za-z0-9_]+';\n var httpRegex = new RegExp('^https?://firebasestorage\\\\.googleapis\\\\.com/' +\n version +\n '/b/' +\n bucketDomain +\n '/o' +\n path, 'i');\n var httpIndices = { bucket: 1, path: 3 };\n var groups = [\n { regex: gsRegex, indices: gsIndices, postModify: gsModify },\n { regex: httpRegex, indices: httpIndices, postModify: httpModify }\n ];\n for (var i = 0; i < groups.length; i++) {\n var group = groups[i];\n var captures = group.regex.exec(url);\n if (captures) {\n var bucketValue = captures[group.indices.bucket];\n var pathValue = captures[group.indices.path];\n if (!pathValue) {\n pathValue = '';\n }\n location = new Location(bucketValue, pathValue);\n group.postModify(location);\n break;\n }\n }\n if (location == null) {\n throw errorsExports.invalidUrl(url);\n }\n return location;\n };\n return Location;\n}());\nexport { Location };\n\n//# sourceMappingURL=location.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/location.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @file Provides a Blob-like wrapper for various binary types (including the\n * native Blob type). This makes it possible to upload types like ArrayBuffers,\n * making uploads possible in environments without the native Blob type.\n */\nimport * as fs from './fs';\nimport * as string from './string';\nimport { StringFormat } from './string';\nimport * as type from './type';\n/**\n * @param opt_elideCopy If true, doesn't copy mutable input data\n * (e.g. Uint8Arrays). Pass true only if you know the objects will not be\n * modified after this blob's construction.\n */\nvar FbsBlob = /** @class */ (function () {\n function FbsBlob(data, opt_elideCopy) {\n var size = 0;\n var blobType = '';\n if (type.isNativeBlob(data)) {\n this.data_ = data;\n size = data.size;\n blobType = data.type;\n }\n else if (data instanceof ArrayBuffer) {\n if (opt_elideCopy) {\n this.data_ = new Uint8Array(data);\n }\n else {\n this.data_ = new Uint8Array(data.byteLength);\n this.data_.set(new Uint8Array(data));\n }\n size = this.data_.length;\n }\n else if (data instanceof Uint8Array) {\n if (opt_elideCopy) {\n this.data_ = data;\n }\n else {\n this.data_ = new Uint8Array(data.length);\n this.data_.set(data);\n }\n size = data.length;\n }\n this.size_ = size;\n this.type_ = blobType;\n }\n FbsBlob.prototype.size = function () {\n return this.size_;\n };\n FbsBlob.prototype.type = function () {\n return this.type_;\n };\n FbsBlob.prototype.slice = function (startByte, endByte) {\n if (type.isNativeBlob(this.data_)) {\n var realBlob = this.data_;\n var sliced = fs.sliceBlob(realBlob, startByte, endByte);\n if (sliced === null) {\n return null;\n }\n return new FbsBlob(sliced);\n }\n else {\n var slice = new Uint8Array(this.data_.buffer, startByte, endByte - startByte);\n return new FbsBlob(slice, true);\n }\n };\n FbsBlob.getBlob = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n if (type.isNativeBlobDefined()) {\n var blobby = var_args.map(function (val) {\n if (val instanceof FbsBlob) {\n return val.data_;\n }\n else {\n return val;\n }\n });\n return new FbsBlob(fs.getBlob.apply(null, blobby));\n }\n else {\n var uint8Arrays = var_args.map(function (val) {\n if (type.isString(val)) {\n return string.dataFromString(StringFormat.RAW, val).data;\n }\n else {\n // Blobs don't exist, so this has to be a Uint8Array.\n return val.data_;\n }\n });\n var finalLength_1 = 0;\n uint8Arrays.forEach(function (array) {\n finalLength_1 += array.byteLength;\n });\n var merged_1 = new Uint8Array(finalLength_1);\n var index_1 = 0;\n uint8Arrays.forEach(function (array) {\n for (var i = 0; i < array.length; i++) {\n merged_1[index_1++] = array[i];\n }\n });\n return new FbsBlob(merged_1, true);\n }\n };\n FbsBlob.prototype.uploadData = function () {\n return this.data_;\n };\n return FbsBlob;\n}());\nexport { FbsBlob };\n\n//# sourceMappingURL=blob.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/blob.js\n// module id = null\n// module chunks = ","var RequestInfo = /** @class */ (function () {\n function RequestInfo(url, method, \n /**\n * Returns the value with which to resolve the request's promise. Only called\n * if the request is successful. Throw from this function to reject the\n * returned Request's promise with the thrown error.\n * Note: The XhrIo passed to this function may be reused after this callback\n * returns. Do not keep a reference to it in any way.\n */\n handler, timeout) {\n this.url = url;\n this.method = method;\n this.handler = handler;\n this.timeout = timeout;\n this.urlParams = {};\n this.headers = {};\n this.body = null;\n this.errorHandler = null;\n /**\n * Called with the current number of bytes uploaded and total size (-1 if not\n * computable) of the request body (i.e. used to report upload progress).\n */\n this.progressCallback = null;\n this.successCodes = [200];\n this.additionalRetryCodes = [];\n }\n return RequestInfo;\n}());\nexport { RequestInfo };\n\n//# sourceMappingURL=requestinfo.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/requestinfo.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as type from './type';\n/**\n * @struct\n */\nvar Observer = /** @class */ (function () {\n function Observer(nextOrObserver, opt_error, opt_complete) {\n var asFunctions = type.isFunction(nextOrObserver) ||\n type.isDef(opt_error) ||\n type.isDef(opt_complete);\n if (asFunctions) {\n this.next = nextOrObserver;\n this.error = opt_error || null;\n this.complete = opt_complete || null;\n }\n else {\n var observer = nextOrObserver;\n this.next = observer.next || null;\n this.error = observer.error || null;\n this.complete = observer.complete || null;\n }\n }\n return Observer;\n}());\nexport { Observer };\n\n//# sourceMappingURL=observer.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/observer.js\n// module id = null\n// module chunks = ","var UploadTaskSnapshot = /** @class */ (function () {\n function UploadTaskSnapshot(bytesTransferred, totalBytes, state, metadata, task, ref) {\n this.bytesTransferred = bytesTransferred;\n this.totalBytes = totalBytes;\n this.state = state;\n this.metadata = metadata;\n this.task = task;\n this.ref = ref;\n }\n Object.defineProperty(UploadTaskSnapshot.prototype, \"downloadURL\", {\n get: function () {\n if (this.metadata !== null) {\n var urls = this.metadata['downloadURLs'];\n if (urls != null && urls[0] != null) {\n return urls[0];\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n return UploadTaskSnapshot;\n}());\nexport { UploadTaskSnapshot };\n\n//# sourceMappingURL=tasksnapshot.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/tasksnapshot.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines types for interacting with blob transfer tasks.\n */\nimport { InternalTaskState } from './implementation/taskenums';\nimport { Observer } from './implementation/observer';\nimport { TaskEvent, TaskState } from './implementation/taskenums';\nimport { UploadTaskSnapshot } from './tasksnapshot';\nimport * as fbsArgs from './implementation/args';\nimport * as fbsArray from './implementation/array';\nimport { async as fbsAsync } from './implementation/async';\nimport * as errors from './implementation/error';\nimport * as fbsPromiseimpl from './implementation/promise_external';\nimport * as fbsRequests from './implementation/requests';\nimport * as fbsTaskEnums from './implementation/taskenums';\nimport * as typeUtils from './implementation/type';\n/**\n * Represents a blob being uploaded. Can be used to pause/resume/cancel the\n * upload and manage callbacks for various events.\n */\nvar UploadTask = /** @class */ (function () {\n /**\n * @param ref The firebaseStorage.Reference object this task came\n * from, untyped to avoid cyclic dependencies.\n * @param blob The blob to upload.\n */\n function UploadTask(ref, authWrapper, location, mappings, blob, metadata) {\n if (metadata === void 0) { metadata = null; }\n var _this = this;\n this.transferred_ = 0;\n this.needToFetchStatus_ = false;\n this.needToFetchMetadata_ = false;\n this.observers_ = [];\n this.error_ = null;\n this.uploadUrl_ = null;\n this.request_ = null;\n this.chunkMultiplier_ = 1;\n this.resolve_ = null;\n this.reject_ = null;\n this.ref_ = ref;\n this.authWrapper_ = authWrapper;\n this.location_ = location;\n this.blob_ = blob;\n this.metadata_ = metadata;\n this.mappings_ = mappings;\n this.resumable_ = this.shouldDoResumable_(this.blob_);\n this.state_ = InternalTaskState.RUNNING;\n this.errorHandler_ = function (error) {\n _this.request_ = null;\n _this.chunkMultiplier_ = 1;\n if (error.codeEquals(errors.Code.CANCELED)) {\n _this.needToFetchStatus_ = true;\n _this.completeTransitions_();\n }\n else {\n _this.error_ = error;\n _this.transition_(InternalTaskState.ERROR);\n }\n };\n this.metadataErrorHandler_ = function (error) {\n _this.request_ = null;\n if (error.codeEquals(errors.Code.CANCELED)) {\n _this.completeTransitions_();\n }\n else {\n _this.error_ = error;\n _this.transition_(InternalTaskState.ERROR);\n }\n };\n this.promise_ = fbsPromiseimpl.make(function (resolve, reject) {\n _this.resolve_ = resolve;\n _this.reject_ = reject;\n _this.start_();\n });\n // Prevent uncaught rejections on the internal promise from bubbling out\n // to the top level with a dummy handler.\n this.promise_.then(null, function () { });\n }\n UploadTask.prototype.makeProgressCallback_ = function () {\n var _this = this;\n var sizeBefore = this.transferred_;\n return function (loaded, total) {\n _this.updateProgress_(sizeBefore + loaded);\n };\n };\n UploadTask.prototype.shouldDoResumable_ = function (blob) {\n return blob.size() > 256 * 1024;\n };\n UploadTask.prototype.start_ = function () {\n if (this.state_ !== InternalTaskState.RUNNING) {\n // This can happen if someone pauses us in a resume callback, for example.\n return;\n }\n if (this.request_ !== null) {\n return;\n }\n if (this.resumable_) {\n if (this.uploadUrl_ === null) {\n this.createResumable_();\n }\n else {\n if (this.needToFetchStatus_) {\n this.fetchStatus_();\n }\n else {\n if (this.needToFetchMetadata_) {\n // Happens if we miss the metadata on upload completion.\n this.fetchMetadata_();\n }\n else {\n this.continueUpload_();\n }\n }\n }\n }\n else {\n this.oneShotUpload_();\n }\n };\n UploadTask.prototype.resolveToken_ = function (callback) {\n var _this = this;\n this.authWrapper_.getAuthToken().then(function (authToken) {\n switch (_this.state_) {\n case InternalTaskState.RUNNING:\n callback(authToken);\n break;\n case InternalTaskState.CANCELING:\n _this.transition_(InternalTaskState.CANCELED);\n break;\n case InternalTaskState.PAUSING:\n _this.transition_(InternalTaskState.PAUSED);\n break;\n default:\n }\n });\n };\n // TODO(andysoto): assert false\n UploadTask.prototype.createResumable_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = fbsRequests.createResumableUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\n var createRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = createRequest;\n createRequest.getPromise().then(function (url) {\n _this.request_ = null;\n _this.uploadUrl_ = url;\n _this.needToFetchStatus_ = false;\n _this.completeTransitions_();\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.fetchStatus_ = function () {\n var _this = this;\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\n var url = this.uploadUrl_;\n this.resolveToken_(function (authToken) {\n var requestInfo = fbsRequests.getResumableUploadStatus(_this.authWrapper_, _this.location_, url, _this.blob_);\n var statusRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = statusRequest;\n statusRequest.getPromise().then(function (status) {\n status = status;\n _this.request_ = null;\n _this.updateProgress_(status.current);\n _this.needToFetchStatus_ = false;\n if (status.finalized) {\n _this.needToFetchMetadata_ = true;\n }\n _this.completeTransitions_();\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.continueUpload_ = function () {\n var _this = this;\n var chunkSize = fbsRequests.resumableUploadChunkSize * this.chunkMultiplier_;\n var status = new fbsRequests.ResumableUploadStatus(this.transferred_, this.blob_.size());\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\n var url = this.uploadUrl_;\n this.resolveToken_(function (authToken) {\n var requestInfo;\n try {\n requestInfo = fbsRequests.continueResumableUpload(_this.location_, _this.authWrapper_, url, _this.blob_, chunkSize, _this.mappings_, status, _this.makeProgressCallback_());\n }\n catch (e) {\n _this.error_ = e;\n _this.transition_(InternalTaskState.ERROR);\n return;\n }\n var uploadRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = uploadRequest;\n uploadRequest\n .getPromise()\n .then(function (newStatus) {\n _this.increaseMultiplier_();\n _this.request_ = null;\n _this.updateProgress_(newStatus.current);\n if (newStatus.finalized) {\n _this.metadata_ = newStatus.metadata;\n _this.transition_(InternalTaskState.SUCCESS);\n }\n else {\n _this.completeTransitions_();\n }\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.increaseMultiplier_ = function () {\n var currentSize = fbsRequests.resumableUploadChunkSize * this.chunkMultiplier_;\n // Max chunk size is 32M.\n if (currentSize < 32 * 1024 * 1024) {\n this.chunkMultiplier_ *= 2;\n }\n };\n UploadTask.prototype.fetchMetadata_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = fbsRequests.getMetadata(_this.authWrapper_, _this.location_, _this.mappings_);\n var metadataRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = metadataRequest;\n metadataRequest.getPromise().then(function (metadata) {\n _this.request_ = null;\n _this.metadata_ = metadata;\n _this.transition_(InternalTaskState.SUCCESS);\n }, _this.metadataErrorHandler_);\n });\n };\n UploadTask.prototype.oneShotUpload_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = fbsRequests.multipartUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\n var multipartRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = multipartRequest;\n multipartRequest.getPromise().then(function (metadata) {\n _this.request_ = null;\n _this.metadata_ = metadata;\n _this.updateProgress_(_this.blob_.size());\n _this.transition_(InternalTaskState.SUCCESS);\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.updateProgress_ = function (transferred) {\n var old = this.transferred_;\n this.transferred_ = transferred;\n // A progress update can make the \"transferred\" value smaller (e.g. a\n // partial upload not completed by server, after which the \"transferred\"\n // value may reset to the value at the beginning of the request).\n if (this.transferred_ !== old) {\n this.notifyObservers_();\n }\n };\n UploadTask.prototype.transition_ = function (state) {\n if (this.state_ === state) {\n return;\n }\n switch (state) {\n case InternalTaskState.CANCELING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING);\n this.state_ = state;\n if (this.request_ !== null) {\n this.request_.cancel();\n }\n break;\n case InternalTaskState.PAUSING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING);\n this.state_ = state;\n if (this.request_ !== null) {\n this.request_.cancel();\n }\n break;\n case InternalTaskState.RUNNING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSED ||\n // this.state_ === InternalTaskState.PAUSING);\n var wasPaused = this.state_ === InternalTaskState.PAUSED;\n this.state_ = state;\n if (wasPaused) {\n this.notifyObservers_();\n this.start_();\n }\n break;\n case InternalTaskState.PAUSED:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.CANCELED:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSED ||\n // this.state_ === InternalTaskState.CANCELING);\n this.error_ = errors.canceled();\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.ERROR:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING ||\n // this.state_ === InternalTaskState.CANCELING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.SUCCESS:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING ||\n // this.state_ === InternalTaskState.CANCELING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n }\n };\n UploadTask.prototype.completeTransitions_ = function () {\n switch (this.state_) {\n case InternalTaskState.PAUSING:\n this.transition_(InternalTaskState.PAUSED);\n break;\n case InternalTaskState.CANCELING:\n this.transition_(InternalTaskState.CANCELED);\n break;\n case InternalTaskState.RUNNING:\n this.start_();\n break;\n default:\n // TODO(andysoto): assert(false);\n break;\n }\n };\n Object.defineProperty(UploadTask.prototype, \"snapshot\", {\n get: function () {\n var externalState = fbsTaskEnums.taskStateFromInternalTaskState(this.state_);\n return new UploadTaskSnapshot(this.transferred_, this.blob_.size(), externalState, this.metadata_, this, this.ref_);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Adds a callback for an event.\n * @param type The type of event to listen for.\n */\n UploadTask.prototype.on = function (type, nextOrObserver, error, completed) {\n if (nextOrObserver === void 0) { nextOrObserver = undefined; }\n if (error === void 0) { error = undefined; }\n if (completed === void 0) { completed = undefined; }\n function typeValidator(_p) {\n if (type !== TaskEvent.STATE_CHANGED) {\n throw \"Expected one of the event types: [\" + TaskEvent.STATE_CHANGED + \"].\";\n }\n }\n var nextOrObserverMessage = 'Expected a function or an Object with one of ' +\n '`next`, `error`, `complete` properties.';\n var nextValidator = fbsArgs.nullFunctionSpec(true).validator;\n var observerValidator = fbsArgs.looseObjectSpec(null, true).validator;\n function nextOrObserverValidator(p) {\n try {\n nextValidator(p);\n return;\n }\n catch (e) { }\n try {\n observerValidator(p);\n var anyDefined = typeUtils.isJustDef(p['next']) ||\n typeUtils.isJustDef(p['error']) ||\n typeUtils.isJustDef(p['complete']);\n if (!anyDefined) {\n throw '';\n }\n return;\n }\n catch (e) {\n throw nextOrObserverMessage;\n }\n }\n var specs = [\n fbsArgs.stringSpec(typeValidator),\n fbsArgs.looseObjectSpec(nextOrObserverValidator, true),\n fbsArgs.nullFunctionSpec(true),\n fbsArgs.nullFunctionSpec(true)\n ];\n fbsArgs.validate('on', specs, arguments);\n var self = this;\n function makeBinder(specs) {\n function binder(nextOrObserver, error, opt_complete) {\n if (specs !== null) {\n fbsArgs.validate('on', specs, arguments);\n }\n var observer = new Observer(nextOrObserver, error, completed);\n self.addObserver_(observer);\n return function () {\n self.removeObserver_(observer);\n };\n }\n return binder;\n }\n function binderNextOrObserverValidator(p) {\n if (p === null) {\n throw nextOrObserverMessage;\n }\n nextOrObserverValidator(p);\n }\n var binderSpecs = [\n fbsArgs.looseObjectSpec(binderNextOrObserverValidator),\n fbsArgs.nullFunctionSpec(true),\n fbsArgs.nullFunctionSpec(true)\n ];\n var typeOnly = !(typeUtils.isJustDef(nextOrObserver) ||\n typeUtils.isJustDef(error) ||\n typeUtils.isJustDef(completed));\n if (typeOnly) {\n return makeBinder(binderSpecs);\n }\n else {\n return makeBinder(null)(nextOrObserver, error, completed);\n }\n };\n /**\n * This object behaves like a Promise, and resolves with its snapshot data\n * when the upload completes.\n * @param onFulfilled The fulfillment callback. Promise chaining works as normal.\n * @param onRejected The rejection callback.\n */\n UploadTask.prototype.then = function (onFulfilled, onRejected) {\n // These casts are needed so that TypeScript can infer the types of the\n // resulting Promise.\n return this.promise_.then(onFulfilled, onRejected);\n };\n /**\n * Equivalent to calling `then(null, onRejected)`.\n */\n UploadTask.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n /**\n * Adds the given observer.\n */\n UploadTask.prototype.addObserver_ = function (observer) {\n this.observers_.push(observer);\n this.notifyObserver_(observer);\n };\n /**\n * Removes the given observer.\n */\n UploadTask.prototype.removeObserver_ = function (observer) {\n fbsArray.remove(this.observers_, observer);\n };\n UploadTask.prototype.notifyObservers_ = function () {\n var _this = this;\n this.finishPromise_();\n var observers = fbsArray.clone(this.observers_);\n observers.forEach(function (observer) {\n _this.notifyObserver_(observer);\n });\n };\n UploadTask.prototype.finishPromise_ = function () {\n if (this.resolve_ !== null) {\n var triggered = true;\n switch (fbsTaskEnums.taskStateFromInternalTaskState(this.state_)) {\n case TaskState.SUCCESS:\n fbsAsync(this.resolve_.bind(null, this.snapshot))();\n break;\n case TaskState.CANCELED:\n case TaskState.ERROR:\n var toCall = this.reject_;\n fbsAsync(toCall.bind(null, this.error_))();\n break;\n default:\n triggered = false;\n break;\n }\n if (triggered) {\n this.resolve_ = null;\n this.reject_ = null;\n }\n }\n };\n UploadTask.prototype.notifyObserver_ = function (observer) {\n var externalState = fbsTaskEnums.taskStateFromInternalTaskState(this.state_);\n switch (externalState) {\n case TaskState.RUNNING:\n case TaskState.PAUSED:\n if (observer.next !== null) {\n fbsAsync(observer.next.bind(observer, this.snapshot))();\n }\n break;\n case TaskState.SUCCESS:\n if (observer.complete !== null) {\n fbsAsync(observer.complete.bind(observer))();\n }\n break;\n case TaskState.CANCELED:\n case TaskState.ERROR:\n if (observer.error !== null) {\n fbsAsync(observer.error.bind(observer, this.error_))();\n }\n break;\n default:\n // TODO(andysoto): assert(false);\n if (observer.error !== null) {\n fbsAsync(observer.error.bind(observer, this.error_))();\n }\n }\n };\n /**\n * Resumes a paused task. Has no effect on a currently running or failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.resume = function () {\n fbsArgs.validate('resume', [], arguments);\n var valid = this.state_ === InternalTaskState.PAUSED ||\n this.state_ === InternalTaskState.PAUSING;\n if (valid) {\n this.transition_(InternalTaskState.RUNNING);\n }\n return valid;\n };\n /**\n * Pauses a currently running task. Has no effect on a paused or failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.pause = function () {\n fbsArgs.validate('pause', [], arguments);\n var valid = this.state_ === InternalTaskState.RUNNING;\n if (valid) {\n this.transition_(InternalTaskState.PAUSING);\n }\n return valid;\n };\n /**\n * Cancels a currently running or paused task. Has no effect on a complete or\n * failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.cancel = function () {\n fbsArgs.validate('cancel', [], arguments);\n var valid = this.state_ === InternalTaskState.RUNNING ||\n this.state_ === InternalTaskState.PAUSING;\n if (valid) {\n this.transition_(InternalTaskState.CANCELING);\n }\n return valid;\n };\n return UploadTask;\n}());\nexport { UploadTask };\n\n//# sourceMappingURL=task.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/task.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines the Firebase Storage Reference class.\n */\nimport * as args from './implementation/args';\nimport { FbsBlob } from './implementation/blob';\nimport * as errorsExports from './implementation/error';\nimport { Location } from './implementation/location';\nimport * as metadata from './implementation/metadata';\nimport * as object from './implementation/object';\nimport * as path from './implementation/path';\nimport * as requests from './implementation/requests';\nimport * as fbsString from './implementation/string';\nimport { StringFormat } from './implementation/string';\nimport * as type from './implementation/type';\nimport { UploadTask } from './task';\n/**\n * Provides methods to interact with a bucket in the Firebase Storage service.\n * @param location An fbs.location, or the URL at\n * which to base this object, in one of the following forms:\n * gs:///\n * http[s]://firebasestorage.googleapis.com/\n * /b//o/\n * Any query or fragment strings will be ignored in the http[s]\n * format. If no value is passed, the storage object will use a URL based on\n * the project ID of the base firebase.App instance.\n */\nvar Reference = /** @class */ (function () {\n function Reference(authWrapper, location) {\n this.authWrapper = authWrapper;\n if (location instanceof Location) {\n this.location = location;\n }\n else {\n this.location = Location.makeFromUrl(location);\n }\n }\n /**\n * @return The URL for the bucket and path this object references,\n * in the form gs:///\n * @override\n */\n Reference.prototype.toString = function () {\n args.validate('toString', [], arguments);\n return 'gs://' + this.location.bucket + '/' + this.location.path;\n };\n Reference.prototype.newRef = function (authWrapper, location) {\n return new Reference(authWrapper, location);\n };\n Reference.prototype.mappings = function () {\n return metadata.getMappings();\n };\n /**\n * @return A reference to the object obtained by\n * appending childPath, removing any duplicate, beginning, or trailing\n * slashes.\n */\n Reference.prototype.child = function (childPath) {\n args.validate('child', [args.stringSpec()], arguments);\n var newPath = path.child(this.location.path, childPath);\n var location = new Location(this.location.bucket, newPath);\n return this.newRef(this.authWrapper, location);\n };\n Object.defineProperty(Reference.prototype, \"parent\", {\n /**\n * @return A reference to the parent of the\n * current object, or null if the current object is the root.\n */\n get: function () {\n var newPath = path.parent(this.location.path);\n if (newPath === null) {\n return null;\n }\n var location = new Location(this.location.bucket, newPath);\n return this.newRef(this.authWrapper, location);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"root\", {\n /**\n * @return An reference to the root of this\n * object's bucket.\n */\n get: function () {\n var location = new Location(this.location.bucket, '');\n return this.newRef(this.authWrapper, location);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"bucket\", {\n get: function () {\n return this.location.bucket;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"fullPath\", {\n get: function () {\n return this.location.path;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"name\", {\n get: function () {\n return path.lastComponent(this.location.path);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"storage\", {\n get: function () {\n return this.authWrapper.service();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Uploads a blob to this object's location.\n * @param data The blob to upload.\n * @return An UploadTask that lets you control and\n * observe the upload.\n */\n Reference.prototype.put = function (data, metadata) {\n if (metadata === void 0) { metadata = null; }\n args.validate('put', [args.uploadDataSpec(), args.metadataSpec(true)], arguments);\n this.throwIfRoot_('put');\n return new UploadTask(this, this.authWrapper, this.location, this.mappings(), new FbsBlob(data), metadata);\n };\n /**\n * Uploads a string to this object's location.\n * @param string The string to upload.\n * @param opt_format The format of the string to upload.\n * @return An UploadTask that lets you control and\n * observe the upload.\n */\n Reference.prototype.putString = function (string, format, opt_metadata) {\n if (format === void 0) { format = StringFormat.RAW; }\n args.validate('putString', [\n args.stringSpec(),\n args.stringSpec(fbsString.formatValidator, true),\n args.metadataSpec(true)\n ], arguments);\n this.throwIfRoot_('putString');\n var data = fbsString.dataFromString(format, string);\n var metadata = object.clone(opt_metadata);\n if (!type.isDef(metadata['contentType']) && type.isDef(data.contentType)) {\n metadata['contentType'] = data.contentType;\n }\n return new UploadTask(this, this.authWrapper, this.location, this.mappings(), new FbsBlob(data.data, true), metadata);\n };\n /**\n * Deletes the object at this location.\n * @return A promise that resolves if the deletion succeeds.\n */\n Reference.prototype.delete = function () {\n args.validate('delete', [], arguments);\n this.throwIfRoot_('delete');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = requests.deleteObject(self.authWrapper, self.location);\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * A promise that resolves with the metadata for this object. If this\n * object doesn't exist or metadata cannot be retreived, the promise is\n * rejected.\n */\n Reference.prototype.getMetadata = function () {\n args.validate('getMetadata', [], arguments);\n this.throwIfRoot_('getMetadata');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = requests.getMetadata(self.authWrapper, self.location, self.mappings());\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * Updates the metadata for this object.\n * @param metadata The new metadata for the object.\n * Only values that have been explicitly set will be changed. Explicitly\n * setting a value to null will remove the metadata.\n * @return A promise that resolves\n * with the new metadata for this object.\n * @see firebaseStorage.Reference.prototype.getMetadata\n */\n Reference.prototype.updateMetadata = function (metadata) {\n args.validate('updateMetadata', [args.metadataSpec()], arguments);\n this.throwIfRoot_('updateMetadata');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = requests.updateMetadata(self.authWrapper, self.location, metadata, self.mappings());\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * @return A promise that resolves with the download\n * URL for this object.\n */\n Reference.prototype.getDownloadURL = function () {\n args.validate('getDownloadURL', [], arguments);\n this.throwIfRoot_('getDownloadURL');\n return this.getMetadata().then(function (metadata) {\n var url = metadata['downloadURLs'][0];\n if (type.isDef(url)) {\n return url;\n }\n else {\n throw errorsExports.noDownloadURL();\n }\n });\n };\n Reference.prototype.throwIfRoot_ = function (name) {\n if (this.location.path === '') {\n throw errorsExports.invalidRootOperation(name);\n }\n };\n return Reference;\n}());\nexport { Reference };\n\n//# sourceMappingURL=reference.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/reference.js\n// module id = null\n// module chunks = ","import * as promiseimpl from './promise_external';\n/**\n * A request whose promise always fails.\n * @struct\n * @template T\n */\nvar FailRequest = /** @class */ (function () {\n function FailRequest(error) {\n this.promise_ = promiseimpl.reject(error);\n }\n /** @inheritDoc */\n FailRequest.prototype.getPromise = function () {\n return this.promise_;\n };\n /** @inheritDoc */\n FailRequest.prototype.cancel = function (appDelete) {\n if (appDelete === void 0) { appDelete = false; }\n };\n return FailRequest;\n}());\nexport { FailRequest };\n\n//# sourceMappingURL=failrequest.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/failrequest.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as object from './object';\nimport * as constants from './constants';\n/**\n * @struct\n */\nvar RequestMap = /** @class */ (function () {\n function RequestMap() {\n this.map_ = {};\n this.id_ = constants.minSafeInteger;\n }\n /**\n * Registers the given request with this map.\n * The request is unregistered when it completes.\n * @param r The request to register.\n */\n RequestMap.prototype.addRequest = function (r) {\n var id = this.id_;\n this.id_++;\n this.map_[id] = r;\n var self = this;\n function unmap() {\n delete self.map_[id];\n }\n r.getPromise().then(unmap, unmap);\n };\n /**\n * Cancels all registered requests.\n */\n RequestMap.prototype.clear = function () {\n object.forEach(this.map_, function (key, val) {\n if (val) {\n val.cancel(true);\n }\n });\n this.map_ = {};\n };\n return RequestMap;\n}());\nexport { RequestMap };\n\n//# sourceMappingURL=requestmap.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/requestmap.js\n// module id = null\n// module chunks = ","import * as constants from './constants';\nimport * as errorsExports from './error';\nimport { FailRequest } from './failrequest';\nimport { Location } from './location';\nimport * as promiseimpl from './promise_external';\nimport { RequestMap } from './requestmap';\nimport * as type from './type';\n/**\n * @param app If null, getAuthToken always resolves with null.\n * @param service The storage service associated with this auth wrapper.\n * Untyped to avoid circular type dependencies.\n * @struct\n */\nvar AuthWrapper = /** @class */ (function () {\n function AuthWrapper(app, maker, requestMaker, service, pool) {\n this.bucket_ = null;\n this.deleted_ = false;\n this.app_ = app;\n if (this.app_ !== null) {\n var options = this.app_.options;\n if (type.isDef(options)) {\n this.bucket_ = AuthWrapper.extractBucket_(options);\n }\n }\n this.storageRefMaker_ = maker;\n this.requestMaker_ = requestMaker;\n this.pool_ = pool;\n this.service_ = service;\n this.maxOperationRetryTime_ = constants.defaultMaxOperationRetryTime;\n this.maxUploadRetryTime_ = constants.defaultMaxUploadRetryTime;\n this.requestMap_ = new RequestMap();\n }\n AuthWrapper.extractBucket_ = function (config) {\n var bucketString = config[constants.configOption] || null;\n if (bucketString == null) {\n return null;\n }\n var loc = Location.makeFromBucketSpec(bucketString);\n return loc.bucket;\n };\n AuthWrapper.prototype.getAuthToken = function () {\n // TODO(andysoto): remove ifDef checks after firebase-app implements stubs\n // (b/28673818).\n if (this.app_ !== null &&\n type.isDef(this.app_.INTERNAL) &&\n type.isDef(this.app_.INTERNAL.getToken)) {\n return this.app_.INTERNAL.getToken().then(function (response) {\n if (response !== null) {\n return response.accessToken;\n }\n else {\n return null;\n }\n }, function (_error) {\n return null;\n });\n }\n else {\n return promiseimpl.resolve(null);\n }\n };\n AuthWrapper.prototype.bucket = function () {\n if (this.deleted_) {\n throw errorsExports.appDeleted();\n }\n else {\n return this.bucket_;\n }\n };\n /**\n * The service associated with this auth wrapper. Untyped to avoid circular\n * type dependencies.\n */\n AuthWrapper.prototype.service = function () {\n return this.service_;\n };\n /**\n * Returns a new firebaseStorage.Reference object referencing this AuthWrapper\n * at the given Location.\n * @param loc The Location.\n * @return Actually a firebaseStorage.Reference, typing not allowed\n * because of circular dependency problems.\n */\n AuthWrapper.prototype.makeStorageReference = function (loc) {\n return this.storageRefMaker_(this, loc);\n };\n AuthWrapper.prototype.makeRequest = function (requestInfo, authToken) {\n if (!this.deleted_) {\n var request = this.requestMaker_(requestInfo, authToken, this.pool_);\n this.requestMap_.addRequest(request);\n return request;\n }\n else {\n return new FailRequest(errorsExports.appDeleted());\n }\n };\n /**\n * Stop running requests and prevent more from being created.\n */\n AuthWrapper.prototype.deleteApp = function () {\n this.deleted_ = true;\n this.app_ = null;\n this.requestMap_.clear();\n };\n AuthWrapper.prototype.maxUploadRetryTime = function () {\n return this.maxUploadRetryTime_;\n };\n AuthWrapper.prototype.setMaxUploadRetryTime = function (time) {\n this.maxUploadRetryTime_ = time;\n };\n AuthWrapper.prototype.maxOperationRetryTime = function () {\n return this.maxOperationRetryTime_;\n };\n AuthWrapper.prototype.setMaxOperationRetryTime = function (time) {\n this.maxOperationRetryTime_ = time;\n };\n return AuthWrapper;\n}());\nexport { AuthWrapper };\n\n//# sourceMappingURL=authwrapper.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/authwrapper.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as args from './implementation/args';\nimport { AuthWrapper } from './implementation/authwrapper';\nimport { Location } from './implementation/location';\nimport * as fbsPromiseImpl from './implementation/promise_external';\nimport * as RequestExports from './implementation/request';\nimport { Reference } from './reference';\n/**\n * A service that provides firebaseStorage.Reference instances.\n * @param opt_url gs:// url to a custom Storage Bucket\n *\n * @struct\n */\nvar Service = /** @class */ (function () {\n function Service(app, pool, url) {\n this.bucket_ = null;\n function maker(authWrapper, loc) {\n return new Reference(authWrapper, loc);\n }\n this.authWrapper_ = new AuthWrapper(app, maker, RequestExports.makeRequest, this, pool);\n this.app_ = app;\n if (url != null) {\n this.bucket_ = Location.makeFromBucketSpec(url);\n }\n else {\n var authWrapperBucket = this.authWrapper_.bucket();\n if (authWrapperBucket != null) {\n this.bucket_ = new Location(authWrapperBucket, '');\n }\n }\n this.internals_ = new ServiceInternals(this);\n }\n /**\n * Returns a firebaseStorage.Reference for the given path in the default\n * bucket.\n */\n Service.prototype.ref = function (path) {\n function validator(path) {\n if (/^[A-Za-z]+:\\/\\//.test(path)) {\n throw 'Expected child path but got a URL, use refFromURL instead.';\n }\n }\n args.validate('ref', [args.stringSpec(validator, true)], arguments);\n if (this.bucket_ == null) {\n throw new Error('No Storage Bucket defined in Firebase Options.');\n }\n var ref = new Reference(this.authWrapper_, this.bucket_);\n if (path != null) {\n return ref.child(path);\n }\n else {\n return ref;\n }\n };\n /**\n * Returns a firebaseStorage.Reference object for the given absolute URL,\n * which must be a gs:// or http[s]:// URL.\n */\n Service.prototype.refFromURL = function (url) {\n function validator(p) {\n if (!/^[A-Za-z]+:\\/\\//.test(p)) {\n throw 'Expected full URL but got a child path, use ref instead.';\n }\n try {\n Location.makeFromUrl(p);\n }\n catch (e) {\n throw 'Expected valid full URL but got an invalid one.';\n }\n }\n args.validate('refFromURL', [args.stringSpec(validator, false)], arguments);\n return new Reference(this.authWrapper_, url);\n };\n Object.defineProperty(Service.prototype, \"maxUploadRetryTime\", {\n get: function () {\n return this.authWrapper_.maxUploadRetryTime();\n },\n enumerable: true,\n configurable: true\n });\n Service.prototype.setMaxUploadRetryTime = function (time) {\n args.validate('setMaxUploadRetryTime', [args.nonNegativeNumberSpec()], arguments);\n this.authWrapper_.setMaxUploadRetryTime(time);\n };\n Object.defineProperty(Service.prototype, \"maxOperationRetryTime\", {\n get: function () {\n return this.authWrapper_.maxOperationRetryTime();\n },\n enumerable: true,\n configurable: true\n });\n Service.prototype.setMaxOperationRetryTime = function (time) {\n args.validate('setMaxOperationRetryTime', [args.nonNegativeNumberSpec()], arguments);\n this.authWrapper_.setMaxOperationRetryTime(time);\n };\n Object.defineProperty(Service.prototype, \"app\", {\n get: function () {\n return this.app_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Service.prototype, \"INTERNAL\", {\n get: function () {\n return this.internals_;\n },\n enumerable: true,\n configurable: true\n });\n return Service;\n}());\nexport { Service };\n/**\n * @struct\n */\nvar ServiceInternals = /** @class */ (function () {\n function ServiceInternals(service) {\n this.service_ = service;\n }\n /**\n * Called when the associated app is deleted.\n * @see {!fbs.AuthWrapper.prototype.deleteApp}\n */\n ServiceInternals.prototype.delete = function () {\n this.service_.authWrapper_.deleteApp();\n return fbsPromiseImpl.resolve(undefined);\n };\n return ServiceInternals;\n}());\nexport { ServiceInternals };\n\n//# sourceMappingURL=service.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/service.js\n// module id = null\n// module chunks = "]}