{"version":3,"sources":["webpack:///firebase-app.js","webpack:/webpack/bootstrap c51c2fdc1b402a83b34a","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:///tmp/tmp-195469VXbTSh3UCGkL/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:///tmp/tmp-195469VXbTSh3UCGkL/node_modules/promise-polyfill/promise.js","webpack:///tmp/tmp-195469VXbTSh3UCGkL/node_modules/node-libs-browser/node_modules/timers-browserify/main.js","webpack:///tmp/tmp-195469VXbTSh3UCGkL/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/api/DataSnapshot.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/onDisconnect.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/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/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/src/models/token-details-model.js","webpack:///messaging/dist/esm/index.js","webpack:///messaging/dist/esm/src/models/errors.js","webpack:///messaging/dist/esm/src/models/db-interface.js","webpack:///messaging/dist/esm/src/models/vapid-details-model.js","webpack:///messaging/dist/esm/src/models/fcm-details.js","webpack:///messaging/dist/esm/src/models/iid-model.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/helpers/base64-to-array-buffer.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","value","assert_1","assert","assertionError","crypt_1","base64","base64Decode","base64Encode","constants_1","CONSTANTS","deepCopy_1","deepCopy","deepExtend","patchProperty","deferred_1","Deferred","environment_1","getUA","isMobileCordova","isNodeSdk","isReactNative","errors_1","ErrorFactory","FirebaseError","patchCapture","json_1","jsonEval","stringify","jwt_1","decode","isAdmin","issuedAtTime","isValidFormat","isValidTimestamp","obj_1","clone","contains","every","extend","findKey","findValue","forEach","getAnyKey","getCount","getValues","isEmpty","isNonNullObject","map","safeGet","query_1","querystring","querystringDecode","sha1_1","Sha1","subscribe_1","createSubscribe","validation_1","errorPrefix","validateArgCount","validateCallback","validateContextObject","validateNamespace","utf8_1","stringLength","stringToByteArray","__webpack_exports__","createFirebaseNamespace","removeApp","callAppHooks","apps_","app","DEFAULT_ENTRY_NAME","initializeApp","options","firebaseApp_FirebaseAppImpl","namespace","getApps","keys","registerService","createService","serviceProperties","appHook","allowMultipleInstances","factories","appHooks","serviceNamespace","appArg","cjs","args","_i","arguments","this","_getService","bind","apply","extendNamespace","props","eventName","serviceName","factoryName","useAsService","useService","apps","SDK_VERSION","INTERNAL","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","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","assertion","message","str","out","charCodeAt","byteArrayToString","bytes","pos","c1","String","fromCharCode","c2","c3","c4","u","join","y","b","_","ENCODED_VALS_BASE","ENCODED_VALS","ENCODED_VALS_WEBSAFE","HAS_NATIVE_SUPPORT","atob","encodeByteArray","input","opt_webSafe","isArray","init_","byteToCharMap","byteToCharMapWebSafe_","byteToCharMap_","output","byte1","haveByte2","byte2","haveByte3","byte3","outByte1","outByte2","outByte3","outByte4","encodeString","btoa","decodeString","decodeStringToByteArray","charToByteMap","charToByteMapWebSafe_","charToByteMap_","charAt","haveByte4","byte4","A","utf8Bytes","JSON","parse","data","fn","objTo","objFrom","rv","f","opt_obj","res","opt_this","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","slice","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","target","Date","dateValue","getTime","prop","wrapCallback","catch","navigator","test","captureFake","captureStackTrace","ERROR_NAME","err_1","stack","pattern","template","fullCode","replace","match","token","header","claims","signature","parts","split","validSince","validUntil","now","floor","decoded","querystringParams","params","arrayVal","encodeURIComponent","__extends","extendStatics","setPrototypeOf","__proto__","__","hash_1","_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","fnName","argumentNumber","optional","argName","context","minCount","maxCount","argCount","argError","high","webpackJsonpFirebase","76","77","ba","ca","da","splice","propertyIsEnumerable","ea","fa","ha","q","ka","la","unshift","r","ma","ib","Rc","oa","qa","ra","sa","ta","ua","va","wa","xa","v","ya","za","Aa","Ca","Fa","Ga","Ha","Ba","Ia","Ja","Ka","La","x","Ma","Pa","Qa","Ra","Sa","Ta","Ua","Wa","Va","Xa","Ya","Za","eb","documentMode","jb","pa","fb","max","exec","parseInt","mb","$goog_Thenable","nb","ob","pb","sb","tb","qb","ub","xb","style","display","contentWindow","open","write","location","protocol","host","origin","parentNode","yb","zb","Ab","Bb","rb","set","Cb","Window","wb","z","Db","h","Eb","Fb","Gb","Hb","Ib","Kb","Jb","B","Lb","Mb","Nb","Ob","Ub","Qb","Rb","Sb","Tb","Vb","Pb","D","Ac","Bc","Wb","Xb","Yb","Zb","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","pc","ja","oc","qc","rc","sc","uc","vc","wc","getElementById","xc","cssText","className","htmlFor","yc","lastIndexOf","zc","$b","createTextNode","nodeType","w","Cc","Dc","Ec","Number","Boolean","Fc","valueOf","isFinite","isNaN","Hc","Gc","substr","Ic","Jc","Kc","ia","Lc","C","Qc","relatedTarget","button","screenY","screenX","clientY","clientX","metaKey","shiftKey","altKey","ctrlKey","pointerId","pointerType","changedTouches","srcElement","nodeName","fromElement","toElement","pageX","pageY","defaultPrevented","Uc","capture","Tc","Vc","Wc","Xc","Yc","Zc","cd","dd","ed","Sc","fd","gd","hd","$c","Pc","jd","bd","kd","Nc","ld","E","md","removeEventListener","detachEvent","ad","nd","od","keyCode","returnValue","pd","handleEvent","F","G","qd","rd","sd","td","vd","wd","Ad","Dd","Cd","Bd","yd","Ed","S","P","Fd","Gd","H","zd","Id","Da","Ld","Md","Kd","Nd","Jd","Od","Rd","Sd","Qd","Td","Ud","Vd","Wd","Ea","Xd","Yd","Pd","Zd","$d","ae","Uint8Array","Int32Array","be","ce","he","vb","tc","Hd","ie","je","ke","le","me","ne","pe","substring","decodeURIComponent","qe","re","se","te","ue","ve","Be","we","Ce","I","De","Ee","Fe","decodeURI","encodeURI","Ge","He","Ie","Je","Ke","Le","Me","Ne","toLowerCase","Oe","Pe","Re","Se","XMLHttpRequest","ActiveXObject","Te","headers","Ue","N","Ze","toUpperCase","Qe","J","$e","af","FormData","Ye","setRequestHeader","responseType","withCredentials","bf","cf","ontimeout","send","abort","df","ef","ff","aa","gf","hf","Xe","statusText","xd","readyState","status","jf","responseText","lf","mf","nf","of","pf","qf","attributes","rf","tagName","sf","tf","XDomainRequest","responseXML","onprogress","uf","vf","kb","wf","href","xf","yf","zf","Af","Bf","Cf","Df","Ef","screen","availHeight","availWidth","width","height","top","left","resizable","statusbar","toolbar","Ff","scrollbars","standalone","noreferrer","createEvent","initMouseEvent","dispatchEvent","bb","opener","focus","Gf","closed","If","Jf","Kf","Lf","Mf","K","Nf","Pf","Of","sort","userAgent","L","Qf","localStorage","Rf","setItem","removeItem","indexedDB","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","___jsl","CP","$f","onLine","connection","ag","bg","visibilityState","cg","dg","toUTCString","M","fg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","continueUrl","canHandleCodeInApp","androidPackageName","androidMinimumVersion","androidInstallApp","iOSBundleId","Hg","sub","na","provider_id","sign_in_provider","Ig","iss","aud","exp","Mg","Lg","Na","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","isNewUser","kind","rawUserInfo","providerId","profile","login","screenName","Wg","O","Xg","idToken","accessToken","oauthToken","oauthTokenSecret","Zg","id_token","access_token","secret","oauth_token_secret","postBody","requestUri","bh","isOAuthProvider","Kg","ch","dh","credential","eh","fh","gh","hh","ih","Jg","jh","kh","nh","oh","Oa","Y","ph","temporaryProof","phoneNumber","sessionInfo","sh","auth","uh","vh","oauthAccessToken","oauthIdToken","wh","xh","yh","eventId","urlResponse","sessionId","zh","Bh","Ch","Dh","email","Eh","Fh","node","secureTokenEndpoint","secureTokenTimeout","Gh","secureTokenHeaders","Hh","firebaseEndpoint","firebaseTimeout","Ih","firebaseHeaders","Jh","Lh","Mh","Nh","Kh","Oh","gapi","client","request","Qh","Ph","Rh","grant_type","refresh_token","Sh","Th","Uh","kf","Vh","Wh","Q","Xh","identifier","continueUri","allProviders","Yh","Zh","authorizedDomains","$h","ai","th","gi","ii","ji","deleteProvider","ki","li","needConfirmation","errorMessage","mi","Yg","returnIdpCredential","ni","$g","oi","ah","autoCreate","pi","qi","oobCode","T","returnSecureToken","endpoint","ga","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","USER_NOT_FOUND","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","INVALID_CERT_HASH","Ai","zi","ab","Ci","Di","Ei","where","body","url","messageHandlersFilter","position","dontclear","restyle","setHideOnLeave","Fi","ping","Gi","Hi","register","Ki","Ji","Ii","Li","Mi","Ni","Oi","Pi","Hf","RegExp","Qi","Ri","Ti","Ui","authEvent","Si","webStorageSupport","Vi","reactNative","AsyncStorage","Wi","Xi","Zi","errorCode","onupgradeneeded","createObjectStore","keyPath","onsuccess","$i","aj","objectStore","bj","transaction","cj","dj","cancel","ej","fj","gj","hj","ij","jj","kj","sessionStorage","lj","Browser","mj","Node","nj","ReactNative","oj","rj","qj","sj","pj","Yi","uj","tj","vj","wj","xj","X","yj","getItem","zj","Aj","Bj","Cj","Dj","oldValue","Ej","Gj","Fj","Hj","Ij","Jj","Kj","Lj","ge","Nj","ibi","apn","appDisplayName","Pj","Mj","Qj","Oj","handleOpenURL","Ah","Rj","Tj","Sj","Uj","Vj","Wj","Xj","Yj","unknown","signInViaRedirect","linkViaRedirect","reauthViaRedirect","signInViaPopup","linkViaPopup","reauthViaPopup","Zj","Bi","ak","bk","ck","dk","gk","ik","hk","jk","kk","lk","mk","user","nk","fk","ok","pk","qk","rk","tk","sk","uk","vk","wk","refreshToken","xk","expiresIn","yk","expires_in","expirationTime","zk","lastSignInTime","creationTime","Ak","Bk","uid","displayName","photoURL","Ck","Dk","apiKey","appName","authDomain","Ek","Fk","Gk","U","R","Hk","V","Ik","Jk","Kk","Lk","start","Mk","Nk","Ok","Pk","emailVerified","isAnonymous","metadata","createdAt","lastLoginAt","providerData","Qk","Rk","Sk","Tk","Uk","Vk","Wk","Xk","Yk","Zk","wi","$k","providerUserInfo","rawId","photoUrl","bl","al","additionalUserInfo","operationType","cl","reload","dl","el","fl","Z","gl","hl","il","jl","stsTokenManager","redirectEventId","kl","ll","ml","nl","ol","ql","rl","sl","pl","tl","ul","vl","wl","xl","yl","zl","Al","logFramework","Bl","Cl","Dl","$","El","Fl","Gl","Hl","Il","currentUser","Kl","_lat","Jl","Ll","Ml","Nl","Ol","Pl","Ql","Element","Rl","Sl","App","Tl","Ul","Vl","verify","Wl","theme","Xl","Yl","hasChildNodes","Zl","$l","am","bm","cm","fm","hm","grecaptcha","Infinity","dm","render","gm","em","im","jm","km","lm","trim","some","$a","db","gb","hb","parseFloat","lb","compatMode","cellpadding","cellspacing","colspan","frameborder","maxlength","nonce","role","rowspan","usemap","valign","\"","\\","/","\b","\f","\n","\r","\t","\u000b","Mc","freeze","Oc","2","3","4","preventDefault","ud","timeStamp","msWriteProfilerMark","clear","de","ee","fe","xe","ye","ze","Ae","Ve","We","getResponse","response","mozResponseArrayBuffer","getResponseHeader","contentType","getAllResponseHeaders","eg","gg","abcd","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-cert-hash","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","lh","password","mh","PROVIDER_ID","qh","operation","rh","verificationId","verificationCode","recaptchaToken","unsubscribe","Content-Type","setApiKey","setToken","path","authType","bi","ci","di","deleteAttribute","requestType","ei","fi","hi","ri","newPassword","si","ti","ui","vi","xi","recaptchaSiteKey","yi","put","add","getAll","openCursor","NONE","ek","confirm","users","localId","passwordHash","languages","language","userLanguage","execute","firstChild","Persistence","LOCAL","SESSION","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","remove","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","child","childPathObj","childPieces","relativePath","outerPath","innerPath","outer","inner","comparePaths","right","leftKeys","rightKeys","cmp","equals","other","ValidationPath","errorPrefix_","parts_","byteLength_","checkValid_","pop","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","copy","reverseTraversal","min_","fixUp_","removeMin_","isRed_","moveRedLeft_","smallest","rotateRight_","moveRedRight_","rotateLeft_","colorFlip_","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_","listen","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","SyncPoint_1","Reference","repo","QueryParams","DEFAULT","getKey","getParent","parentPath","getRoot","databaseProp","database","objectToMerge","newObjectToMerge","transactionUpdate","applyLocally","promiseComplete","committed","TransactionResult","startTransaction","setPriority","nextPushId","thennablePushRef","pushRef","onDisconnect","OnDisconnect","Query","__referenceConstructor","SyncPoint","DataSnapshot","ref_","index_","exportVal","exists","childPathString","childPath","childRef","hasChildren","getRef","emptyChildrenSingleton","EmptyChildren","ImmutableTree","children","fromObject","tree","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","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","decodeQuery","queryString","results","startsWith","_a","segment","kv","RepoInfo_1","dataURL","parseURL","subdomain","domain","webSocketOnly","scheme","RepoInfo","port","colonInd","slashInd","questionMarkInd","queryParams","Constants_1","persistenceKey","internalHost","needsQueryParam","isCustomHost","isCacheableHost","isDemoHost","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","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","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","DataSnapshot_1","domStorage_","prefix_","prefixedName_","storedVal","cache_","PUSH_CHARS","lastPushTime","lastRandChars","duplicateTime","timeStampChars","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","ValidateInput","registerMessaging","factoryMethod","sw_controller","window_controller","namespaceExports","Messaging","errors__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","TOKEN_UNSUBSCRIBE_FAILED","TOKEN_UPDATE_FAILED","TOKEN_UPDATE_NO_TOKEN","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","INVALID_PUBLIC_VAPID_KEY","USE_PUBLIC_KEY_BEFORE_GET_TOKEN","PUBLIC_KEY_DECRYPTION_FAILED","ERROR_MAP","codes","db_interface_DBInterface","DBInterface","dbName","dbVersion","errorFactory_","DB_NAME_","dbVersion_","openDbPromise_","TRANSACTION_READ_WRITE","openDatabase","onDBUpgrade","closeDatabase","db_interface","array_buffer_to_base64","DB_VERSION","fcmToken","swScope","vapidKey","subscription","fcmSenderId","fcmPushSet","token_details_model_TokenDetailsModel","TokenDetailsModel","DB_NAME","createIndex","unique","validateInputs_","PushSubscription","getTokenDetailsFromToken","getTokenDetailsFromSWScope","scopeRequest","saveTokenDetails","details","p256dh","createTime","deleteToken","token_details_model","vapid_details_model___extends","vapid_details_model_DB_VERSION","vapid_details_model_VapidDetailsModel","VapidDetailsModel","getVapidFromSWScope","saveVapidDetails","deleteVapidDetails","vapid_details_model","DEFAULT_PUBLIC_VAPID_KEY","SUBSCRIPTION_DETAILS","userVisibleOnly","applicationServerKey","fcm_details","ENDPOINT","iid_model_IIDModel","IIDModel","senderId","publicVapidKey","fcmSubscribeBody","Headers","append","subscribeOptions","fetch","fcmTokenResponse","pushSet","updateToken","fcmUpdateBody","updateFetchRes","updateOptions","fetchResponse","fcmUnsubscribeBody","unsubscribeOptions","iid_model","SENDER_ID_OPTION_NAME","controller_interface_ControllerInterface","ControllerInterface","messagingSenderId_","tokenDetailsModel_","vapidDetailsModel_","iidModel_","currentPermission","getNotificationPermission_","notification_permission","swReg","getSWRegistration_","reg","scope","tokenDetails","manageExistingToken","getNewToken","isTokenStillValid","isValid","getPublicVapidKey_","publicKey","updatedToken","getPushSubscription_","pushSubscription","allDetails","iidTokenDetails","pushManager","getSubscription","requestPermission","useServiceWorker","usePublicVapidKey","b64PublicKey","optError","optCompleted","onTokenRefresh","setBackgroundMessageHandler","Notification","permission","getTokenDetailsModel","getVapidDetailsModel","getIIDModel","controller_interface","PARAMS","TYPE_OF_MSG","DATA","msgType","PUSH_MSG_RECEIVED","NOTIFICATION_CLICKED","createNewMsg","msgData","worker_page_message","TYPES_OF_MSG","default_sw","base64_to_array_buffer","base64String","padding","repeat","rawData","outputArray","window_controller___extends","window_controller_WindowController","WindowController","messageObserver_","tokenRefreshObserver_","onTokenRefresh_","registrationToUse_","manifestCheckPromise_","setupSWMessageListener_","isSupported_","manifestCheck_","manifestTag","querySelector","manifestContent","managePermissionResult","permissionPromise","ServiceWorkerRegistration","publicVapidKeyToUse_","parsedKey","waitForRegistrationToActivate_","serviceWorker","installing","waiting","state","stateChangeListener","browserErrorMessage","swRegistration","workerPageMessage","pushMessage","sw_controller___extends","sw_controller_SWController","SWController","onPush_","onSubChange_","onNotificationClick_","bgMessageHandler_","msgPayload","handleMsgPromise","hasVisibleClients_","hasVisibleClients","notification","sendMessageToWindowClients_","notificationDetails","getNotificationData_","notificationTitle_1","showNotification","waitUntil","promiseChain","stopImmediatePropagation","clickAction","getWindowClient_","windowClient","clients","openWindow","internalMsg","attemptToMessageClient_","notificationInformation","assign","URL","matchAll","includeUncontrolled","clientList","suitableClient","vapidKeyFromDatabase","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","size","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","total","bytesLeft","startByte","endByte","uploadCommand","X-Goog-Upload-Offset","progressCallback","async_async","argsToForward","canceled","cancelState","triggerCallback","triggeredCallback","callWithDelay","millis","timeoutId","hitTimeout","waitSeconds","waitMillis","stop","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","upload","removeUploadProgressListener","XhrIoPool","createXhrIo","Location","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","loaded","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_","config","_error","deleteApp","setMaxUploadRetryTime","setMaxOperationRetryTime","NetworkRequest","errorCallback","pendingXhr_","backoffId_","canceled_","appDelete_","url_","method_","headers_","body_","successCodes_","additionalRetryCodes_","errorCallback_","progressCallback_","timeout_","doTheRequest","backoffCallback","progressListener","progressEvent","lengthComputable","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.10.0\n * Build: rev-fc81427\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 = 57);\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 */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar assert_1 = __webpack_require__(28);\nexports.assert = assert_1.assert;\nexports.assertionError = assert_1.assertionError;\nvar crypt_1 = __webpack_require__(29);\nexports.base64 = crypt_1.base64;\nexports.base64Decode = crypt_1.base64Decode;\nexports.base64Encode = crypt_1.base64Encode;\nvar constants_1 = __webpack_require__(20);\nexports.CONSTANTS = constants_1.CONSTANTS;\nvar deepCopy_1 = __webpack_require__(65);\nexports.deepCopy = deepCopy_1.deepCopy;\nexports.deepExtend = deepCopy_1.deepExtend;\nexports.patchProperty = deepCopy_1.patchProperty;\nvar deferred_1 = __webpack_require__(66);\nexports.Deferred = deferred_1.Deferred;\nvar environment_1 = __webpack_require__(67);\nexports.getUA = environment_1.getUA;\nexports.isMobileCordova = environment_1.isMobileCordova;\nexports.isNodeSdk = environment_1.isNodeSdk;\nexports.isReactNative = environment_1.isReactNative;\nvar errors_1 = __webpack_require__(68);\nexports.ErrorFactory = errors_1.ErrorFactory;\nexports.FirebaseError = errors_1.FirebaseError;\nexports.patchCapture = errors_1.patchCapture;\nvar json_1 = __webpack_require__(30);\nexports.jsonEval = json_1.jsonEval;\nexports.stringify = json_1.stringify;\nvar jwt_1 = __webpack_require__(69);\nexports.decode = jwt_1.decode;\nexports.isAdmin = jwt_1.isAdmin;\nexports.issuedAtTime = jwt_1.issuedAtTime;\nexports.isValidFormat = jwt_1.isValidFormat;\nexports.isValidTimestamp = jwt_1.isValidTimestamp;\nvar obj_1 = __webpack_require__(31);\nexports.clone = obj_1.clone;\nexports.contains = obj_1.contains;\nexports.every = obj_1.every;\nexports.extend = obj_1.extend;\nexports.findKey = obj_1.findKey;\nexports.findValue = obj_1.findValue;\nexports.forEach = obj_1.forEach;\nexports.getAnyKey = obj_1.getAnyKey;\nexports.getCount = obj_1.getCount;\nexports.getValues = obj_1.getValues;\nexports.isEmpty = obj_1.isEmpty;\nexports.isNonNullObject = obj_1.isNonNullObject;\nexports.map = obj_1.map;\nexports.safeGet = obj_1.safeGet;\nvar query_1 = __webpack_require__(70);\nexports.querystring = query_1.querystring;\nexports.querystringDecode = query_1.querystringDecode;\nvar sha1_1 = __webpack_require__(71);\nexports.Sha1 = sha1_1.Sha1;\nvar subscribe_1 = __webpack_require__(73);\nexports.async = subscribe_1.async;\nexports.createSubscribe = subscribe_1.createSubscribe;\nvar validation_1 = __webpack_require__(74);\nexports.errorPrefix = validation_1.errorPrefix;\nexports.validateArgCount = validation_1.validateArgCount;\nexports.validateCallback = validation_1.validateCallback;\nexports.validateContextObject = validation_1.validateContextObject;\nexports.validateNamespace = validation_1.validateNamespace;\nvar utf8_1 = __webpack_require__(75);\nexports.stringLength = utf8_1.stringLength;\nexports.stringToByteArray = utf8_1.stringToByteArray;\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\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.10.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/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\n} catch(e) {\n\t// This works if the window reference is available\n\tif(typeof window === \"object\")\n\t\tg = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n/* 13 */,\n/* 14 */,\n/* 15 */,\n/* 16 */,\n/* 17 */,\n/* 18 */,\n/* 19 */,\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/* 27 */\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/* 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 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/* 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 });\nvar stringToByteArray = function (str) {\n // TODO(user): Use native implementations if/when available\n var out = [], p = 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c < 128) {\n out[p++] = c;\n }\n else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n }\n else if ((c & 0xfc00) == 0xd800 &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) == 0xdc00) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\n out[p++] = (c >> 18) | 240;\n out[p++] = ((c >> 12) & 63) | 128;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n else {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n }\n return out;\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 // TODO(user): Use native implementations if/when available\n var out = [], pos = 0, c = 0;\n while (pos < bytes.length) {\n var c1 = bytes[pos++];\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1);\n }\n else if (c1 > 191 && c1 < 224) {\n var c2 = bytes[pos++];\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\n }\n else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n var c2 = bytes[pos++];\n var c3 = bytes[pos++];\n var c4 = bytes[pos++];\n var u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\n 0x10000;\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\n }\n else {\n var c2 = bytes[pos++];\n var c3 = bytes[pos++];\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n }\n }\n return out.join('');\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/* 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/**\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/* 31 */\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/* 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/* 57 */\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__(58);\nmodule.exports = __webpack_require__(6).default;\n\n\n/***/ }),\n/* 58 */\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__(59);\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__(63);\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__(64);\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/* 59 */\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__(60);\n}\n\n//# sourceMappingURL=promise.js.map\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(12)))\n\n/***/ }),\n/* 60 */\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__(61).setImmediate))\n\n/***/ }),\n/* 61 */\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__(62);\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;\n\n\n/***/ }),\n/* 62 */\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/* 54 */\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__(25);\nvar Constants_1 = __webpack_require__(14);\nvar util_3 = __webpack_require__(0);\nvar storage_1 = __webpack_require__(13);\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__(27)))\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 });\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/* 56 */\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__(24);\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/* 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/* 78 */\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__(79);\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 app_1 = __webpack_require__(6);\nvar Database_1 = __webpack_require__(32);\nexports.Database = Database_1.Database;\nvar Query_1 = __webpack_require__(36);\nexports.Query = Query_1.Query;\nvar Reference_1 = __webpack_require__(21);\nexports.Reference = Reference_1.Reference;\nvar util_1 = __webpack_require__(1);\nexports.enableLogging = util_1.enableLogging;\nvar RepoManager_1 = __webpack_require__(26);\nvar INTERNAL = __webpack_require__(111);\nvar TEST_ACCESS = __webpack_require__(112);\nvar util_2 = __webpack_require__(0);\nvar ServerValue = Database_1.Database.ServerValue;\nexports.ServerValue = ServerValue;\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: 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);\nvar DataSnapshot_1 = __webpack_require__(22);\nexports.DataSnapshot = DataSnapshot_1.DataSnapshot;\nvar onDisconnect_1 = __webpack_require__(35);\nexports.OnDisconnect = onDisconnect_1.OnDisconnect;\n\n//# sourceMappingURL=index.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 * 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/* 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);\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/* 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__(22);\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__(23);\nvar ListenComplete_1 = __webpack_require__(88);\nvar Merge_1 = __webpack_require__(89);\nvar Operation_1 = __webpack_require__(8);\nvar Overwrite_1 = __webpack_require__(46);\nvar Path_1 = __webpack_require__(2);\nvar SyncPoint_1 = __webpack_require__(47);\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__(46);\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__(24);\nvar ViewProcessor_1 = __webpack_require__(91);\nvar ChildrenNode_1 = __webpack_require__(4);\nvar CacheNode_1 = __webpack_require__(19);\nvar ViewCache_1 = __webpack_require__(48);\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__(23);\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__(19);\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__(23);\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__(49);\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__(51);\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__(51);\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__(53);\nvar WebSocketConnection_1 = __webpack_require__(54);\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__(55);\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__(38);\nvar PathIndex_1 = __webpack_require__(42);\nvar IndexedFilter_1 = __webpack_require__(24);\nvar LimitedFilter_1 = __webpack_require__(108);\nvar RangedFilter_1 = __webpack_require__(56);\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__(56);\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__(22);\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__(43);\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__(18);\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__(54);\nvar BrowserPollConnection_1 = __webpack_require__(53);\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__(34);\nvar PersistentConnection_1 = __webpack_require__(50);\nvar RepoManager_1 = __webpack_require__(26);\nvar Connection_1 = __webpack_require__(52);\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],[78]);\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 parsedUrl.repoInfo.host.split(':')[0] !== 'localhost') ||\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 = 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 });\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 = 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 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 = 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 });\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.updateImmediateChild(childName, newChildNode).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 = 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 });\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 = 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 });\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 = 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 */\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 = 19\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 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 = 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 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 = 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 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 = 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 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 = 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(\"@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.initializeApp().');\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 = 26\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 = 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 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 * @param {!string} queryString\n * @return {!{[key:string]:string}} key value hash\n */\nfunction decodeQuery(queryString) {\n var results = {};\n if (queryString.startsWith('?')) {\n queryString = queryString.substring(1);\n }\n for (var _i = 0, _a = queryString.split('&'); _i < _a.length; _i++) {\n var segment = _a[_i];\n var kv = segment.split('=');\n if (kv.length === 2) {\n results[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]);\n }\n else {\n util_1.warn('Invalid query string segment: ' + segment);\n }\n }\n return results;\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 parsedUrl.domain !== 'localhost') {\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, path, and query string.\n var slashInd = dataURL.indexOf('/');\n if (slashInd === -1) {\n slashInd = dataURL.length;\n }\n var questionMarkInd = dataURL.indexOf('?');\n if (questionMarkInd === -1) {\n questionMarkInd = dataURL.length;\n }\n host = dataURL.substring(0, Math.min(slashInd, questionMarkInd));\n if (slashInd < questionMarkInd) {\n // For pathString, questionMarkInd will always come after slashInd\n pathString = decodePath(dataURL.substring(slashInd, questionMarkInd));\n }\n var queryParams = decodeQuery(dataURL.substring(Math.min(dataURL.length, questionMarkInd)));\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 else {\n colonInd = dataURL.length;\n }\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 else if (parts[0].slice(0, colonInd).toLowerCase() === 'localhost') {\n domain = 'localhost';\n }\n // Support `ns` query param if subdomain not already set\n if (subdomain === '' && 'ns' in queryParams) {\n subdomain = queryParams['ns'];\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 = 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 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 || this.isCustomHost();\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 = 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 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 = 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 */\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 = 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 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 = 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 */\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 = 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(\"@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 = 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 */\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 = 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(\"../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 = 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 */\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 = 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 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 = 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 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 = 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 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 = 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 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 = 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 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 = 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 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 = 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 */\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 = 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 */\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 = 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(\"@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 = 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 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 = 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 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 = 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 });\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 = 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 });\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 = 55\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 = 56\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 = 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 app_1 = require(\"@firebase/app\");\nvar Database_1 = require(\"./src/api/Database\");\nexports.Database = Database_1.Database;\nvar Query_1 = require(\"./src/api/Query\");\nexports.Query = Query_1.Query;\nvar Reference_1 = require(\"./src/api/Reference\");\nexports.Reference = Reference_1.Reference;\nvar util_1 = require(\"./src/core/util/util\");\nexports.enableLogging = util_1.enableLogging;\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\");\nvar ServerValue = Database_1.Database.ServerValue;\nexports.ServerValue = ServerValue;\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: 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);\nvar DataSnapshot_1 = require(\"./src/api/DataSnapshot\");\nexports.DataSnapshot = DataSnapshot_1.DataSnapshot;\nvar onDisconnect_1 = require(\"./src/api/onDisconnect\");\nexports.OnDisconnect = onDisconnect_1.OnDisconnect;\n\n//# sourceMappingURL=index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/index.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 * 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 = 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\");\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 = 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.10.0\n * Build: rev-fc81427\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 TOKEN_UNSUBSCRIBE_FAILED: 'token-unsubscribe-failed',\n TOKEN_UPDATE_FAILED: 'token-update-failed',\n TOKEN_UPDATE_NO_TOKEN: 'token-update-no-token',\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 INVALID_PUBLIC_VAPID_KEY: 'invalid-public-vapid-key',\n USE_PUBLIC_KEY_BEFORE_GET_TOKEN: 'use-public-key-before-get-token',\n PUBLIC_KEY_DECRYPTION_FAILED: 'public-vapid-key-decryption-failed'\n};\nvar ERROR_MAP = (errors__a = {},\n errors__a[CODES.AVAILABLE_IN_WINDOW] = 'This method is available in a Window context.',\n errors__a[CODES.AVAILABLE_IN_SW] = 'This method is available in a service worker ' + 'context.',\n errors__a[CODES.SHOULD_BE_INHERITED] = 'This method should be overriden by ' + 'extended classes.',\n errors__a[CODES.BAD_SENDER_ID] = \"Please ensure that 'messagingSenderId' is set \" +\n 'correctly in the options passed into firebase.initializeApp().',\n errors__a[CODES.PERMISSION_DEFAULT] = 'The required permissions were not granted and ' + 'dismissed instead.',\n errors__a[CODES.PERMISSION_BLOCKED] = 'The required permissions were not granted and ' + 'blocked instead.',\n errors__a[CODES.UNSUPPORTED_BROWSER] = \"This browser doesn't support the API's \" +\n 'required to use the firebase SDK.',\n errors__a[CODES.NOTIFICATIONS_BLOCKED] = 'Notifications have been blocked.',\n errors__a[CODES.FAILED_DEFAULT_REGISTRATION] = 'We are unable to register the ' +\n 'default service worker. {$browserErrorMessage}',\n errors__a[CODES.SW_REGISTRATION_EXPECTED] = 'A service worker registration was the ' + 'expected input.',\n errors__a[CODES.GET_SUBSCRIPTION_FAILED] = 'There was an error when trying to get ' +\n 'any existing Push Subscriptions.',\n errors__a[CODES.INVALID_SAVED_TOKEN] = 'Unable to access details of the saved token.',\n errors__a[CODES.SW_REG_REDUNDANT] = 'The service worker being used for push was made ' + 'redundant.',\n errors__a[CODES.TOKEN_SUBSCRIBE_FAILED] = 'A problem occured while subscribing the ' + 'user to FCM: {$message}',\n errors__a[CODES.TOKEN_SUBSCRIBE_NO_TOKEN] = 'FCM returned no token when subscribing ' + 'the user to push.',\n errors__a[CODES.TOKEN_SUBSCRIBE_NO_PUSH_SET] = 'FCM returned an invalid response ' + 'when getting an FCM token.',\n errors__a[CODES.TOKEN_UNSUBSCRIBE_FAILED] = 'A problem occured while unsubscribing the ' + 'user from FCM: {$message}',\n errors__a[CODES.TOKEN_UPDATE_FAILED] = 'A problem occured while updating the ' + 'user from FCM: {$message}',\n errors__a[CODES.TOKEN_UPDATE_NO_TOKEN] = 'FCM returned no token when updating ' + 'the user to push.',\n errors__a[CODES.USE_SW_BEFORE_GET_TOKEN] = 'You must call useServiceWorker() before ' +\n 'calling getToken() to ensure your service worker is used.',\n errors__a[CODES.INVALID_DELETE_TOKEN] = 'You must pass a valid token into ' +\n 'deleteToken(), i.e. the token from getToken().',\n errors__a[CODES.DELETE_TOKEN_NOT_FOUND] = 'The deletion attempt for token could not ' +\n 'be performed as the token was not found.',\n errors__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 errors__a[CODES.BG_HANDLER_FUNCTION_EXPECTED] = 'The input to ' + 'setBackgroundMessageHandler() must be a function.',\n errors__a[CODES.NO_WINDOW_CLIENT_TO_MSG] = 'An attempt was made to message a ' + 'non-existant window client.',\n errors__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 errors__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 errors__a[CODES.FAILED_TO_DELETE_TOKEN] = 'Unable to delete the currently saved token.',\n errors__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 errors__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 errors__a[CODES.BAD_SCOPE] = 'The service worker scope must be a string with at ' +\n 'least one character.',\n errors__a[CODES.BAD_VAPID_KEY] = 'The public VAPID key is not a Uint8Array with 65 bytes.',\n errors__a[CODES.BAD_SUBSCRIPTION] = 'The subscription must be a valid ' + 'PushSubscription.',\n errors__a[CODES.BAD_TOKEN] = 'The FCM Token used for storage / lookup was not ' +\n 'a valid token string.',\n errors__a[CODES.BAD_PUSH_SET] = 'The FCM push set used for storage / lookup was not ' +\n 'not a valid push set string.',\n errors__a[CODES.FAILED_DELETE_VAPID_KEY] = 'The VAPID key could not be deleted.',\n errors__a[CODES.INVALID_PUBLIC_VAPID_KEY] = 'The public VAPID key must be a string.',\n errors__a[CODES.PUBLIC_KEY_DECRYPTION_FAILED] = 'The public VAPID key did not equal ' + '65 bytes when decrypted.',\n errors__a);\n/* harmony default export */ var errors = ({\n codes: CODES,\n map: ERROR_MAP\n});\nvar errors__a;\n\n//# sourceMappingURL=errors.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/db-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\nvar db_interface_DBInterface = /** @class */ (function () {\n /**\n * @param {string} dbName\n * @param {number} dbVersion\n */\n function DBInterface(dbName, dbVersion) {\n this.errorFactory_ = new cjs[\"ErrorFactory\"]('messaging', 'Messaging', errors.map);\n this.DB_NAME_ = dbName;\n this.dbVersion_ = dbVersion;\n this.openDbPromise_ = null;\n this.TRANSACTION_READ_WRITE = 'readwrite';\n }\n /**\n * Get the indexedDB as a promsie.\n * @protected\n * @return {!Promise} The IndexedDB database\n */\n DBInterface.prototype.openDatabase = function () {\n var _this = this;\n if (this.openDbPromise_) {\n return this.openDbPromise_;\n }\n this.openDbPromise_ = new Promise(function (resolve, reject) {\n var request = indexedDB.open(_this.DB_NAME_, _this.dbVersion_);\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 try {\n var db = event.target.result;\n _this.onDBUpgrade(db);\n }\n catch (err) {\n // close the database as it can't be used.\n db.close();\n reject(err);\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 DBInterface.prototype.closeDatabase = function () {\n var _this = this;\n return Promise.resolve().then(function () {\n if (_this.openDbPromise_) {\n return _this.openDbPromise_.then(function (db) {\n db.close();\n _this.openDbPromise_ = null;\n });\n }\n });\n };\n /**\n * @protected\n * @param {!IDBDatabase} db\n */\n DBInterface.prototype.onDBUpgrade = function (db) {\n throw this.errorFactory_.create(errors.codes.SHOULD_BE_INHERITED);\n };\n return DBInterface;\n}());\n/* harmony default export */ var db_interface = (db_interface_DBInterface);\n\n//# sourceMappingURL=db-interface.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/token-details-model.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\nvar FCM_TOKEN_OBJ_STORE = 'fcm_token_object_Store';\nvar DB_VERSION = 1;\n/** @record */\nfunction ValidateInput() { }\n/** @type {string|undefined} */\nValidateInput.prototype.fcmToken;\n/** @type {string|undefined} */\nValidateInput.prototype.swScope;\n/** @type {string|undefined} */\nValidateInput.prototype.vapidKey;\n/** @type {PushSubscription|undefined} */\nValidateInput.prototype.subscription;\n/** @type {string|undefined} */\nValidateInput.prototype.fcmSenderId;\n/** @type {string|undefined} */\nValidateInput.prototype.fcmPushSet;\nvar token_details_model_TokenDetailsModel = /** @class */ (function (_super) {\n __extends(TokenDetailsModel, _super);\n function TokenDetailsModel() {\n return _super.call(this, TokenDetailsModel.DB_NAME, DB_VERSION) || this;\n }\n Object.defineProperty(TokenDetailsModel, \"DB_NAME\", {\n get: function () {\n return 'fcm_token_details_db';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @override\n */\n TokenDetailsModel.prototype.onDBUpgrade = function (db) {\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 * This method takes an object and will check for known arguments and\n * validate the input.\n * @private\n * @param {!ValidateInput} input\n * @return {!Promise} Returns promise that resolves if input is valid,\n * rejects otherwise.\n */\n TokenDetailsModel.prototype.validateInputs_ = function (input) {\n if (input.fcmToken) {\n if (typeof input.fcmToken !== 'string' || input.fcmToken.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_TOKEN));\n }\n }\n if (input.swScope) {\n if (typeof input.swScope !== 'string' || input.swScope.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SCOPE));\n }\n }\n if (input.vapidKey) {\n if (!(input.vapidKey instanceof Uint8Array) ||\n input.vapidKey.length !== 65) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_VAPID_KEY));\n }\n }\n if (input.subscription) {\n if (!(input.subscription instanceof PushSubscription)) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SUBSCRIPTION));\n }\n }\n if (input.fcmSenderId) {\n if (typeof input.fcmSenderId !== 'string' ||\n input.fcmSenderId.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SENDER_ID));\n }\n }\n if (input.fcmPushSet) {\n if (typeof input.fcmPushSet !== 'string' ||\n input.fcmPushSet.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_PUSH_SET));\n }\n }\n return Promise.resolve();\n };\n /**\n * Given a token, this method will look up the details in indexedDB.\n * @param {string} fcmToken\n * @return {Promise} The details associated with that token.\n */\n TokenDetailsModel.prototype.getTokenDetailsFromToken = function (fcmToken) {\n var _this = this;\n if (!fcmToken) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_TOKEN));\n }\n return this.validateInputs_({ fcmToken: fcmToken })\n .then(function () {\n return _this.openDatabase();\n })\n .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 var result = event.target.result\n ? event.target.result\n : null;\n resolve(result);\n };\n });\n });\n };\n /**\n * Given a service worker scope, this method will look up the details in\n * indexedDB.\n * @public\n * @param {string} swScope\n * @return {Promise} The details associated with that token.\n */\n TokenDetailsModel.prototype.getTokenDetailsFromSWScope = function (swScope) {\n var _this = this;\n if (!swScope) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SCOPE));\n }\n return this.validateInputs_({ swScope: swScope })\n .then(function () {\n return _this.openDatabase();\n })\n .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 var result = event.target.result\n ? event.target.result\n : null;\n resolve(result);\n };\n });\n });\n };\n /**\n * Save the details for the fcm token for re-use at a later date.\n * @param {{swScope: !string, vapidKey: !string,\n * subscription: !PushSubscription, fcmSenderId: !string, fcmToken: !string,\n * fcmPushSet: !string}} input A plain js object containing args to save.\n * @return {Promise}\n */\n TokenDetailsModel.prototype.saveTokenDetails = function (_a) {\n var _this = this;\n var swScope = _a.swScope, vapidKey = _a.vapidKey, subscription = _a.subscription, fcmSenderId = _a.fcmSenderId, fcmToken = _a.fcmToken, fcmPushSet = _a.fcmPushSet;\n if (!swScope) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SCOPE));\n }\n if (!vapidKey) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_VAPID_KEY));\n }\n if (!subscription) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SUBSCRIPTION));\n }\n if (!fcmSenderId) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SENDER_ID));\n }\n if (!fcmToken) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_TOKEN));\n }\n if (!fcmPushSet) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_PUSH_SET));\n }\n return this.validateInputs_({\n swScope: swScope,\n vapidKey: vapidKey,\n subscription: subscription,\n fcmSenderId: fcmSenderId,\n fcmToken: fcmToken,\n fcmPushSet: fcmPushSet\n })\n .then(function () {\n return _this.openDatabase();\n })\n .then(function (db) {\n /**\n * @dict\n */\n var details = {\n swScope: swScope,\n vapidKey: array_buffer_to_base64(vapidKey),\n endpoint: subscription.endpoint,\n auth: array_buffer_to_base64(subscription['getKey']('auth')),\n p256dh: array_buffer_to_base64(subscription['getKey']('p256dh')),\n fcmSenderId: fcmSenderId,\n fcmToken: fcmToken,\n fcmPushSet: fcmPushSet,\n createTime: Date.now()\n };\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\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 * 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 * @return {Promise} Resolves once the FCM token details have been\n * deleted and returns the deleted details.\n */\n TokenDetailsModel.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], _this.TRANSACTION_READ_WRITE);\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 TokenDetailsModel;\n}(db_interface));\n/* harmony default export */ var token_details_model = (token_details_model_TokenDetailsModel);\n\n//# sourceMappingURL=token-details-model.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/vapid-details-model.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 vapid_details_model___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\nvar FCM_VAPID_OBJ_STORE = 'fcm_vapid_object_Store';\nvar vapid_details_model_DB_VERSION = 1;\nvar UNCOMPRESSED_PUBLIC_KEY_SIZE = 65;\nvar vapid_details_model_VapidDetailsModel = /** @class */ (function (_super) {\n vapid_details_model___extends(VapidDetailsModel, _super);\n function VapidDetailsModel() {\n return _super.call(this, VapidDetailsModel.DB_NAME, vapid_details_model_DB_VERSION) || this;\n }\n Object.defineProperty(VapidDetailsModel, \"DB_NAME\", {\n get: function () {\n return 'fcm_vapid_details_db';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @override\n * @param {IDBDatabase} db\n */\n VapidDetailsModel.prototype.onDBUpgrade = function (db) {\n db.createObjectStore(FCM_VAPID_OBJ_STORE, {\n keyPath: 'swScope'\n });\n };\n /**\n * Given a service worker scope, this method will look up the vapid key\n * in indexedDB.\n */\n VapidDetailsModel.prototype.getVapidFromSWScope = function (swScope) {\n if (typeof swScope !== 'string' || swScope.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SCOPE));\n }\n return this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_VAPID_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_VAPID_OBJ_STORE);\n var scopeRequest = objectStore.get(swScope);\n scopeRequest.onerror = function () {\n reject(scopeRequest.error);\n };\n scopeRequest.onsuccess = function () {\n var result = scopeRequest.result;\n var vapidKey = null;\n if (result) {\n vapidKey = result.vapidKey;\n }\n resolve(vapidKey);\n };\n });\n });\n };\n /**\n * Save a vapid key against a swScope for later date.\n */\n VapidDetailsModel.prototype.saveVapidDetails = function (swScope, vapidKey) {\n var _this = this;\n if (typeof swScope !== 'string' || swScope.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SCOPE));\n }\n if (vapidKey === null || vapidKey.length !== UNCOMPRESSED_PUBLIC_KEY_SIZE) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_VAPID_KEY));\n }\n var details = {\n swScope: swScope,\n vapidKey: vapidKey\n };\n return this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_VAPID_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\n var objectStore = transaction.objectStore(FCM_VAPID_OBJ_STORE);\n var request = objectStore.put(details);\n request.onerror = function () {\n reject(request.error);\n };\n request.onsuccess = function () {\n resolve();\n };\n });\n });\n };\n /**\n * This method deletes details of the current FCM VAPID key for a SW scope.\n * Resolves once the scope/vapid details have been deleted and returns the\n * deleted vapid key.\n */\n VapidDetailsModel.prototype.deleteVapidDetails = function (swScope) {\n var _this = this;\n return this.getVapidFromSWScope(swScope).then(function (vapidKey) {\n if (!vapidKey) {\n throw _this.errorFactory_.create(errors.codes.DELETE_SCOPE_NOT_FOUND);\n }\n return _this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_VAPID_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\n var objectStore = transaction.objectStore(FCM_VAPID_OBJ_STORE);\n var request = objectStore.delete(swScope);\n request.onerror = function () {\n reject(request.error);\n };\n request.onsuccess = function () {\n if (request.result === 0) {\n reject(_this.errorFactory_.create(errors.codes.FAILED_DELETE_VAPID_KEY));\n return;\n }\n resolve(vapidKey);\n };\n });\n });\n });\n };\n return VapidDetailsModel;\n}(db_interface));\n/* harmony default export */ var vapid_details_model = (vapid_details_model_VapidDetailsModel);\n\n//# sourceMappingURL=vapid-details-model.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/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 DEFAULT_PUBLIC_VAPID_KEY = new Uint8Array([\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: DEFAULT_PUBLIC_VAPID_KEY\n};\n/* harmony default export */ var fcm_details = ({\n DEFAULT_PUBLIC_VAPID_KEY: DEFAULT_PUBLIC_VAPID_KEY,\n SUBSCRIPTION_DETAILS: SUBSCRIPTION_DETAILS,\n ENDPOINT: 'https://fcm.googleapis.com'\n // ENDPOINT: 'https://jmt17.google.com'\n});\n\n//# sourceMappingURL=fcm-details.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/iid-model.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 iid_model_IIDModel = /** @class */ (function () {\n function IIDModel() {\n this.errorFactory_ = new cjs[\"ErrorFactory\"]('messaging', 'Messaging', errors.map);\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 {Uint8Array} publicVapidKey The public VAPID key.\n * @return {Promise} Returns the FCM token to be used in place\n * of the PushSubscription.\n */\n IIDModel.prototype.getToken = function (senderId, subscription, publicVapidKey) {\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 (publicVapidKey !== fcm_details.DEFAULT_PUBLIC_VAPID_KEY) {\n var applicationPubKey = array_buffer_to_base64(publicVapidKey);\n fcmSubscribeBody += \"&application_pub_key=\" + applicationPubKey;\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 .catch(function () {\n throw _this.errorFactory_.create(errors.codes.TOKEN_SUBSCRIBE_FAILED);\n })\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 * Update the underlying token details for fcmToken.\n */\n IIDModel.prototype.updateToken = function (senderId, fcmToken, fcmPushSet, subscription, publicVapidKey) {\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 fcmUpdateBody = \"push_set=\" + fcmPushSet + \"&\" +\n (\"token=\" + fcmToken + \"&\") +\n (\"authorized_entity=\" + senderId + \"&\") +\n (\"endpoint=\" + subscription.endpoint + \"&\") +\n (\"encryption_key=\" + p256dh + \"&\") +\n (\"encryption_auth=\" + auth);\n if (publicVapidKey !== fcm_details.DEFAULT_PUBLIC_VAPID_KEY) {\n var applicationPubKey = array_buffer_to_base64(publicVapidKey);\n fcmUpdateBody += \"&application_pub_key=\" + applicationPubKey;\n }\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var updateOptions = {\n method: 'POST',\n headers: headers,\n body: fcmUpdateBody\n };\n var updateFetchRes;\n return fetch(fcm_details.ENDPOINT + '/fcm/connect/subscribe', updateOptions)\n .then(function (fetchResponse) {\n updateFetchRes = fetchResponse;\n return fetchResponse.json();\n })\n .catch(function () {\n throw _this.errorFactory_.create(errors.codes.TOKEN_UPDATE_FAILED);\n })\n .then(function (fcmTokenResponse) {\n if (!updateFetchRes.ok) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(errors.codes.TOKEN_UPDATE_FAILED, {\n message: message\n });\n }\n if (!fcmTokenResponse['token']) {\n throw _this.errorFactory_.create(errors.codes.TOKEN_UPDATE_NO_TOKEN);\n }\n return fcmTokenResponse['token'];\n });\n };\n /**\n * Given a fcmToken, pushSet and messagingSenderId, delete an FCM token.\n */\n IIDModel.prototype.deleteToken = function (senderId, fcmToken, fcmPushSet) {\n var _this = this;\n var fcmUnsubscribeBody = \"authorized_entity=\" + senderId + \"&\" +\n (\"token=\" + fcmToken + \"&\") +\n (\"pushSet=\" + fcmPushSet);\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var unsubscribeOptions = {\n method: 'POST',\n headers: headers,\n body: fcmUnsubscribeBody\n };\n return fetch(fcm_details.ENDPOINT + '/fcm/connect/unsubscribe', unsubscribeOptions).then(function (fetchResponse) {\n if (!fetchResponse.ok) {\n return fetchResponse.json().then(function (fcmTokenResponse) {\n if (fcmTokenResponse['error']) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(errors.codes.TOKEN_UNSUBSCRIBE_FAILED, {\n message: message\n });\n }\n }, function (err) {\n throw _this.errorFactory_.create(errors.codes.TOKEN_UNSUBSCRIBE_FAILED);\n });\n }\n });\n };\n return IIDModel;\n}());\n/* harmony default export */ var iid_model = (iid_model_IIDModel);\n\n//# sourceMappingURL=iid-model.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\n\n\n\nvar SENDER_ID_OPTION_NAME = 'messagingSenderId';\n// Database cache should be invalidated once a week.\nvar TOKEN_EXPIRATION_MILLIS = 7 * 24 * 60 * 60 * 1000; // 7 days\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.tokenDetailsModel_ = new token_details_model();\n this.vapidDetailsModel_ = new vapid_details_model();\n this.iidModel_ = new iid_model();\n this.app = app;\n this.INTERNAL = {};\n this.INTERNAL.delete = function () { return _this.delete(); };\n }\n /**\n * @export\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 var swReg;\n return this.getSWRegistration_()\n .then(function (reg) {\n swReg = reg;\n return _this.tokenDetailsModel_.getTokenDetailsFromSWScope(swReg.scope);\n })\n .then(function (tokenDetails) {\n if (tokenDetails) {\n return _this.manageExistingToken(tokenDetails, swReg);\n }\n return _this.getNewToken(swReg);\n });\n };\n /**\n * manageExistingToken is triggered if there's an existing FCM token in the\n * database and it can take 3 different actions:\n * 1) Retrieve the existing FCM token from the database.\n * 2) If VAPID details have changed: Delete the existing token and create a\n * new one with the new VAPID key.\n * 3) If the database cache is invalidated: Send a request to FCM to update\n * the token, and to check if the token is still valid on FCM-side.\n */\n ControllerInterface.prototype.manageExistingToken = function (tokenDetails, swReg) {\n var _this = this;\n return this.isTokenStillValid(tokenDetails).then(function (isValid) {\n if (isValid) {\n var now = Date.now();\n if (now < tokenDetails['createTime'] + TOKEN_EXPIRATION_MILLIS) {\n return tokenDetails['fcmToken'];\n }\n else {\n return _this.updateToken(tokenDetails, swReg);\n }\n }\n else {\n // If the VAPID details are updated, delete the existing token,\n // and create a new one.\n return _this.deleteToken(tokenDetails['fcmToken']).then(function () {\n return _this.getNewToken(swReg);\n });\n }\n });\n };\n /*\n * Checks if the tokenDetails match the details provided in the clients.\n */\n ControllerInterface.prototype.isTokenStillValid = function (tokenDetails) {\n // TODO Validate rest of the details.\n return this.getPublicVapidKey_().then(function (publicKey) {\n if (array_buffer_to_base64(publicKey) !== tokenDetails['vapidKey']) {\n return false;\n }\n return true;\n });\n };\n ControllerInterface.prototype.updateToken = function (tokenDetails, swReg) {\n var _this = this;\n var publicVapidKey;\n var updatedToken;\n var subscription;\n return this.getPublicVapidKey_()\n .then(function (publicKey) {\n publicVapidKey = publicKey;\n return _this.getPushSubscription_(swReg, publicVapidKey);\n })\n .then(function (pushSubscription) {\n subscription = pushSubscription;\n return _this.iidModel_.updateToken(_this.messagingSenderId_, tokenDetails['fcmToken'], tokenDetails['fcmPushSet'], subscription, publicVapidKey);\n })\n .catch(function (err) {\n return _this.deleteToken(tokenDetails['fcmToken']).then(function () {\n throw err;\n });\n })\n .then(function (token) {\n updatedToken = token;\n var allDetails = {\n swScope: swReg.scope,\n vapidKey: publicVapidKey,\n subscription: subscription,\n fcmSenderId: _this.messagingSenderId_,\n fcmToken: updatedToken,\n fcmPushSet: tokenDetails['fcmPushSet']\n };\n return _this.tokenDetailsModel_.saveTokenDetails(allDetails);\n })\n .then(function () {\n return _this.vapidDetailsModel_.saveVapidDetails(swReg.scope, publicVapidKey);\n })\n .then(function () {\n return updatedToken;\n });\n };\n ControllerInterface.prototype.getNewToken = function (swReg) {\n var _this = this;\n var publicVapidKey;\n var subscription;\n var tokenDetails;\n return this.getPublicVapidKey_()\n .then(function (publicKey) {\n publicVapidKey = publicKey;\n return _this.getPushSubscription_(swReg, publicVapidKey);\n })\n .then(function (pushSubscription) {\n subscription = pushSubscription;\n return _this.iidModel_.getToken(_this.messagingSenderId_, subscription, publicVapidKey);\n })\n .then(function (iidTokenDetails) {\n tokenDetails = iidTokenDetails;\n var allDetails = {\n swScope: swReg.scope,\n vapidKey: publicVapidKey,\n subscription: subscription,\n fcmSenderId: _this.messagingSenderId_,\n fcmToken: tokenDetails['token'],\n fcmPushSet: tokenDetails['pushSet']\n };\n return _this.tokenDetailsModel_.saveTokenDetails(allDetails);\n })\n .then(function () {\n return _this.vapidDetailsModel_.saveVapidDetails(swReg.scope, publicVapidKey);\n })\n .then(function () {\n return tokenDetails['token'];\n });\n };\n /**\n * This method deletes tokens that the token manager looks after,\n * unsubscribes the token from FCM and then unregisters the push\n * subscription if it exists. It returns a promise that indicates\n * whether or not the unsubscribe request was processed successfully.\n * @export\n */\n ControllerInterface.prototype.deleteToken = function (token) {\n var _this = this;\n return this.tokenDetailsModel_\n .deleteToken(token)\n .then(function (details) {\n return _this.iidModel_.deleteToken(details['fcmSenderId'], details['fcmToken'], details['fcmPushSet']);\n })\n .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 ControllerInterface.prototype.getPublicVapidKey_ = 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 ControllerInterface.prototype.getPushSubscription_ = function (registration, publicVapidKey) {\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 {!string} b64PublicKey\n */\n ControllerInterface.prototype.usePublicVapidKey = function (b64PublicKey) {\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 Promise.all([\n this.tokenDetailsModel_.closeDatabase(),\n this.vapidDetailsModel_.closeDatabase()\n ]);\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 ControllerInterface.prototype.getTokenDetailsModel = function () {\n return this.tokenDetailsModel_;\n };\n ControllerInterface.prototype.getVapidDetailsModel = function () {\n return this.vapidDetailsModel_;\n };\n /**\n * @protected\n * @returns {IIDModel}\n */\n ControllerInterface.prototype.getIIDModel = function () {\n return this.iidModel_;\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/helpers/base64-to-array-buffer.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/* harmony default export */ var base64_to_array_buffer = (function (base64String) {\n var padding = '='.repeat((4 - base64String.length % 4) % 4);\n var base64 = (base64String + padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n var rawData = window.atob(base64);\n var outputArray = new Uint8Array(rawData.length);\n for (var i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n});;\n\n//# sourceMappingURL=base64-to-array-buffer.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 window_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\n\n\n\n\nvar window_controller_WindowController = /** @class */ (function (_super) {\n window_controller___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 _this.messageObserver_ = null;\n _this.onMessage_ = Object(cjs[\"createSubscribe\"])(function (observer) {\n _this.messageObserver_ = observer;\n });\n _this.tokenRefreshObserver_ = null;\n _this.onTokenRefresh_ = Object(cjs[\"createSubscribe\"])(function (observer) {\n _this.tokenRefreshObserver_ = observer;\n });\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(managePermissionResult);\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 * This method allows a developer to override the default vapid key\n * and instead use a custom VAPID public key.\n * @export\n * @param {!string} publicKey A URL safe base64 encoded string.\n */\n WindowController.prototype.usePublicVapidKey = function (publicKey) {\n if (typeof publicKey !== 'string') {\n throw this.errorFactory_.create(errors.codes.INVALID_PUBLIC_VAPID_KEY);\n }\n if (typeof this.publicVapidKeyToUse_ !== 'undefined') {\n throw this.errorFactory_.create(errors.codes.USE_PUBLIC_KEY_BEFORE_GET_TOKEN);\n }\n var parsedKey = base64_to_array_buffer(publicKey);\n if (parsedKey.length !== 65) {\n throw this.errorFactory_.create(errors.codes.PUBLIC_KEY_DECRYPTION_FAILED);\n }\n this.publicVapidKeyToUse_ = parsedKey;\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 will return the default VAPID key or the uint8array version of the public VAPID key\n * provided by the developer.\n * @private\n */\n WindowController.prototype.getPublicVapidKey_ = function () {\n if (this.publicVapidKeyToUse_) {\n return Promise.resolve(this.publicVapidKeyToUse_);\n }\n return Promise.resolve(fcm_details.DEFAULT_PUBLIC_VAPID_KEY);\n };\n /**\n * Gets a PushSubscription for the current user.\n * @private\n * @param {ServiceWorkerRegistration} registration\n * @return {Promise}\n */\n WindowController.prototype.getPushSubscription_ = function (swRegistration, publicVapidKey) {\n // Check for existing subscription first\n var subscription;\n var fcmTokenDetails;\n return swRegistration.pushManager.getSubscription().then(function (subscription) {\n if (subscription) {\n return subscription;\n }\n return swRegistration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: publicVapidKey\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 if (_this.messageObserver_) {\n _this.messageObserver_.next(pushMessage);\n }\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_1 = notificationDetails.title || '';\n return _this.getSWRegistration_().then(function (reg) {\n return reg.showNotification(notificationTitle_1, notificationDetails);\n });\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.getSWRegistration_()\n .then(function (registration) {\n return registration.pushManager\n .getSubscription()\n .then(function (subscription) {\n // TODO: Check if it's still valid\n // TODO: If not, then update token\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 var tokenDetailsModel = _this.getTokenDetailsModel();\n return tokenDetailsModel\n .getTokenDetailsFromSWScope(registration.scope)\n .then(function (tokenDetails) {\n if (!tokenDetails) {\n // This should rarely occure, but could if indexedDB\n // is corrupted or wiped\n throw err;\n }\n // Attempt to delete the token if we know it's bad\n return _this.deleteToken(tokenDetails['fcmToken']).then(function () {\n throw err;\n });\n });\n });\n })\n .catch(function (err) {\n throw _this.errorFactory_.create(errors.codes.UNABLE_TO_RESUBSCRIBE, {\n message: err\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 if (!msgPayload['notification']) {\n // Nothing to do.\n return;\n }\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.focus();\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, self.location).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, self.location).href;\n if (parsedClientUrl === parsedURL) {\n suitableClient = clientList[i];\n break;\n }\n }\n if (suitableClient) {\n return suitableClient;\n }\n return null;\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 // NOTE: This returns a promise in case this API is abstracted later on to\n // do additional work\n if (!client) {\n return Promise.reject(this.errorFactory_.create(errors.codes.NO_WINDOW_CLIENT_TO_MSG));\n }\n client.postMessage(message);\n return Promise.resolve();\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 /**\n * This will return the default VAPID key or the uint8array version of the\n * public VAPID key provided by the developer.\n */\n SWController.prototype.getPublicVapidKey_ = function () {\n var _this = this;\n return this.getSWRegistration_()\n .then(function (swReg) {\n return _this.getVapidDetailsModel().getVapidFromSWScope(swReg.scope);\n })\n .then(function (vapidKeyFromDatabase) {\n if (vapidKeyFromDatabase === null) {\n return fcm_details.DEFAULT_PUBLIC_VAPID_KEY;\n }\n return vapidKeyFromDatabase;\n });\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[\"firebase\"]);\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';\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 DBInterface from './db-interface';\nimport Errors from './errors';\nimport arrayBufferToBase64 from '../helpers/array-buffer-to-base64';\nvar FCM_TOKEN_OBJ_STORE = 'fcm_token_object_Store';\nvar DB_VERSION = 1;\n/** @record */\nfunction ValidateInput() { }\n/** @type {string|undefined} */\nValidateInput.prototype.fcmToken;\n/** @type {string|undefined} */\nValidateInput.prototype.swScope;\n/** @type {string|undefined} */\nValidateInput.prototype.vapidKey;\n/** @type {PushSubscription|undefined} */\nValidateInput.prototype.subscription;\n/** @type {string|undefined} */\nValidateInput.prototype.fcmSenderId;\n/** @type {string|undefined} */\nValidateInput.prototype.fcmPushSet;\nvar TokenDetailsModel = /** @class */ (function (_super) {\n __extends(TokenDetailsModel, _super);\n function TokenDetailsModel() {\n return _super.call(this, TokenDetailsModel.DB_NAME, DB_VERSION) || this;\n }\n Object.defineProperty(TokenDetailsModel, \"DB_NAME\", {\n get: function () {\n return 'fcm_token_details_db';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @override\n */\n TokenDetailsModel.prototype.onDBUpgrade = function (db) {\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 * This method takes an object and will check for known arguments and\n * validate the input.\n * @private\n * @param {!ValidateInput} input\n * @return {!Promise} Returns promise that resolves if input is valid,\n * rejects otherwise.\n */\n TokenDetailsModel.prototype.validateInputs_ = function (input) {\n if (input.fcmToken) {\n if (typeof input.fcmToken !== 'string' || input.fcmToken.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_TOKEN));\n }\n }\n if (input.swScope) {\n if (typeof input.swScope !== 'string' || input.swScope.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SCOPE));\n }\n }\n if (input.vapidKey) {\n if (!(input.vapidKey instanceof Uint8Array) ||\n input.vapidKey.length !== 65) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_VAPID_KEY));\n }\n }\n if (input.subscription) {\n if (!(input.subscription instanceof PushSubscription)) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SUBSCRIPTION));\n }\n }\n if (input.fcmSenderId) {\n if (typeof input.fcmSenderId !== 'string' ||\n input.fcmSenderId.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SENDER_ID));\n }\n }\n if (input.fcmPushSet) {\n if (typeof input.fcmPushSet !== 'string' ||\n input.fcmPushSet.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_PUSH_SET));\n }\n }\n return Promise.resolve();\n };\n /**\n * Given a token, this method will look up the details in indexedDB.\n * @param {string} fcmToken\n * @return {Promise} The details associated with that token.\n */\n TokenDetailsModel.prototype.getTokenDetailsFromToken = function (fcmToken) {\n var _this = this;\n if (!fcmToken) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_TOKEN));\n }\n return this.validateInputs_({ fcmToken: fcmToken })\n .then(function () {\n return _this.openDatabase();\n })\n .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 var result = event.target.result\n ? event.target.result\n : null;\n resolve(result);\n };\n });\n });\n };\n /**\n * Given a service worker scope, this method will look up the details in\n * indexedDB.\n * @public\n * @param {string} swScope\n * @return {Promise} The details associated with that token.\n */\n TokenDetailsModel.prototype.getTokenDetailsFromSWScope = function (swScope) {\n var _this = this;\n if (!swScope) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SCOPE));\n }\n return this.validateInputs_({ swScope: swScope })\n .then(function () {\n return _this.openDatabase();\n })\n .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 var result = event.target.result\n ? event.target.result\n : null;\n resolve(result);\n };\n });\n });\n };\n /**\n * Save the details for the fcm token for re-use at a later date.\n * @param {{swScope: !string, vapidKey: !string,\n * subscription: !PushSubscription, fcmSenderId: !string, fcmToken: !string,\n * fcmPushSet: !string}} input A plain js object containing args to save.\n * @return {Promise}\n */\n TokenDetailsModel.prototype.saveTokenDetails = function (_a) {\n var _this = this;\n var swScope = _a.swScope, vapidKey = _a.vapidKey, subscription = _a.subscription, fcmSenderId = _a.fcmSenderId, fcmToken = _a.fcmToken, fcmPushSet = _a.fcmPushSet;\n if (!swScope) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SCOPE));\n }\n if (!vapidKey) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_VAPID_KEY));\n }\n if (!subscription) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SUBSCRIPTION));\n }\n if (!fcmSenderId) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SENDER_ID));\n }\n if (!fcmToken) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_TOKEN));\n }\n if (!fcmPushSet) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_PUSH_SET));\n }\n return this.validateInputs_({\n swScope: swScope,\n vapidKey: vapidKey,\n subscription: subscription,\n fcmSenderId: fcmSenderId,\n fcmToken: fcmToken,\n fcmPushSet: fcmPushSet\n })\n .then(function () {\n return _this.openDatabase();\n })\n .then(function (db) {\n /**\n * @dict\n */\n var details = {\n swScope: swScope,\n vapidKey: arrayBufferToBase64(vapidKey),\n endpoint: subscription.endpoint,\n auth: arrayBufferToBase64(subscription['getKey']('auth')),\n p256dh: arrayBufferToBase64(subscription['getKey']('p256dh')),\n fcmSenderId: fcmSenderId,\n fcmToken: fcmToken,\n fcmPushSet: fcmPushSet,\n createTime: Date.now()\n };\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\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 * 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 * @return {Promise} Resolves once the FCM token details have been\n * deleted and returns the deleted details.\n */\n TokenDetailsModel.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], _this.TRANSACTION_READ_WRITE);\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 TokenDetailsModel;\n}(DBInterface));\nexport default TokenDetailsModel;\n\n//# sourceMappingURL=token-details-model.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/token-details-model.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 TOKEN_UNSUBSCRIBE_FAILED: 'token-unsubscribe-failed',\n TOKEN_UPDATE_FAILED: 'token-update-failed',\n TOKEN_UPDATE_NO_TOKEN: 'token-update-no-token',\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 INVALID_PUBLIC_VAPID_KEY: 'invalid-public-vapid-key',\n USE_PUBLIC_KEY_BEFORE_GET_TOKEN: 'use-public-key-before-get-token',\n PUBLIC_KEY_DECRYPTION_FAILED: 'public-vapid-key-decryption-failed'\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.TOKEN_UNSUBSCRIBE_FAILED] = 'A problem occured while unsubscribing the ' + 'user from FCM: {$message}',\n _a[CODES.TOKEN_UPDATE_FAILED] = 'A problem occured while updating the ' + 'user from FCM: {$message}',\n _a[CODES.TOKEN_UPDATE_NO_TOKEN] = 'FCM returned no token when updating ' + 'the user to push.',\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 is not a Uint8Array with 65 bytes.',\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[CODES.INVALID_PUBLIC_VAPID_KEY] = 'The public VAPID key must be a string.',\n _a[CODES.PUBLIC_KEY_DECRYPTION_FAILED] = 'The public VAPID key did not equal ' + '65 bytes when decrypted.',\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';\nimport { ErrorFactory } from '@firebase/util';\nimport Errors from './errors';\nvar DBInterface = /** @class */ (function () {\n /**\n * @param {string} dbName\n * @param {number} dbVersion\n */\n function DBInterface(dbName, dbVersion) {\n this.errorFactory_ = new ErrorFactory('messaging', 'Messaging', Errors.map);\n this.DB_NAME_ = dbName;\n this.dbVersion_ = dbVersion;\n this.openDbPromise_ = null;\n this.TRANSACTION_READ_WRITE = 'readwrite';\n }\n /**\n * Get the indexedDB as a promsie.\n * @protected\n * @return {!Promise} The IndexedDB database\n */\n DBInterface.prototype.openDatabase = function () {\n var _this = this;\n if (this.openDbPromise_) {\n return this.openDbPromise_;\n }\n this.openDbPromise_ = new Promise(function (resolve, reject) {\n var request = indexedDB.open(_this.DB_NAME_, _this.dbVersion_);\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 try {\n var db = event.target.result;\n _this.onDBUpgrade(db);\n }\n catch (err) {\n // close the database as it can't be used.\n db.close();\n reject(err);\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 DBInterface.prototype.closeDatabase = function () {\n var _this = this;\n return Promise.resolve().then(function () {\n if (_this.openDbPromise_) {\n return _this.openDbPromise_.then(function (db) {\n db.close();\n _this.openDbPromise_ = null;\n });\n }\n });\n };\n /**\n * @protected\n * @param {!IDBDatabase} db\n */\n DBInterface.prototype.onDBUpgrade = function (db) {\n throw this.errorFactory_.create(Errors.codes.SHOULD_BE_INHERITED);\n };\n return DBInterface;\n}());\nexport default DBInterface;\n\n//# sourceMappingURL=db-interface.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/db-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';\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 DBInterface from './db-interface';\nimport Errors from './errors';\nvar FCM_VAPID_OBJ_STORE = 'fcm_vapid_object_Store';\nvar DB_VERSION = 1;\nvar UNCOMPRESSED_PUBLIC_KEY_SIZE = 65;\nvar VapidDetailsModel = /** @class */ (function (_super) {\n __extends(VapidDetailsModel, _super);\n function VapidDetailsModel() {\n return _super.call(this, VapidDetailsModel.DB_NAME, DB_VERSION) || this;\n }\n Object.defineProperty(VapidDetailsModel, \"DB_NAME\", {\n get: function () {\n return 'fcm_vapid_details_db';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @override\n * @param {IDBDatabase} db\n */\n VapidDetailsModel.prototype.onDBUpgrade = function (db) {\n db.createObjectStore(FCM_VAPID_OBJ_STORE, {\n keyPath: 'swScope'\n });\n };\n /**\n * Given a service worker scope, this method will look up the vapid key\n * in indexedDB.\n */\n VapidDetailsModel.prototype.getVapidFromSWScope = function (swScope) {\n if (typeof swScope !== 'string' || swScope.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SCOPE));\n }\n return this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_VAPID_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_VAPID_OBJ_STORE);\n var scopeRequest = objectStore.get(swScope);\n scopeRequest.onerror = function () {\n reject(scopeRequest.error);\n };\n scopeRequest.onsuccess = function () {\n var result = scopeRequest.result;\n var vapidKey = null;\n if (result) {\n vapidKey = result.vapidKey;\n }\n resolve(vapidKey);\n };\n });\n });\n };\n /**\n * Save a vapid key against a swScope for later date.\n */\n VapidDetailsModel.prototype.saveVapidDetails = function (swScope, vapidKey) {\n var _this = this;\n if (typeof swScope !== 'string' || swScope.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SCOPE));\n }\n if (vapidKey === null || vapidKey.length !== UNCOMPRESSED_PUBLIC_KEY_SIZE) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_VAPID_KEY));\n }\n var details = {\n swScope: swScope,\n vapidKey: vapidKey\n };\n return this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_VAPID_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\n var objectStore = transaction.objectStore(FCM_VAPID_OBJ_STORE);\n var request = objectStore.put(details);\n request.onerror = function () {\n reject(request.error);\n };\n request.onsuccess = function () {\n resolve();\n };\n });\n });\n };\n /**\n * This method deletes details of the current FCM VAPID key for a SW scope.\n * Resolves once the scope/vapid details have been deleted and returns the\n * deleted vapid key.\n */\n VapidDetailsModel.prototype.deleteVapidDetails = function (swScope) {\n var _this = this;\n return this.getVapidFromSWScope(swScope).then(function (vapidKey) {\n if (!vapidKey) {\n throw _this.errorFactory_.create(Errors.codes.DELETE_SCOPE_NOT_FOUND);\n }\n return _this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_VAPID_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\n var objectStore = transaction.objectStore(FCM_VAPID_OBJ_STORE);\n var request = objectStore.delete(swScope);\n request.onerror = function () {\n reject(request.error);\n };\n request.onsuccess = function () {\n if (request.result === 0) {\n reject(_this.errorFactory_.create(Errors.codes.FAILED_DELETE_VAPID_KEY));\n return;\n }\n resolve(vapidKey);\n };\n });\n });\n });\n };\n return VapidDetailsModel;\n}(DBInterface));\nexport default VapidDetailsModel;\n\n//# sourceMappingURL=vapid-details-model.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/vapid-details-model.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 DEFAULT_PUBLIC_VAPID_KEY = new Uint8Array([\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: DEFAULT_PUBLIC_VAPID_KEY\n};\nexport default {\n DEFAULT_PUBLIC_VAPID_KEY: DEFAULT_PUBLIC_VAPID_KEY,\n SUBSCRIPTION_DETAILS: SUBSCRIPTION_DETAILS,\n ENDPOINT: 'https://fcm.googleapis.com'\n // ENDPOINT: 'https://jmt17.google.com'\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 IIDModel = /** @class */ (function () {\n function IIDModel() {\n this.errorFactory_ = new ErrorFactory('messaging', 'Messaging', Errors.map);\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 {Uint8Array} publicVapidKey The public VAPID key.\n * @return {Promise} Returns the FCM token to be used in place\n * of the PushSubscription.\n */\n IIDModel.prototype.getToken = function (senderId, subscription, publicVapidKey) {\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 (publicVapidKey !== FCMDetails.DEFAULT_PUBLIC_VAPID_KEY) {\n var applicationPubKey = arrayBufferToBase64(publicVapidKey);\n fcmSubscribeBody += \"&application_pub_key=\" + applicationPubKey;\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 .catch(function () {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_SUBSCRIBE_FAILED);\n })\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 * Update the underlying token details for fcmToken.\n */\n IIDModel.prototype.updateToken = function (senderId, fcmToken, fcmPushSet, subscription, publicVapidKey) {\n var _this = this;\n var p256dh = arrayBufferToBase64(subscription['getKey']('p256dh'));\n var auth = arrayBufferToBase64(subscription['getKey']('auth'));\n var fcmUpdateBody = \"push_set=\" + fcmPushSet + \"&\" +\n (\"token=\" + fcmToken + \"&\") +\n (\"authorized_entity=\" + senderId + \"&\") +\n (\"endpoint=\" + subscription.endpoint + \"&\") +\n (\"encryption_key=\" + p256dh + \"&\") +\n (\"encryption_auth=\" + auth);\n if (publicVapidKey !== FCMDetails.DEFAULT_PUBLIC_VAPID_KEY) {\n var applicationPubKey = arrayBufferToBase64(publicVapidKey);\n fcmUpdateBody += \"&application_pub_key=\" + applicationPubKey;\n }\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var updateOptions = {\n method: 'POST',\n headers: headers,\n body: fcmUpdateBody\n };\n var updateFetchRes;\n return fetch(FCMDetails.ENDPOINT + '/fcm/connect/subscribe', updateOptions)\n .then(function (fetchResponse) {\n updateFetchRes = fetchResponse;\n return fetchResponse.json();\n })\n .catch(function () {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_UPDATE_FAILED);\n })\n .then(function (fcmTokenResponse) {\n if (!updateFetchRes.ok) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(Errors.codes.TOKEN_UPDATE_FAILED, {\n message: message\n });\n }\n if (!fcmTokenResponse['token']) {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_UPDATE_NO_TOKEN);\n }\n return fcmTokenResponse['token'];\n });\n };\n /**\n * Given a fcmToken, pushSet and messagingSenderId, delete an FCM token.\n */\n IIDModel.prototype.deleteToken = function (senderId, fcmToken, fcmPushSet) {\n var _this = this;\n var fcmUnsubscribeBody = \"authorized_entity=\" + senderId + \"&\" +\n (\"token=\" + fcmToken + \"&\") +\n (\"pushSet=\" + fcmPushSet);\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var unsubscribeOptions = {\n method: 'POST',\n headers: headers,\n body: fcmUnsubscribeBody\n };\n return fetch(FCMDetails.ENDPOINT + '/fcm/connect/unsubscribe', unsubscribeOptions).then(function (fetchResponse) {\n if (!fetchResponse.ok) {\n return fetchResponse.json().then(function (fcmTokenResponse) {\n if (fcmTokenResponse['error']) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(Errors.codes.TOKEN_UNSUBSCRIBE_FAILED, {\n message: message\n });\n }\n }, function (err) {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_UNSUBSCRIBE_FAILED);\n });\n }\n });\n };\n return IIDModel;\n}());\nexport default IIDModel;\n\n//# sourceMappingURL=iid-model.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/iid-model.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 TokenDetailsModel from '../models/token-details-model';\nimport VapidDetailsModel from '../models/vapid-details-model';\nimport NOTIFICATION_PERMISSION from '../models/notification-permission';\nimport IIDModel from '../models/iid-model';\nimport arrayBufferToBase64 from '../helpers/array-buffer-to-base64';\nvar SENDER_ID_OPTION_NAME = 'messagingSenderId';\n// Database cache should be invalidated once a week.\nexport var TOKEN_EXPIRATION_MILLIS = 7 * 24 * 60 * 60 * 1000; // 7 days\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.tokenDetailsModel_ = new TokenDetailsModel();\n this.vapidDetailsModel_ = new VapidDetailsModel();\n this.iidModel_ = new IIDModel();\n this.app = app;\n this.INTERNAL = {};\n this.INTERNAL.delete = function () { return _this.delete(); };\n }\n /**\n * @export\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 var swReg;\n return this.getSWRegistration_()\n .then(function (reg) {\n swReg = reg;\n return _this.tokenDetailsModel_.getTokenDetailsFromSWScope(swReg.scope);\n })\n .then(function (tokenDetails) {\n if (tokenDetails) {\n return _this.manageExistingToken(tokenDetails, swReg);\n }\n return _this.getNewToken(swReg);\n });\n };\n /**\n * manageExistingToken is triggered if there's an existing FCM token in the\n * database and it can take 3 different actions:\n * 1) Retrieve the existing FCM token from the database.\n * 2) If VAPID details have changed: Delete the existing token and create a\n * new one with the new VAPID key.\n * 3) If the database cache is invalidated: Send a request to FCM to update\n * the token, and to check if the token is still valid on FCM-side.\n */\n ControllerInterface.prototype.manageExistingToken = function (tokenDetails, swReg) {\n var _this = this;\n return this.isTokenStillValid(tokenDetails).then(function (isValid) {\n if (isValid) {\n var now = Date.now();\n if (now < tokenDetails['createTime'] + TOKEN_EXPIRATION_MILLIS) {\n return tokenDetails['fcmToken'];\n }\n else {\n return _this.updateToken(tokenDetails, swReg);\n }\n }\n else {\n // If the VAPID details are updated, delete the existing token,\n // and create a new one.\n return _this.deleteToken(tokenDetails['fcmToken']).then(function () {\n return _this.getNewToken(swReg);\n });\n }\n });\n };\n /*\n * Checks if the tokenDetails match the details provided in the clients.\n */\n ControllerInterface.prototype.isTokenStillValid = function (tokenDetails) {\n // TODO Validate rest of the details.\n return this.getPublicVapidKey_().then(function (publicKey) {\n if (arrayBufferToBase64(publicKey) !== tokenDetails['vapidKey']) {\n return false;\n }\n return true;\n });\n };\n ControllerInterface.prototype.updateToken = function (tokenDetails, swReg) {\n var _this = this;\n var publicVapidKey;\n var updatedToken;\n var subscription;\n return this.getPublicVapidKey_()\n .then(function (publicKey) {\n publicVapidKey = publicKey;\n return _this.getPushSubscription_(swReg, publicVapidKey);\n })\n .then(function (pushSubscription) {\n subscription = pushSubscription;\n return _this.iidModel_.updateToken(_this.messagingSenderId_, tokenDetails['fcmToken'], tokenDetails['fcmPushSet'], subscription, publicVapidKey);\n })\n .catch(function (err) {\n return _this.deleteToken(tokenDetails['fcmToken']).then(function () {\n throw err;\n });\n })\n .then(function (token) {\n updatedToken = token;\n var allDetails = {\n swScope: swReg.scope,\n vapidKey: publicVapidKey,\n subscription: subscription,\n fcmSenderId: _this.messagingSenderId_,\n fcmToken: updatedToken,\n fcmPushSet: tokenDetails['fcmPushSet']\n };\n return _this.tokenDetailsModel_.saveTokenDetails(allDetails);\n })\n .then(function () {\n return _this.vapidDetailsModel_.saveVapidDetails(swReg.scope, publicVapidKey);\n })\n .then(function () {\n return updatedToken;\n });\n };\n ControllerInterface.prototype.getNewToken = function (swReg) {\n var _this = this;\n var publicVapidKey;\n var subscription;\n var tokenDetails;\n return this.getPublicVapidKey_()\n .then(function (publicKey) {\n publicVapidKey = publicKey;\n return _this.getPushSubscription_(swReg, publicVapidKey);\n })\n .then(function (pushSubscription) {\n subscription = pushSubscription;\n return _this.iidModel_.getToken(_this.messagingSenderId_, subscription, publicVapidKey);\n })\n .then(function (iidTokenDetails) {\n tokenDetails = iidTokenDetails;\n var allDetails = {\n swScope: swReg.scope,\n vapidKey: publicVapidKey,\n subscription: subscription,\n fcmSenderId: _this.messagingSenderId_,\n fcmToken: tokenDetails['token'],\n fcmPushSet: tokenDetails['pushSet']\n };\n return _this.tokenDetailsModel_.saveTokenDetails(allDetails);\n })\n .then(function () {\n return _this.vapidDetailsModel_.saveVapidDetails(swReg.scope, publicVapidKey);\n })\n .then(function () {\n return tokenDetails['token'];\n });\n };\n /**\n * This method deletes tokens that the token manager looks after,\n * unsubscribes the token from FCM and then unregisters the push\n * subscription if it exists. It returns a promise that indicates\n * whether or not the unsubscribe request was processed successfully.\n * @export\n */\n ControllerInterface.prototype.deleteToken = function (token) {\n var _this = this;\n return this.tokenDetailsModel_\n .deleteToken(token)\n .then(function (details) {\n return _this.iidModel_.deleteToken(details['fcmSenderId'], details['fcmToken'], details['fcmPushSet']);\n })\n .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 ControllerInterface.prototype.getPublicVapidKey_ = 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 ControllerInterface.prototype.getPushSubscription_ = function (registration, publicVapidKey) {\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 {!string} b64PublicKey\n */\n ControllerInterface.prototype.usePublicVapidKey = function (b64PublicKey) {\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 Promise.all([\n this.tokenDetailsModel_.closeDatabase(),\n this.vapidDetailsModel_.closeDatabase()\n ]);\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 ControllerInterface.prototype.getTokenDetailsModel = function () {\n return this.tokenDetailsModel_;\n };\n ControllerInterface.prototype.getVapidDetailsModel = function () {\n return this.vapidDetailsModel_;\n };\n /**\n * @protected\n * @returns {IIDModel}\n */\n ControllerInterface.prototype.getIIDModel = function () {\n return this.iidModel_;\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 */\nexport default function (base64String) {\n var padding = '='.repeat((4 - base64String.length % 4) % 4);\n var base64 = (base64String + padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n var rawData = window.atob(base64);\n var outputArray = new Uint8Array(rawData.length);\n for (var i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n};\n\n//# sourceMappingURL=base64-to-array-buffer.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/helpers/base64-to-array-buffer.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 FCMDetails from '../models/fcm-details';\nimport base64ToArrayBuffer from '../helpers/base64-to-array-buffer';\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 _this.messageObserver_ = null;\n _this.onMessage_ = createSubscribe(function (observer) {\n _this.messageObserver_ = observer;\n });\n _this.tokenRefreshObserver_ = null;\n _this.onTokenRefresh_ = createSubscribe(function (observer) {\n _this.tokenRefreshObserver_ = observer;\n });\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(managePermissionResult);\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 * This method allows a developer to override the default vapid key\n * and instead use a custom VAPID public key.\n * @export\n * @param {!string} publicKey A URL safe base64 encoded string.\n */\n WindowController.prototype.usePublicVapidKey = function (publicKey) {\n if (typeof publicKey !== 'string') {\n throw this.errorFactory_.create(Errors.codes.INVALID_PUBLIC_VAPID_KEY);\n }\n if (typeof this.publicVapidKeyToUse_ !== 'undefined') {\n throw this.errorFactory_.create(Errors.codes.USE_PUBLIC_KEY_BEFORE_GET_TOKEN);\n }\n var parsedKey = base64ToArrayBuffer(publicKey);\n if (parsedKey.length !== 65) {\n throw this.errorFactory_.create(Errors.codes.PUBLIC_KEY_DECRYPTION_FAILED);\n }\n this.publicVapidKeyToUse_ = parsedKey;\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 will return the default VAPID key or the uint8array version of the public VAPID key\n * provided by the developer.\n * @private\n */\n WindowController.prototype.getPublicVapidKey_ = function () {\n if (this.publicVapidKeyToUse_) {\n return Promise.resolve(this.publicVapidKeyToUse_);\n }\n return Promise.resolve(FCMDetails.DEFAULT_PUBLIC_VAPID_KEY);\n };\n /**\n * Gets a PushSubscription for the current user.\n * @private\n * @param {ServiceWorkerRegistration} registration\n * @return {Promise}\n */\n WindowController.prototype.getPushSubscription_ = function (swRegistration, publicVapidKey) {\n // Check for existing subscription first\n var subscription;\n var fcmTokenDetails;\n return swRegistration.pushManager.getSubscription().then(function (subscription) {\n if (subscription) {\n return subscription;\n }\n return swRegistration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: publicVapidKey\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 if (_this.messageObserver_) {\n _this.messageObserver_.next(pushMessage);\n }\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 FCMDetails from '../models/fcm-details';\nimport WorkerPageMessage from '../models/worker-page-message';\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_1 = notificationDetails.title || '';\n return _this.getSWRegistration_().then(function (reg) {\n return reg.showNotification(notificationTitle_1, notificationDetails);\n });\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.getSWRegistration_()\n .then(function (registration) {\n return registration.pushManager\n .getSubscription()\n .then(function (subscription) {\n // TODO: Check if it's still valid\n // TODO: If not, then update token\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 var tokenDetailsModel = _this.getTokenDetailsModel();\n return tokenDetailsModel\n .getTokenDetailsFromSWScope(registration.scope)\n .then(function (tokenDetails) {\n if (!tokenDetails) {\n // This should rarely occure, but could if indexedDB\n // is corrupted or wiped\n throw err;\n }\n // Attempt to delete the token if we know it's bad\n return _this.deleteToken(tokenDetails['fcmToken']).then(function () {\n throw err;\n });\n });\n });\n })\n .catch(function (err) {\n throw _this.errorFactory_.create(Errors.codes.UNABLE_TO_RESUBSCRIBE, {\n message: err\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 if (!msgPayload['notification']) {\n // Nothing to do.\n return;\n }\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.focus();\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, self.location).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, self.location).href;\n if (parsedClientUrl === parsedURL) {\n suitableClient = clientList[i];\n break;\n }\n }\n if (suitableClient) {\n return suitableClient;\n }\n return null;\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 // NOTE: This returns a promise in case this API is abstracted later on to\n // do additional work\n if (!client) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.NO_WINDOW_CLIENT_TO_MSG));\n }\n client.postMessage(message);\n return Promise.resolve();\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 /**\n * This will return the default VAPID key or the uint8array version of the\n * public VAPID key provided by the developer.\n */\n SWController.prototype.getPublicVapidKey_ = function () {\n var _this = this;\n return this.getSWRegistration_()\n .then(function (swReg) {\n return _this.getVapidDetailsModel().getVapidFromSWScope(swReg.scope);\n })\n .then(function (vapidKeyFromDatabase) {\n if (vapidKeyFromDatabase === null) {\n return FCMDetails.DEFAULT_PUBLIC_VAPID_KEY;\n }\n return vapidKeyFromDatabase;\n });\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.10.0\n * Build: rev-fc81427\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 = {}));\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 = {}));\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 = "]}