{"version":3,"sources":["webpack:///firebase-app.js","webpack:/webpack/bootstrap 8b8daf4fcf32d6023d2f","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","Uc","Og","u","na","oa","trim","wa","pa","qa","ra","sa","ta","ua","va","v","xa","ya","za","w","Aa","Ba","Ca","Da","Fa","Tc","kf","Ea","qb","ob","Ga","Ha","Ja","Lc","lf","Ia","bb","Ka","Oa","La","Ma","Na","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","qc","Uint8Array","Xc","bg","Fe","Cg","Int32Array","Lb","Nb","Ob","Pb","Qb","F","zb","ic","yi","Sb","Rb","Tb","freeze","Ub","Ic","isDisposed","Vb","Wb","Xb","removeEventListener","B","currentTarget","defaultPrevented","Ue","stopPropagation","preventDefault","Yb","relatedTarget","button","screenY","screenX","clientY","clientX","offsetY","offsetX","charCode","keyCode","metaKey","shiftKey","altKey","ctrlKey","state","pointerId","pointerType","R","init","Zb","2","3","4","changedTouches","srcElement","nodeName","fromElement","toElement","layerX","layerY","pageX","pageY","cancelBubble","returnValue","Hf","$b","ac","bc","Mc","capture","vc","pc","cc","dc","I","jc","add","ec","remove","fc","td","hasListener","gc","hc","lc","kc","mc","listen","oc","rc","sc","tc","ga","uc","detachEvent","wc","parentNode","xc","handleEvent","yc","Ac","jf","zc","Bc","Cc","Ec","Dc","Hc","Fc","Gc","Nc","Number","Boolean","valueOf","isFinite","isNaN","Jc","\"","\\","/","\b","\f","\n","\r","\t","\u000b","Kc","substr","je","Cd","Oc","Pc","ActiveXObject","XMLHttpRequest","Ee","Qc","XDomainRequest","Rc","readyState","responseText","status","statusText","responseXML","Lf","ze","onprogress","Mf","ontimeout","Nf","open","send","abort","setRequestHeader","getResponseHeader","contentType","Sc","getAllResponseHeaders","Yf","wf","lg","put","Vc","Wc","style","display","contentWindow","write","location","protocol","host","origin","me","bd","Zc","Yc","set","scope","rd","$c","dd","ad","cd","ed","Window","fd","ownerDocument","defaultView","parentWindow","Location","Element","displayName","gd","hf","hd","jd","Tf","kd","ld","getElementById","nd","cssText","className","htmlFor","md","lastIndexOf","cellpadding","cellspacing","colspan","frameborder","height","maxlength","nonce","role","rowspan","usemap","valign","width","pd","od","createTextNode","nodeType","qd","$goog_Thenable","sd","C","ud","vd","child","wd","xd","D","E","zd","yd","Ad","Bd","Gf","Ed","Dd","cancel","Fd","Gd","Hd","Id","zg","Ag","Jd","Kd","Bf","Ld","Md","Nd","Ne","re","be","he","Od","Pd","Qd","Rd","Td","Sd","Ud","Wd","Vd","Xd","Yd","Zd","yg","de","We","$d","ae","Pg","attributes","ce","tagName","ee","te","fe","Xe","ge","Le","Ae","ie","ke","le","getName","getParent","info","config","ne","pe","G","nf","dispatchEvent","qe","se","StopIteration","mf","H","ue","addAll","ve","we","clear","xe","ye","Be","Ce","De","substring","decodeURIComponent","headers","Ke","hg","gf","T","Ge","He","toUpperCase","Re","Qe","upload","Ie","FormData","responseType","withCredentials","Je","Me","dg","Oe","Pe","lengthComputable","loaded","total","getResponse","response","mozResponseArrayBuffer","Se","Xf","Te","J","Ve","Ye","Ze","$e","af","bf","cf","df","pop","ef","K","ff","removeParameter","decodeURI","encodeURI","X","pf","Kg","Lg","Mg","of","firebaseEndpoint","secureTokenEndpoint","qf","L","rf","href","sf","tf","vf","uf","xf","yf","screen","availHeight","availWidth","top","left","resizable","statusbar","toolbar","scrollbars","standalone","noreferrer","createEvent","initMouseEvent","opener","noopener","focus","zf","closed","Af","Df","Cf","Ef","Ff","If","Fg","Hg","Jf","sort","M","localStorage","Kf","setItem","removeItem","indexedDB","Of","Pf","Qf","Rf","Sf","___jsl","CP","Uf","onLine","connection","Vf","ug","ag","Wf","$f","visibilityState","toUTCString","Zf","abcd","N","cg","eg","fg","gg","ig","Gg","providerId","Ig","Jg","Ng","jg","kg","toJSON","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","Y","getError","eventId","urlResponse","sessionId","ng","og","pg","sub","email","provider_id","sign_in_provider","is_anonymous","getEmail","isAnonymous","qg","iss","aud","exp","rg","idToken","sg","accessToken","oauthToken","oauthTokenSecret","tg","vg","wg","id_token","access_token","secret","oauth_token_secret","postBody","requestUri","oauthIdToken","oauthAccessToken","xg","isOAuthProvider","setCustomParameters","P","addScope","credential","Bg","Dg","Eg","Q","password","PROVIDER_ID","verificationId","phoneNumber","U","verifyPhoneNumber","operation","verificationCode","temporaryProof","sessionInfo","auth","verify","recaptchaToken","Qg","Rg","Sg","Tg","Ug","Vg","$g","node","secureTokenTimeout","Wg","secureTokenHeaders","Xg","firebaseTimeout","Yg","firebaseHeaders","Zg","Content-Type","ah","bh","dh","ch","eh","fh","gapi","client","request","setApiKey","setToken","path","body","authType","hh","grant_type","refresh_token","gh","ih","jh","kh","mh","lh","identifier","continueUri","allProviders","oh","nh","authorizedDomains","ph","qh","signInAnonymously","rh","updateEmail","sh","updatePassword","th","photoUrl","updateProfile","deleteAttribute","sendPasswordResetEmail","requestType","uh","sendEmailVerification","vh","wh","yh","xh","deleteProvider","zh","Ah","needConfirmation","errorMessage","returnIdpCredential","Bh","Ch","autoCreate","Dh","Eh","oobCode","confirmPasswordReset","Fh","newPassword","checkActionCode","Gh","applyActionCode","Hh","endpoint","$","Ih","Jh","Kh","Lh","recaptchaSiteKey","Mh","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","Oh","Nh","Ph","where","url","messageHandlersFilter","position","dontclear","restyle","setHideOnLeave","Qh","ping","sendMessage","Rh","register","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","RegExp","$h","ai","bi","ci","authEvent","webStorageSupport","di","theme","sitekey","size","hasChildNodes","ei","fi","gi","render","hi","grecaptcha","execute","firstChild","ii","ji","Infinity","hl","ki","li","apiKey","mi","reactNative","AsyncStorage","getItem","ni","pi","oi","qi","si","ri","sessionStorage","ui","ti","vi","errorCode","onupgradeneeded","createObjectStore","keyPath","onsuccess","wi","xi","objectStore","zi","transaction","Ai","getAll","openCursor","Fi","Ei","Browser","Bi","Node","Ci","ReactNative","Di","Gi","android","packageName","installApp","minimumVersion","iOS","bundleId","handleCodeInApp","Hi","continueUrl","canHandleCodeInApp","androidPackageName","androidMinimumVersion","androidInstallApp","iOSBundleId","Ii","confirm","Ji","Ki","newEmail","fromEmail","Li","start","Mi","Ni","stop","Ui","Oi","Pi","Qi","Ri","Si","Ti","isNewUser","rawUserInfo","profile","login","screenName","Yi","Vi","LOCAL","NONE","SESSION","Wi","Xi","S","Zi","$i","aj","bj","oldValue","cj","dj","ej","fj","gj","hj","ij","jj","kj","lj","mj","nj","ibi","apn","appDisplayName","oj","handleOpenURL","pj","qj","rj","sj","tj","xj","uj","vj","unknown","signInViaRedirect","linkViaRedirect","reauthViaRedirect","signInViaPopup","linkViaPopup","reauthViaPopup","Z","wj","Aj","yj","zj","unsubscribe","Bj","Cj","getRedirectResult","Dj","Ej","Fj","Gj","Hj","user","Ij","Jj","refreshToken","expirationTime","Lj","Kj","expiresIn","Mj","expires_in","Nj","lastSignInTime","creationTime","lastLoginAt","createdAt","Oj","uid","photoURL","Pj","appName","authDomain","Qj","Rj","Sj","languageCode","Tj","Uj","Vj","Wj","getIdToken","Xj","Yj","Zj","ak","bk","emailVerified","metadata","providerData","ck","dk","ek","gk","fk","hk","copy","reload","ik","jk","kk","users","localId","lk","passwordHash","providerUserInfo","rawId","reauthenticateAndRetrieveDataWithCredential","mk","reauthenticateWithCredential","nk","linkAndRetrieveDataWithCredential","ok","linkWithCredential","linkWithPhoneNumber","reauthenticateWithPhoneNumber","additionalUserInfo","operationType","updatePhoneNumber","unlink","linkWithPopup","pk","reauthenticateWithPopup","qk","linkWithRedirect","rk","reauthenticateWithRedirect","sk","tk","uk","stsTokenManager","redirectEventId","vk","wk","xk","yk","Ak","zk","Bk","Ck","Dk","setPersistence","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","logFramework","Mk","Nk","Ok","useDeviceLanguage","languages","language","userLanguage","currentUser","Pk","Qk","signInWithPopup","signInWithRedirect","signOut","Rk","Sk","Tk","onIdTokenChanged","onAuthStateChanged","signInWithCustomToken","signInWithEmailAndPassword","createUserWithEmailAndPassword","signInWithCredential","signInAndRetrieveDataWithCredential","Uk","_lat","fetchProvidersForEmail","verifyPasswordResetCode","signInWithPhoneNumber","Wk","Vk","V","Xk","Yk","Zk","$k","al","bl","App","cl","dl","el","fl","gl","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_","DB_NAME","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_","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.6.0\n * Build: rev-f5e674c\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.6.0',\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.6.0\n * Build: rev-f5e674c\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_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(TokenManager.DB_NAME, 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 return 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_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(TokenManager.DB_NAME, 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 return 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.6.0\n * Build: rev-f5e674c\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 = "]}