UNPKG

firebase

Version:

Firebase JavaScript library for web and Node.js

4 lines (2 loc) • 45.9 kB
import{registerVersion as e,_registerComponent as t,_getProvider,getApp as c}from"https://www.gstatic.com/firebasejs/12.19.0/firebase-app.js";class FirebaseError extends Error{constructor(e,t,c){super(t),this.code=e,this.customData=c,this.name="FirebaseError",Object.setPrototypeOf(this,FirebaseError.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,ErrorFactory.prototype.create)}}class ErrorFactory{constructor(e,t,c){this.service=e,this.serviceName=t,this.errors=c}create(e,...t){const c=t[0]||{},g=`${this.service}/${e}`,I=this.errors[e],w=I?function replaceTemplate(e,t){try{let c=0,g="";for(;c<e.length;){const I=e.indexOf("{$",c);if(-1===I){g+=e.substring(c);break}const w=e.indexOf("}",I+2);if(-1===w){g+=e.substring(c);break}const _=e.substring(I+2,w),k=t[_];g+=e.substring(c,I)+(null!=k?String(k):`<${_}?>`),c=w+1}return g}catch(t){return e}}(I,c):"Error",_=`${this.serviceName}: ${w} (${g}).`;return new FirebaseError(g,_,c)}}function deepEqual(e,t){if(e===t)return!0;const c=Object.keys(e),g=Object.keys(t);for(const I of c){if(!g.includes(I))return!1;const c=e[I],w=t[I];if(isObject(c)&&isObject(w)){if(!deepEqual(c,w))return!1}else if(c!==w)return!1}for(const e of g)if(!c.includes(e))return!1;return!0}function isObject(e){return null!==e&&"object"==typeof e}function getModularInstance(e){return e&&e._delegate?e._delegate:e}var g;!function(e){e[e.DEBUG=0]="DEBUG",e[e.VERBOSE=1]="VERBOSE",e[e.INFO=2]="INFO",e[e.WARN=3]="WARN",e[e.ERROR=4]="ERROR",e[e.SILENT=5]="SILENT"}(g||(g={}));const I={debug:g.DEBUG,verbose:g.VERBOSE,info:g.INFO,warn:g.WARN,error:g.ERROR,silent:g.SILENT},w=g.INFO,_={[g.DEBUG]:"log",[g.VERBOSE]:"log",[g.INFO]:"info",[g.WARN]:"warn",[g.ERROR]:"error"},defaultLogHandler=(e,t,...c)=>{if(t<e.logLevel)return;const g=(new Date).toISOString(),I=_[t];if(!I)throw new Error(`Attempted to log a message with an invalid logType (value: ${t})`);console[I](`[${g}] ${e.name}:`,...c)};var k,C,n=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},r=function(e){if("loading"===document.readyState)return"loading";var t=n();if(t){if(e<t.domInteractive)return"loading";if(0===t.domContentLoadedEventStart||e<t.domContentLoadedEventStart)return"dom-interactive";if(0===t.domComplete||e<t.domComplete)return"dom-content-loaded"}return"complete"},i=function(e){var t=e.nodeName;return 1===e.nodeType?t.toLowerCase():t.toUpperCase().replace(/^#/,"")},a=function(e,t){var c="";try{for(;e&&9!==e.nodeType;){var g=e,I=g.id?"#"+g.id:i(g)+(g.classList&&g.classList.value&&g.classList.value.trim()&&g.classList.value.trim().length?"."+g.classList.value.trim().replace(/\s+/g,"."):"");if(c.length+I.length>(t||100)-1)return c||I;if(c=c?I+">"+c:I,g.id)break;e=g.parentNode}}catch(e){}return c},R=-1,u=function(e){addEventListener("pageshow",(function(t){t.persisted&&(R=t.timeStamp,e(t))}),!0)},s=function(){var e=n();return e&&e.activationStart||0},f=function(e,t){var c=n(),g="navigate";return R>=0?g="back-forward-cache":c&&(document.prerendering||s()>0?g="prerender":document.wasDiscarded?g="restore":c.type&&(g=c.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:g}},d=function(e,t,c){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var g=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return g.observe(Object.assign({type:e,buffered:!0},c||{})),g}}catch(e){}},l=function(e,t,c,g){var I,w;return function(_){t.value>=0&&(_||g)&&((w=t.value-(I||0))||void 0===I)&&(I=t.value,t.delta=w,t.rating=function(e,t){return e>t[1]?"poor":e>t[0]?"needs-improvement":"good"}(t.value,c),e(t))}},m=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){document.addEventListener("visibilitychange",(function(){"hidden"===document.visibilityState&&e()}))},v=function(e){var t=!1;return function(){t||(e(),t=!0)}},M=-1,h=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},T=function(e){"hidden"===document.visibilityState&&M>-1&&(M="visibilitychange"===e.type?e.timeStamp:0,E())},y=function(){addEventListener("visibilitychange",T,!0),addEventListener("prerenderingchange",T,!0)},E=function(){removeEventListener("visibilitychange",T,!0),removeEventListener("prerenderingchange",T,!0)},S=function(){return M<0&&(M=h(),y(),u((function(){setTimeout((function(){M=h(),y()}),0)}))),{get firstHiddenTime(){return M}}},b=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},L=[1800,3e3],O=[.1,.25],D=function(e,t){!function(e,t){t=t||{},function(e,t){t=t||{},b((function(){var c,g=S(),I=f("FCP"),w=d("paint",(function(e){e.forEach((function(e){"first-contentful-paint"===e.name&&(w.disconnect(),e.startTime<g.firstHiddenTime&&(I.value=Math.max(e.startTime-s(),0),I.entries.push(e),c(!0)))}))}));w&&(c=l(e,I,L,t.reportAllChanges),u((function(g){I=f("FCP"),c=l(e,I,L,t.reportAllChanges),m((function(){I.value=performance.now()-g.timeStamp,c(!0)}))})))}))}(v((function(){var c,g=f("CLS",0),I=0,w=[],o=function(e){e.forEach((function(e){if(!e.hadRecentInput){var t=w[0],c=w[w.length-1];I&&e.startTime-c.startTime<1e3&&e.startTime-t.startTime<5e3?(I+=e.value,w.push(e)):(I=e.value,w=[e])}})),I>g.value&&(g.value=I,g.entries=w,c())},_=d("layout-shift",o);_&&(c=l(e,g,O,t.reportAllChanges),p((function(){o(_.takeRecords()),c(!0)})),u((function(){I=0,g=f("CLS",0),c=l(e,g,O,t.reportAllChanges),m((function(){return c()}))})),setTimeout(c,0))})))}((function(t){var c=function(e){var t,c={};if(e.entries.length){var g=e.entries.reduce((function(e,t){return e&&e.value>t.value?e:t}));if(g&&g.sources&&g.sources.length){var I=(t=g.sources).find((function(e){return e.node&&1===e.node.nodeType}))||t[0];I&&(c={largestShiftTarget:a(I.node),largestShiftTime:g.startTime,largestShiftValue:g.value,largestShiftSource:I,largestShiftEntry:g,loadState:r(g.startTime)})}}return Object.assign(e,{attribution:c})}(t);e(c)}),t)},B=0,q=1/0,x=0,A=function(e){e.forEach((function(e){e.interactionId&&(q=Math.min(q,e.interactionId),x=Math.max(x,e.interactionId),B=x?(x-q)/7+1:0)}))},F=function(){return k?B:performance.interactionCount||0},P=function(){"interactionCount"in performance||k||(k=d("event",A,{type:"event",buffered:!0,durationThreshold:0}))},U=[],j=new Map,V=0,$=[],H=function(e){if($.forEach((function(t){return t(e)})),e.interactionId||"first-input"===e.entryType){var t=U[U.length-1],c=j.get(e.interactionId);if(c||U.length<10||e.duration>t.latency){if(c)e.duration>c.latency?(c.entries=[e],c.latency=e.duration):e.duration===c.latency&&e.startTime===c.entries[0].startTime&&c.entries.push(e);else{var g={id:e.interactionId,latency:e.duration,entries:[e]};j.set(g.id,g),U.push(g)}U.sort((function(e,t){return t.latency-e.latency})),U.length>10&&U.splice(10).forEach((function(e){return j.delete(e.id)}))}}},N=function(e){var t=self.requestIdleCallback||self.setTimeout,c=-1;return e=v(e),"hidden"===document.visibilityState?e():(c=t(e),p(e)),c},W=[200,500],z=function(e,t){"PerformanceEventTiming"in self&&"interactionId"in PerformanceEventTiming.prototype&&(t=t||{},b((function(){var c;P();var g,I=f("INP"),a=function(e){N((function(){e.forEach(H);var t=function(){var e=Math.min(U.length-1,Math.floor((F()-V)/50));return U[e]}();t&&t.latency!==I.value&&(I.value=t.latency,I.entries=t.entries,g())}))},w=d("event",a,{durationThreshold:null!==(c=t.durationThreshold)&&void 0!==c?c:40});g=l(e,I,W,t.reportAllChanges),w&&(w.observe({type:"first-input",buffered:!0}),p((function(){a(w.takeRecords()),g(!0)})),u((function(){V=F(),U.length=0,j.clear(),I=f("INP"),g=l(e,I,W,t.reportAllChanges)})))})))},K=[],G=[],J=0,Z=new WeakMap,ee=new Map,te=-1,Q=function(e){K=K.concat(e),X()},X=function(){te<0&&(te=N(Y))},Y=function(){ee.size>10&&ee.forEach((function(e,t){j.has(t)||ee.delete(t)}));var e=U.map((function(e){return Z.get(e.entries[0])})),t=G.length-50;G=G.filter((function(c,g){return g>=t||e.includes(c)}));for(var c=new Set,g=0;g<G.length;g++){var I=G[g];nt(I.startTime,I.processingEnd).forEach((function(e){c.add(e)}))}var w=K.length-1-50;K=K.filter((function(e,t){return e.startTime>J&&t>w||c.has(e)})),te=-1};$.push((function(e){e.interactionId&&e.target&&!ee.has(e.interactionId)&&ee.set(e.interactionId,e.target)}),(function(e){var t,c=e.startTime+e.duration;J=Math.max(J,e.processingEnd);for(var g=G.length-1;g>=0;g--){var I=G[g];if(Math.abs(c-I.renderTime)<=8){(t=I).startTime=Math.min(e.startTime,t.startTime),t.processingStart=Math.min(e.processingStart,t.processingStart),t.processingEnd=Math.max(e.processingEnd,t.processingEnd),t.entries.push(e);break}}t||(t={startTime:e.startTime,processingStart:e.processingStart,processingEnd:e.processingEnd,renderTime:c,entries:[e]},G.push(t)),(e.interactionId||"first-input"===e.entryType)&&Z.set(e,t),X()}));var ne,re,nt=function(e,t){for(var c,g=[],I=0;c=K[I];I++)if(!(c.startTime+c.duration<e)){if(c.startTime>t)break;g.push(c)}return g},rt=function(e,t){C||(C=d("long-animation-frame",Q)),z((function(t){var c=function(e){var t=e.entries[0],c=Z.get(t),g=t.processingStart,I=c.processingEnd,w=c.entries.sort((function(e,t){return e.processingStart-t.processingStart})),_=nt(t.startTime,I),k=e.entries.find((function(e){return e.target})),C=k&&k.target||ee.get(t.interactionId),R=[t.startTime+t.duration,I].concat(_.map((function(e){return e.startTime+e.duration}))),M=Math.max.apply(Math,R),L={interactionTarget:a(C),interactionTargetElement:C,interactionType:t.name.startsWith("key")?"keyboard":"pointer",interactionTime:t.startTime,nextPaintTime:M,processedEventEntries:w,longAnimationFrameEntries:_,inputDelay:g-t.startTime,processingDuration:I-g,presentationDelay:Math.max(M-I,0),loadState:r(t.startTime)};return Object.assign(e,{attribution:L})}(t);e(c)}),t)},ie=[2500,4e3],ae={},ot=function(e,t){!function(e,t){t=t||{},b((function(){var c,g=S(),I=f("LCP"),a=function(e){t.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime<g.firstHiddenTime&&(I.value=Math.max(e.startTime-s(),0),I.entries=[e],c())}))},w=d("largest-contentful-paint",a);if(w){c=l(e,I,ie,t.reportAllChanges);var _=v((function(){ae[I.id]||(a(w.takeRecords()),w.disconnect(),ae[I.id]=!0,c(!0))}));["keydown","click"].forEach((function(e){addEventListener(e,(function(){return N(_)}),{once:!0,capture:!0})})),p(_),u((function(g){I=f("LCP"),c=l(e,I,ie,t.reportAllChanges),m((function(){I.value=performance.now()-g.timeStamp,ae[I.id]=!0,c(!0)}))}))}}))}((function(t){var c=function(e){var t={timeToFirstByte:0,resourceLoadDelay:0,resourceLoadDuration:0,elementRenderDelay:e.value};if(e.entries.length){var c=n();if(c){var g=c.activationStart||0,I=e.entries[e.entries.length-1],w=I.url&&performance.getEntriesByType("resource").filter((function(e){return e.name===I.url}))[0],_=Math.max(0,c.responseStart-g),k=Math.max(_,w?(w.requestStart||w.startTime)-g:0),C=Math.max(k,w?w.responseEnd-g:0),R=Math.max(C,I.startTime-g);t={element:a(I.element),timeToFirstByte:_,resourceLoadDelay:k-_,resourceLoadDuration:C-k,elementRenderDelay:R-C,navigationEntry:c,lcpEntry:I},I.url&&(t.url=I.url),w&&(t.lcpResourceEntry=w)}}return Object.assign(e,{attribution:t})}(t);e(c)}),t)};class Component{constructor(e,t,c){this.name=e,this.instanceFactory=t,this.type=c,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}!function(e){e.LAZY="LAZY",e.EAGER="EAGER",e.EXPLICIT="EXPLICIT"}(ne||(ne={})),function(e){e.PUBLIC="PUBLIC",e.PRIVATE="PRIVATE",e.VERSION="VERSION"}(re||(re={}));let oe,se;const ce=new WeakMap,ue=new WeakMap,le=new WeakMap,de=new WeakMap,fe=new WeakMap;let pe={get(e,t,c){if(e instanceof IDBTransaction){if("done"===t)return ue.get(e);if("objectStoreNames"===t)return e.objectStoreNames||le.get(e);if("store"===t)return c.objectStoreNames[1]?void 0:c.objectStore(c.objectStoreNames[0])}return wrap(e[t])},set:(e,t,c)=>(e[t]=c,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function wrapFunction(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?function getCursorAdvanceMethods(){return se||(se=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}().includes(e)?function(...t){return e.apply(unwrap(this),t),wrap(ce.get(this))}:function(...t){return wrap(e.apply(unwrap(this),t))}:function(t,...c){const g=e.call(unwrap(this),t,...c);return le.set(g,t.sort?t.sort():[t]),wrap(g)}}function transformCachableValue(e){return"function"==typeof e?wrapFunction(e):(e instanceof IDBTransaction&&function cacheDonePromiseForTransaction(e){if(ue.has(e))return;const t=new Promise(((t,c)=>{const unlisten=()=>{e.removeEventListener("complete",complete),e.removeEventListener("error",error),e.removeEventListener("abort",error)},complete=()=>{t(),unlisten()},error=()=>{c(e.error||new DOMException("AbortError","AbortError")),unlisten()};e.addEventListener("complete",complete),e.addEventListener("error",error),e.addEventListener("abort",error)}));ue.set(e,t)}(e),t=e,function getIdbProxyableTypes(){return oe||(oe=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}().some((e=>t instanceof e))?new Proxy(e,pe):e);var t}function wrap(e){if(e instanceof IDBRequest)return function promisifyRequest(e){const t=new Promise(((t,c)=>{const unlisten=()=>{e.removeEventListener("success",success),e.removeEventListener("error",error)},success=()=>{t(wrap(e.result)),unlisten()},error=()=>{c(e.error),unlisten()};e.addEventListener("success",success),e.addEventListener("error",error)}));return t.then((t=>{t instanceof IDBCursor&&ce.set(t,e)})).catch((()=>{})),fe.set(t,e),t}(e);if(de.has(e))return de.get(e);const t=transformCachableValue(e);return t!==e&&(de.set(e,t),fe.set(t,e)),t}const unwrap=e=>fe.get(e);const ge=["get","getKey","getAll","getAllKeys","count"],me=["put","add","delete","clear"],he=new Map;function getMethod(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(he.get(t))return he.get(t);const c=t.replace(/FromIndex$/,""),g=t!==c,I=me.includes(c);if(!(c in(g?IDBIndex:IDBObjectStore).prototype)||!I&&!ge.includes(c))return;const method=async function(e,...t){const w=this.transaction(e,I?"readwrite":"readonly");let _=w.store;return g&&(_=_.index(t.shift())),(await Promise.all([_[c](...t),I&&w.done]))[0]};return he.set(t,method),method}!function replaceTraps(e){pe=e(pe)}((e=>({...e,get:(t,c,g)=>getMethod(t,c)||e.get(t,c,g),has:(t,c)=>!!getMethod(t,c)||e.has(t,c)})));const ve="@firebase/installations",Te="0.6.24",be=1e4,ye=`w:${Te}`,Ee="FIS_v2",Se=36e5,Ie=new ErrorFactory("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function isServerError(e){return e instanceof FirebaseError&&e.code.includes("request-failed")}function getInstallationsEndpoint({projectId:e}){return`https://firebaseinstallations.googleapis.com/v1/projects/${e}/installations`}function extractAuthTokenInfoFromResponse(e){return{token:e.token,requestStatus:2,expiresIn:(t=e.expiresIn,Number(t.replace("s","000"))),creationTime:Date.now()};var t}async function getErrorFromResponse(e,t){const c=(await t.json()).error;return Ie.create("request-failed",{requestName:e,serverCode:c.code,serverMessage:c.message,serverStatus:c.status})}function getHeaders({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function getHeadersWithAuth(e,{refreshToken:t}){const c=getHeaders(e);return c.append("Authorization",function getAuthorizationHeader(e){return`${Ee} ${e}`}(t)),c}async function retryIfServerError(e){const t=await e();return t.status>=500&&t.status<600?e():t}function sleep(e){return new Promise((t=>{setTimeout(t,e)}))}const we=/^[cdef][\w-]{21}$/;function generateFid(){try{const e=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16;const t=function encode(e){const t=function bufferToBase64UrlSafe(e){return btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_")}(e);return t.substr(0,22)}(e);return we.test(t)?t:""}catch{return""}}function getKey(e){return`${e.appName}!${e.appId}`}const _e=new Map;function fidChanged(e,t){const c=getKey(e);callFidChangeCallbacks(c,t),function broadcastFidChange(e,t){const c=function getBroadcastChannel(){!Ae&&"BroadcastChannel"in self&&(Ae=new BroadcastChannel("[Firebase] FID Change"),Ae.onmessage=e=>{callFidChangeCallbacks(e.data.key,e.data.fid)});return Ae}();c&&c.postMessage({key:e,fid:t});!function closeBroadcastChannel(){0===_e.size&&Ae&&(Ae.close(),Ae=null)}()}(c,t)}function callFidChangeCallbacks(e,t){const c=_e.get(e);if(c)for(const e of c)e(t)}let Ae=null;const ke="firebase-installations-store";let Ce=null;function getDbPromise(){return Ce||(Ce=function openDB(e,t,{blocked:c,upgrade:g,blocking:I,terminated:w}={}){const _=indexedDB.open(e,t),k=wrap(_);return g&&_.addEventListener("upgradeneeded",(e=>{g(wrap(_.result),e.oldVersion,e.newVersion,wrap(_.transaction),e)})),c&&_.addEventListener("blocked",(e=>c(e.oldVersion,e.newVersion,e))),k.then((e=>{w&&e.addEventListener("close",(()=>w())),I&&e.addEventListener("versionchange",(e=>I(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),k}("firebase-installations-database",1,{upgrade:(e,t)=>{if(0===t)e.createObjectStore(ke)}})),Ce}async function set(e,t){const c=getKey(e),g=(await getDbPromise()).transaction(ke,"readwrite"),I=g.objectStore(ke),w=await I.get(c);return await I.put(t,c),await g.done,w&&w.fid===t.fid||fidChanged(e,t.fid),t}async function remove(e){const t=getKey(e),c=(await getDbPromise()).transaction(ke,"readwrite");await c.objectStore(ke).delete(t),await c.done}async function update(e,t){const c=getKey(e),g=(await getDbPromise()).transaction(ke,"readwrite"),I=g.objectStore(ke),w=await I.get(c),_=t(w);return void 0===_?await I.delete(c):await I.put(_,c),await g.done,!_||w&&w.fid===_.fid||fidChanged(e,_.fid),_}async function getInstallationEntry(e){let t;const c=await update(e.appConfig,(c=>{const g=function updateOrCreateInstallationEntry(e){const t=e||{fid:generateFid(),registrationStatus:0};return clearTimedOutRequest(t)}(c),I=function triggerRegistrationIfNecessary(e,t){if(0===t.registrationStatus){if(!navigator.onLine){return{installationEntry:t,registrationPromise:Promise.reject(Ie.create("app-offline"))}}const c={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},g=async function registerInstallation(e,t){try{const c=await async function createInstallationRequest({appConfig:e,heartbeatServiceProvider:t},{fid:c}){const g=getInstallationsEndpoint(e),I=getHeaders(e),w=t.getImmediate({optional:!0});if(w){const e=await w.getHeartbeatsHeader();e&&I.append("x-firebase-client",e)}const _={fid:c,authVersion:Ee,appId:e.appId,sdkVersion:ye},k={method:"POST",headers:I,body:JSON.stringify(_)},C=await retryIfServerError((()=>fetch(g,k)));if(C.ok){const e=await C.json();return{fid:e.fid||c,registrationStatus:2,refreshToken:e.refreshToken,authToken:extractAuthTokenInfoFromResponse(e.authToken)}}throw await getErrorFromResponse("Create Installation",C)}(e,t);return set(e.appConfig,c)}catch(c){throw isServerError(c)&&409===c.customData.serverCode?await remove(e.appConfig):await set(e.appConfig,{fid:t.fid,registrationStatus:0}),c}}(e,c);return{installationEntry:c,registrationPromise:g}}return 1===t.registrationStatus?{installationEntry:t,registrationPromise:waitUntilFidRegistration(e)}:{installationEntry:t}}(e,g);return t=I.registrationPromise,I.installationEntry}));return""===c.fid?{installationEntry:await t}:{installationEntry:c,registrationPromise:t}}async function waitUntilFidRegistration(e){let t=await updateInstallationRequest(e.appConfig);for(;1===t.registrationStatus;)await sleep(100),t=await updateInstallationRequest(e.appConfig);if(0===t.registrationStatus){const{installationEntry:t,registrationPromise:c}=await getInstallationEntry(e);return c||t}return t}function updateInstallationRequest(e){return update(e,(e=>{if(!e)throw Ie.create("installation-not-found");return clearTimedOutRequest(e)}))}function clearTimedOutRequest(e){return function hasInstallationRequestTimedOut(e){return 1===e.registrationStatus&&e.registrationTime+be<Date.now()}(e)?{fid:e.fid,registrationStatus:0}:e}async function generateAuthTokenRequest({appConfig:e,heartbeatServiceProvider:t},c){const g=function getGenerateAuthTokenEndpoint(e,{fid:t}){return`${getInstallationsEndpoint(e)}/${t}/authTokens:generate`}(e,c),I=getHeadersWithAuth(e,c),w=t.getImmediate({optional:!0});if(w){const e=await w.getHeartbeatsHeader();e&&I.append("x-firebase-client",e)}const _={installation:{sdkVersion:ye,appId:e.appId}},k={method:"POST",headers:I,body:JSON.stringify(_)},C=await retryIfServerError((()=>fetch(g,k)));if(C.ok){return extractAuthTokenInfoFromResponse(await C.json())}throw await getErrorFromResponse("Generate Auth Token",C)}async function refreshAuthToken(e,t=!1){let c;const g=await update(e.appConfig,(g=>{if(!isEntryRegistered(g))throw Ie.create("not-registered");const I=g.authToken;if(!t&&function isAuthTokenValid(e){return 2===e.requestStatus&&!function isAuthTokenExpired(e){const t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+Se}(e)}(I))return g;if(1===I.requestStatus)return c=async function waitUntilAuthTokenRequest(e,t){let c=await updateAuthTokenRequest(e.appConfig);for(;1===c.authToken.requestStatus;)await sleep(100),c=await updateAuthTokenRequest(e.appConfig);const g=c.authToken;return 0===g.requestStatus?refreshAuthToken(e,t):g}(e,t),g;{if(!navigator.onLine)throw Ie.create("app-offline");const t=function makeAuthTokenRequestInProgressEntry(e){const t={requestStatus:1,requestTime:Date.now()};return{...e,authToken:t}}(g);return c=async function fetchAuthTokenFromServer(e,t){try{const c=await generateAuthTokenRequest(e,t),g={...t,authToken:c};return await set(e.appConfig,g),c}catch(c){if(!isServerError(c)||401!==c.customData.serverCode&&404!==c.customData.serverCode){const c={...t,authToken:{requestStatus:0}};await set(e.appConfig,c)}else await remove(e.appConfig);throw c}}(e,t),t}}));return c?await c:g.authToken}function updateAuthTokenRequest(e){return update(e,(e=>{if(!isEntryRegistered(e))throw Ie.create("not-registered");return function hasAuthTokenRequestTimedOut(e){return 1===e.requestStatus&&e.requestTime+be<Date.now()}(e.authToken)?{...e,authToken:{requestStatus:0}}:e}))}function isEntryRegistered(e){return void 0!==e&&2===e.registrationStatus}async function getToken(e,t=!1){const c=e;await async function completeInstallationRegistration(e){const{registrationPromise:t}=await getInstallationEntry(e);t&&await t}(c);return(await refreshAuthToken(c,t)).token}function getMissingValueError(e){return Ie.create("missing-app-config-values",{valueName:e})}const Re="installations",publicFactory=e=>{const t=e.getProvider("app").getImmediate(),c=function extractAppConfig(e){if(!e||!e.options)throw getMissingValueError("App Configuration");if(!e.name)throw getMissingValueError("App Name");const t=["projectId","apiKey","appId"];for(const c of t)if(!e.options[c])throw getMissingValueError(c);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t);return{app:t,appConfig:c,heartbeatServiceProvider:_getProvider(t,"heartbeat"),_delete:()=>Promise.resolve()}},internalFactory=e=>{const t=e.getProvider("app").getImmediate(),c=_getProvider(t,Re).getImmediate();return{getId:()=>async function getId(e){const t=e,{installationEntry:c,registrationPromise:g}=await getInstallationEntry(t);return g?g.catch(console.error):refreshAuthToken(t).catch(console.error),c.fid}(c),getToken:e=>getToken(c,e)}};!function registerInstallations(){t(new Component(Re,publicFactory,"PUBLIC")),t(new Component("installations-internal",internalFactory,"PRIVATE"))}(),e(ve,Te),e(ve,Te,"esm2020");const Me="@firebase/performance",Pe="0.7.14",Le=Pe,Ne="FB-PERF-TRACE-MEASURE",Oe="_wt_",De="_fcp",Fe="_fid",Be="_lcp",qe="_inp",xe="_cls",Ue="@firebase/performance/config",je="@firebase/performance/configexpire",Ve="Performance",$e=new ErrorFactory("performance",Ve,{"trace started":"Trace {$traceName} was started before.","trace stopped":"Trace {$traceName} is not running.","nonpositive trace startTime":"Trace {$traceName} startTime should be positive.","nonpositive trace duration":"Trace {$traceName} duration should be positive.","no window":"Window is not available.","no app id":"App id is not available.","no project id":"Project id is not available.","no api key":"Api key is not available.","invalid cc log":"Attempted to queue invalid cc event","FB not default":"Performance can only start when Firebase app instance is the default one.","RC response not ok":"RC response is not ok","invalid attribute name":"Attribute name {$attributeName} is invalid.","invalid attribute value":"Attribute value {$attributeValue} is invalid.","invalid custom metric name":"Custom metric name {$customMetricName} is invalid","invalid String merger input":"Input for String merger is invalid, contact support team to resolve.","already initialized":"initializePerformance() has already been called with different options. To avoid this error, call initializePerformance() with the same options as when it was originally called, or call getPerformance() to return the already initialized instance."}),He=new class Logger{constructor(e){this.name=e,this._logLevel=w,this._logHandler=defaultLogHandler,this._userLogHandler=null}get logLevel(){return this._logLevel}set logLevel(e){if(!(e in g))throw new TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel="string"==typeof e?I[e]:e}get logHandler(){return this._logHandler}set logHandler(e){if("function"!=typeof e)throw new TypeError("Value assigned to `logHandler` must be a function");this._logHandler=e}get userLogHandler(){return this._userLogHandler}set userLogHandler(e){this._userLogHandler=e}debug(...e){this._userLogHandler&&this._userLogHandler(this,g.DEBUG,...e),this._logHandler(this,g.DEBUG,...e)}log(...e){this._userLogHandler&&this._userLogHandler(this,g.VERBOSE,...e),this._logHandler(this,g.VERBOSE,...e)}info(...e){this._userLogHandler&&this._userLogHandler(this,g.INFO,...e),this._logHandler(this,g.INFO,...e)}warn(...e){this._userLogHandler&&this._userLogHandler(this,g.WARN,...e),this._logHandler(this,g.WARN,...e)}error(...e){this._userLogHandler&&this._userLogHandler(this,g.ERROR,...e),this._logHandler(this,g.ERROR,...e)}}(Ve);let ze,We,Ke,Ge;He.logLevel=g.INFO;class Api{constructor(e){if(this.window=e,!e)throw $e.create("no window");this.performance=e.performance,this.PerformanceObserver=e.PerformanceObserver,this.windowLocation=e.location,this.navigator=e.navigator,this.document=e.document,this.navigator&&this.navigator.cookieEnabled&&(this.localStorage=e.localStorage),e.perfMetrics&&e.perfMetrics.onFirstInputDelay&&(this.onFirstInputDelay=e.perfMetrics.onFirstInputDelay),this.onLCP=ot,this.onINP=rt,this.onCLS=D}getUrl(){return this.windowLocation.href.split("?")[0]}mark(e){this.performance&&this.performance.mark&&this.performance.mark(e)}measure(e,t,c){this.performance&&this.performance.measure&&this.performance.measure(e,t,c)}getEntriesByType(e){return this.performance&&this.performance.getEntriesByType?this.performance.getEntriesByType(e):[]}getEntriesByName(e){return this.performance&&this.performance.getEntriesByName?this.performance.getEntriesByName(e):[]}getTimeOrigin(){return this.performance&&(this.performance.timeOrigin||this.performance.timing.navigationStart)}requiredApisAvailable(){return fetch&&Promise&&function areCookiesEnabled(){return!("undefined"==typeof navigator||!navigator.cookieEnabled)}()?!!function isIndexedDBAvailable(){try{return"object"==typeof indexedDB}catch(e){return!1}}()||(He.info("IndexedDB is not supported by current browser"),!1):(He.info("Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled."),!1)}setupObserver(e,t){if(!this.PerformanceObserver)return;new this.PerformanceObserver((e=>{for(const c of e.getEntries())t(c)})).observe({entryTypes:[e]})}static getInstance(){return void 0===ze&&(ze=new Api(We)),ze}}function getIid(){return Ke}function mergeStrings(e,t){const c=e.length-t.length;if(c<0||c>1)throw $e.create("invalid String merger input");const g=[];for(let c=0;c<e.length;c++)g.push(e.charAt(c)),t.length>c&&g.push(t.charAt(c));return g.join("")}class SettingsService{constructor(){this.instrumentationEnabled=!0,this.dataCollectionEnabled=!0,this.loggingEnabled=!1,this.tracesSamplingRate=1,this.networkRequestsSamplingRate=1,this.logEndPointUrl="https://firebaselogging.googleapis.com/v0cc/log?format=json_proto",this.flTransportEndpointUrl=mergeStrings("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),this.transportKey=mergeStrings("AzSC8r6ReiGqFMyfvgow","Iayx0u-XT3vksVM-pIV"),this.logSource=462,this.logTraceAfterSampling=!1,this.logNetworkAfterSampling=!1,this.configTimeToLive=12,this.logMaxFlushSize=40}getFlTransportFullUrl(){return this.flTransportEndpointUrl.concat("?key=",this.transportKey)}static getInstance(){return void 0===Ge&&(Ge=new SettingsService),Ge}}var Je;!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.VISIBLE=1]="VISIBLE",e[e.HIDDEN=2]="HIDDEN"}(Je||(Je={}));const Qe=["firebase_","google_","ga_"],Ze=new RegExp("^[a-zA-Z]\\w*$");function getServiceWorkerStatus(){const e=Api.getInstance().navigator;return e?.serviceWorker?e.serviceWorker.controller?2:3:1}function getVisibilityState(){switch(Api.getInstance().document.visibilityState){case"visible":return Je.VISIBLE;case"hidden":return Je.HIDDEN;default:return Je.UNKNOWN}}function getEffectiveConnectionType(){const e=Api.getInstance().navigator.connection;switch(e&&e.effectiveType){case"slow-2g":return 1;case"2g":return 2;case"3g":return 3;case"4g":return 4;default:return 0}}function getAppId(e){const t=e.options?.appId;if(!t)throw $e.create("no app id");return t}const Xe="0.0.1",Ye={loggingEnabled:!0},et="FIREBASE_INSTALLATIONS_AUTH";function getConfig(e,t){const c=function getStoredConfig(){const e=Api.getInstance().localStorage;if(!e)return;const t=e.getItem(je);if(!t||!function configValid(e){return Number(e)>Date.now()}(t))return;const c=e.getItem(Ue);if(!c)return;try{return JSON.parse(c)}catch{return}}();return c?(processConfig(c),Promise.resolve()):function getRemoteConfig(e,t){return function getAuthTokenPromise(e){const t=e.getToken();return t.then((e=>{})),t}(e.installations).then((c=>{const g=function getProjectId(e){const t=e.options?.projectId;if(!t)throw $e.create("no project id");return t}(e.app),I=function getApiKey(e){const t=e.options?.apiKey;if(!t)throw $e.create("no api key");return t}(e.app),w=new Request(`https://firebaseremoteconfig.googleapis.com/v1/projects/${g}/namespaces/fireperf:fetch?key=${I}`,{method:"POST",headers:{Authorization:`${et} ${c}`},body:JSON.stringify({app_instance_id:t,app_instance_id_token:c,app_id:getAppId(e.app),app_version:Le,sdk_version:Xe})});return fetch(w).then((e=>{if(e.ok)return e.json();throw $e.create("RC response not ok")}))})).catch((()=>{He.info(tt)}))}(e,t).then(processConfig).then((e=>function storeConfig(e){const t=Api.getInstance().localStorage;if(!e||!t)return;t.setItem(Ue,JSON.stringify(e)),t.setItem(je,String(Date.now()+60*SettingsService.getInstance().configTimeToLive*60*1e3))}(e)),(()=>{}))}const tt="Could not fetch config, will use default configs";function processConfig(e){if(!e)return e;const t=SettingsService.getInstance(),c=e.entries||{};return void 0!==c.fpr_enabled?t.loggingEnabled="true"===String(c.fpr_enabled):t.loggingEnabled=Ye.loggingEnabled,c.fpr_log_source?t.logSource=Number(c.fpr_log_source):Ye.logSource&&(t.logSource=Ye.logSource),c.fpr_log_endpoint_url?t.logEndPointUrl=c.fpr_log_endpoint_url:Ye.logEndPointUrl&&(t.logEndPointUrl=Ye.logEndPointUrl),c.fpr_log_transport_key?t.transportKey=c.fpr_log_transport_key:Ye.transportKey&&(t.transportKey=Ye.transportKey),void 0!==c.fpr_vc_network_request_sampling_rate?t.networkRequestsSamplingRate=Number(c.fpr_vc_network_request_sampling_rate):void 0!==Ye.networkRequestsSamplingRate&&(t.networkRequestsSamplingRate=Ye.networkRequestsSamplingRate),void 0!==c.fpr_vc_trace_sampling_rate?t.tracesSamplingRate=Number(c.fpr_vc_trace_sampling_rate):void 0!==Ye.tracesSamplingRate&&(t.tracesSamplingRate=Ye.tracesSamplingRate),c.fpr_log_max_flush_size?t.logMaxFlushSize=Number(c.fpr_log_max_flush_size):Ye.logMaxFlushSize&&(t.logMaxFlushSize=Ye.logMaxFlushSize),t.logTraceAfterSampling=shouldLogAfterSampling(t.tracesSamplingRate),t.logNetworkAfterSampling=shouldLogAfterSampling(t.networkRequestsSamplingRate),e}function shouldLogAfterSampling(e){return Math.random()<=e}let it,at=1;function getInitializationPromise(e){return at=2,it=it||function initializePerf(e){return function getDocumentReadyComplete(){const e=Api.getInstance().document;return new Promise((t=>{if(e&&"complete"!==e.readyState){const handler=()=>{"complete"===e.readyState&&(e.removeEventListener("readystatechange",handler),t())};e.addEventListener("readystatechange",handler)}else t()}))}().then((()=>function getIidPromise(e){const t=e.getId();return t.then((e=>{Ke=e})),t}(e.installations))).then((t=>getConfig(e,t))).then((()=>changeInitializationStatus()),(()=>changeInitializationStatus()))}(e),it}function changeInitializationStatus(){at=3}const st=1e4,ct=new TextEncoder;let ut,lt=3,dt=[],ft=!1;function processQueue(e){setTimeout((()=>{lt<=0||(dt.length>0&&function dispatchQueueEvents(){const e=dt.splice(0,1e3);(function postToFlEndpoint(e){const t=SettingsService.getInstance().getFlTransportFullUrl();return ct.encode(e).length<=65536&&navigator.sendBeacon&&navigator.sendBeacon(t,e)?Promise.resolve():fetch(t,{method:"POST",body:e})})(buildPayload(e)).then((()=>{lt=3})).catch((()=>{dt=[...e,...dt],lt--,He.info(`Tries left: ${lt}.`),processQueue(st)}))}(),processQueue(st))}),e)}function buildPayload(e){const t=e.map((e=>({source_extension_json_proto3:e.message,event_time_ms:String(e.eventTime)}))),c={request_time_ms:String(Date.now()),client_info:{client_type:1,js_client_info:{}},log_source:SettingsService.getInstance().logSource,log_event:t};return JSON.stringify(c)}function transportHandler(e){return(...t)=>{!function addToQueue(e){if(!e.eventTime||!e.message)throw $e.create("invalid cc log");dt=[...dt,e]}({message:e(...t),eventTime:Date.now()})}}function flushQueuedEvents(){const e=SettingsService.getInstance().getFlTransportFullUrl();for(;dt.length>0;){const t=dt.splice(-SettingsService.getInstance().logMaxFlushSize),c=buildPayload(t);if(!navigator.sendBeacon||!navigator.sendBeacon(e,c)){dt=[...dt,...t];break}}if(dt.length>0){const t=buildPayload(dt);fetch(e,{method:"POST",body:t}).catch((()=>{He.info("Failed flushing queued events.")}))}}function sendLog(e,t){ut||(ut={send:transportHandler(serializer),flush:flushQueuedEvents}),ut.send(e,t)}function logTrace(e){const t=SettingsService.getInstance();!t.instrumentationEnabled&&e.isAuto||(t.dataCollectionEnabled||e.isAuto)&&Api.getInstance().requiredApisAvailable()&&(!function isPerfInitialized(){return 3===at}()?getInitializationPromise(e.performanceController).then((()=>sendTraceLog(e)),(()=>sendTraceLog(e))):sendTraceLog(e))}function sendTraceLog(e){if(!getIid())return;const t=SettingsService.getInstance();t.loggingEnabled&&t.logTraceAfterSampling&&sendLog(e,1)}function serializer(e,t){return 0===t?function serializeNetworkRequest(e){const t={url:e.url,http_method:e.httpMethod||0,http_response_code:200,response_payload_bytes:e.responsePayloadBytes,client_start_time_us:e.startTimeUs,time_to_response_initiated_us:e.timeToResponseInitiatedUs,time_to_response_completed_us:e.timeToResponseCompletedUs},c={application_info:getApplicationInfo(e.performanceController.app),network_request_metric:t};return JSON.stringify(c)}(e):function serializeTrace(e){const t={name:e.name,is_auto:e.isAuto,client_start_time_us:e.startTimeUs,duration_us:e.durationUs};0!==Object.keys(e.counters).length&&(t.counters=e.counters);const c=e.getAttributes();0!==Object.keys(c).length&&(t.custom_attributes=c);const g={application_info:getApplicationInfo(e.performanceController.app),trace_metric:t};return JSON.stringify(g)}(e)}function getApplicationInfo(e){return{google_app_id:getAppId(e),app_instance_id:getIid(),web_app_info:{sdk_version:Le,page_url:Api.getInstance().getUrl(),service_worker_status:getServiceWorkerStatus(),visibility_state:getVisibilityState(),effective_connection_type:getEffectiveConnectionType()},application_process_state:0}}function createNetworkRequestEntry(e,t){const c=t;if(!c||void 0===c.responseStart)return;const g=Api.getInstance().getTimeOrigin(),I=Math.floor(1e3*(c.startTime+g)),w=c.responseStart?Math.floor(1e3*(c.responseStart-c.startTime)):void 0,_=Math.floor(1e3*(c.responseEnd-c.startTime));!function logNetworkRequest(e){const t=SettingsService.getInstance();if(!t.instrumentationEnabled)return;const c=e.url,g=t.logEndPointUrl.split("?")[0],I=t.flTransportEndpointUrl.split("?")[0];c!==g&&c!==I&&t.loggingEnabled&&t.logNetworkAfterSampling&&sendLog(e,0)}({performanceController:e,url:c.name&&c.name.split("?")[0],responsePayloadBytes:c.transferSize,startTimeUs:I,timeToResponseInitiatedUs:w,timeToResponseCompletedUs:_})}const pt=["_fp",De,Fe,Be,xe,qe];class Trace{constructor(e,t,c=!1,g){this.performanceController=e,this.name=t,this.isAuto=c,this.state=1,this.customAttributes={},this.counters={},this.api=Api.getInstance(),this.randomId=Math.floor(1e6*Math.random()),this.isAuto||(this.traceStartMark=`FB-PERF-TRACE-START-${this.randomId}-${this.name}`,this.traceStopMark=`FB-PERF-TRACE-STOP-${this.randomId}-${this.name}`,this.traceMeasure=g||`${Ne}-${this.randomId}-${this.name}`,g&&this.calculateTraceMetrics())}start(){if(1!==this.state)throw $e.create("trace started",{traceName:this.name});this.api.mark(this.traceStartMark),this.state=2}stop(){if(2!==this.state)throw $e.create("trace stopped",{traceName:this.name});this.state=3,this.api.mark(this.traceStopMark),this.api.measure(this.traceMeasure,this.traceStartMark,this.traceStopMark),this.calculateTraceMetrics(),logTrace(this)}record(e,t,c){if(e<=0)throw $e.create("nonpositive trace startTime",{traceName:this.name});if(t<=0)throw $e.create("nonpositive trace duration",{traceName:this.name});if(this.durationUs=Math.floor(1e3*t),this.startTimeUs=Math.floor(1e3*e),c&&c.attributes&&(this.customAttributes={...c.attributes}),c&&c.metrics)for(const e of Object.keys(c.metrics))isNaN(Number(c.metrics[e]))||(this.counters[e]=Math.floor(Number(c.metrics[e])));logTrace(this)}incrementMetric(e,t=1){void 0===this.counters[e]?this.putMetric(e,t):this.putMetric(e,this.counters[e]+t)}putMetric(e,t){if(!function isValidMetricName(e,t){return!(0===e.length||e.length>100)&&(t&&t.startsWith(Oe)&&pt.indexOf(e)>-1||!e.startsWith("_"))}(e,this.name))throw $e.create("invalid custom metric name",{customMetricName:e});this.counters[e]=function convertMetricValueToInteger(e){const t=Math.floor(e);return t<e&&He.info(`Metric value should be an Integer, setting the value as : ${t}.`),t}(t??0)}getMetric(e){return this.counters[e]||0}putAttribute(e,t){const c=function isValidCustomAttributeName(e){return!(0===e.length||e.length>40)&&(!Qe.some((t=>e.startsWith(t)))&&!!e.match(Ze))}(e),g=function isValidCustomAttributeValue(e){return 0!==e.length&&e.length<=100}(t);if(c&&g)this.customAttributes[e]=t;else{if(!c)throw $e.create("invalid attribute name",{attributeName:e});if(!g)throw $e.create("invalid attribute value",{attributeValue:t})}}getAttribute(e){return this.customAttributes[e]}removeAttribute(e){void 0!==this.customAttributes[e]&&delete this.customAttributes[e]}getAttributes(){return{...this.customAttributes}}setStartTime(e){this.startTimeUs=e}setDuration(e){this.durationUs=e}calculateTraceMetrics(){const e=this.api.getEntriesByName(this.traceMeasure),t=e&&e[0];t&&(this.durationUs=Math.floor(1e3*t.duration),this.startTimeUs=Math.floor(1e3*(t.startTime+this.api.getTimeOrigin())))}static createOobTrace(e,t,c,g,I){const w=Api.getInstance().getUrl();if(!w)return;const _=new Trace(e,Oe+w,!0),k=Math.floor(1e3*Api.getInstance().getTimeOrigin());_.setStartTime(k),t&&t[0]&&(_.setDuration(Math.floor(1e3*t[0].duration)),_.putMetric("domInteractive",Math.floor(1e3*t[0].domInteractive)),_.putMetric("domContentLoadedEventEnd",Math.floor(1e3*t[0].domContentLoadedEventEnd)),_.putMetric("loadEventEnd",Math.floor(1e3*t[0].loadEventEnd)));if(c){const e=c.find((e=>"first-paint"===e.name));e&&e.startTime&&_.putMetric("_fp",Math.floor(1e3*e.startTime));const t=c.find((e=>"first-contentful-paint"===e.name));t&&t.startTime&&_.putMetric(De,Math.floor(1e3*t.startTime)),I&&_.putMetric(Fe,Math.floor(1e3*I))}this.addWebVitalMetric(_,Be,"lcp_element",g.lcp),this.addWebVitalMetric(_,xe,"cls_largestShiftTarget",g.cls),this.addWebVitalMetric(_,qe,"inp_interactionTarget",g.inp),logTrace(_),function flushLogs(){ut&&ut.flush()}()}static addWebVitalMetric(e,t,c,g){g&&(e.putMetric(t,Math.floor(1e3*g.value)),g.elementAttribution&&(g.elementAttribution.length>100?e.putAttribute(c,g.elementAttribution.substring(0,100)):e.putAttribute(c,g.elementAttribution)))}static createUserTimingTrace(e,t){logTrace(new Trace(e,t,!1,t))}}let gt,mt={},ht=!1;function setupOobResources(e){getIid()&&(setTimeout((()=>function setupOobTraces(e){const t=Api.getInstance();"onpagehide"in window?t.document.addEventListener("pagehide",(()=>sendOobTrace(e))):t.document.addEventListener("unload",(()=>sendOobTrace(e)));t.document.addEventListener("visibilitychange",(()=>{"hidden"===t.document.visibilityState&&sendOobTrace(e)})),t.onFirstInputDelay&&t.onFirstInputDelay((e=>{gt=e}));t.onLCP((e=>{mt.lcp={value:e.value,elementAttribution:e.attribution?.element}})),t.onCLS((e=>{mt.cls={value:e.value,elementAttribution:e.attribution?.largestShiftTarget}})),t.onINP((e=>{mt.inp={value:e.value,elementAttribution:e.attribution?.interactionTarget}}))}(e)),0),setTimeout((()=>function setupNetworkRequests(e){const t=Api.getInstance(),c=t.getEntriesByType("resource");for(const t of c)createNetworkRequestEntry(e,t);t.setupObserver("resource",(t=>createNetworkRequestEntry(e,t)))}(e)),0),setTimeout((()=>function setupUserTimingTraces(e){const t=Api.getInstance(),c=t.getEntriesByType("measure");for(const t of c)createUserTimingTrace(e,t);t.setupObserver("measure",(t=>createUserTimingTrace(e,t)))}(e)),0))}function createUserTimingTrace(e,t){const c=t.name;c.substring(0,21)!==Ne&&Trace.createUserTimingTrace(e,c)}function sendOobTrace(e){if(!ht){ht=!0;const t=Api.getInstance(),c=t.getEntriesByType("navigation"),g=t.getEntriesByType("paint");setTimeout((()=>{Trace.createOobTrace(e,c,g,mt,gt)}),0)}}class PerformanceController{constructor(e,t){this.app=e,this.installations=t,this.initialized=!1}_init(e){this.initialized||(void 0!==e?.dataCollectionEnabled&&(this.dataCollectionEnabled=e.dataCollectionEnabled),void 0!==e?.instrumentationEnabled&&(this.instrumentationEnabled=e.instrumentationEnabled),Api.getInstance().requiredApisAvailable()?function validateIndexedDBOpenable(){return new Promise(((e,t)=>{try{let c=!0;const g="validate-browser-context-for-indexeddb-analytics-module",I=self.indexedDB.open(g);I.onsuccess=()=>{I.result.close(),c||self.indexedDB.deleteDatabase(g),e(!0)},I.onupgradeneeded=()=>{c=!1},I.onerror=()=>{t(I.error?.message||"")}}catch(e){t(e)}}))}().then((e=>{e&&(!function setupTransportService(){ft||(processQueue(5500),ft=!0)}(),getInitializationPromise(this).then((()=>setupOobResources(this)),(()=>setupOobResources(this))),this.initialized=!0)})).catch((e=>{He.info(`Environment doesn't support IndexedDB: ${e}`)})):He.info('Firebase Performance cannot start if the browser does not support "Fetch" and "Promise", or cookies are disabled.'))}set instrumentationEnabled(e){SettingsService.getInstance().instrumentationEnabled=e}get instrumentationEnabled(){return SettingsService.getInstance().instrumentationEnabled}set dataCollectionEnabled(e){SettingsService.getInstance().dataCollectionEnabled=e}get dataCollectionEnabled(){return SettingsService.getInstance().dataCollectionEnabled}}function getPerformance(e=c()){e=getModularInstance(e);return _getProvider(e,"performance").getImmediate()}function initializePerformance(e,t){e=getModularInstance(e);const c=_getProvider(e,"performance");if(c.isInitialized()){const e=c.getImmediate();if(deepEqual(c.getOptions(),t??{}))return e;throw $e.create("already initialized")}return c.initialize({options:t})}function trace(e,t){return e=getModularInstance(e),new Trace(e,t)}const factory=(e,{options:t})=>{const c=e.getProvider("app").getImmediate(),g=e.getProvider("installations-internal").getImmediate();if("[DEFAULT]"!==c.name)throw $e.create("FB not default");if("undefined"==typeof window)throw $e.create("no window");!function setupApi(e){We=e}(window);const I=new PerformanceController(c,g);return I._init(t),I};!function registerPerformance(){t(new Component("performance",factory,"PUBLIC")),e(Me,Pe),e(Me,Pe,"esm2020")}();export{getPerformance,initializePerformance,trace}; //# sourceMappingURL=firebase-performance.js.map