UNPKG

firebase

Version:

Firebase JavaScript library for web and Node.js

3 lines (2 loc) • 24.3 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("@firebase/app-compat"),require("@firebase/app")):"function"==typeof define&&define.amd?define(["@firebase/app-compat","@firebase/app"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).firebase,e.firebase.INTERNAL.modularAPIs)}(this,function(et,tt){"use strict";try{!(function(){function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t,n=e(et);(Ye=t=t||{})[Ye.DEBUG=0]="DEBUG",Ye[Ye.VERBOSE=1]="VERBOSE",Ye[Ye.INFO=2]="INFO",Ye[Ye.WARN=3]="WARN",Ye[Ye.ERROR=4]="ERROR",Ye[Ye.SILENT=5]="SILENT";const a={debug:t.DEBUG,verbose:t.VERBOSE,info:t.INFO,warn:t.WARN,error:t.ERROR,silent:t.SILENT},r=t.INFO,i={[t.DEBUG]:"log",[t.VERBOSE]:"log",[t.INFO]:"info",[t.WARN]:"warn",[t.ERROR]:"error"},o=(e,t,...n)=>{if(!(t<e.logLevel)){var a=(new Date).toISOString(),r=i[t];if(!r)throw new Error(`Attempted to log a message with an invalid logType (value: ${t})`);console[r](`[${a}] ${e.name}:`,...n)}};function s(){var e="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof e&&void 0!==e.id}function p(){return"object"==typeof indexedDB}function f(){return new Promise((t,n)=>{try{let e=!0;const a="validate-browser-context-for-indexeddb-analytics-module",r=self.indexedDB.open(a);r.onsuccess=()=>{r.result.close(),e||self.indexedDB.deleteDatabase(a),t(!0)},r.onupgradeneeded=()=>{e=!1},r.onerror=()=>{var e;n((null===(e=r.error)||void 0===e?void 0:e.message)||"")}}catch(e){n(e)}})}function c(){return!("undefined"==typeof navigator||!navigator.cookieEnabled)}class l extends Error{constructor(e,t,n){super(t),this.code=e,this.customData=n,this.name="FirebaseError",Object.setPrototypeOf(this,l.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,u.prototype.create)}}class u{constructor(e,t,n){this.service=e,this.serviceName=t,this.errors=n}create(e,...t){var a,n=t[0]||{},r=`${this.service}/${e}`,i=this.errors[e],i=i?(a=n,i.replace(d,(e,t)=>{var n=a[t];return null!=n?String(n):`<${t}?>`})):"Error",i=`${this.serviceName}: ${i} (${r}).`;return new l(r,i,n)}}const d=/\{\$([^}]+)}/g,h=1e3,g=2,m=144e5,w=.5;function v(e,t=h,n=g){var a=t*Math.pow(n,e),r=Math.round(w*a*(Math.random()-.5)*2);return Math.min(m,a+r)}function y(e){return e&&e._delegate?e._delegate:e}function I(e,a){return new Promise((t,n)=>{e.onsuccess=e=>{t(e.target.result)},e.onerror=e=>{var t;n(`${a}: ${null===(t=e.target.error)||void 0===t?void 0:t.message}`)}})}class b{constructor(e){this._db=e,this.objectStoreNames=this._db.objectStoreNames}transaction(e,t="readonly"){return new _(this._db.transaction.call(this._db,e,t))}createObjectStore(e,t){return new E(this._db.createObjectStore(e,t))}close(){this._db.close()}}class _{constructor(e){this._transaction=e,this.complete=new Promise((e,t)=>{this._transaction.oncomplete=function(){e()},this._transaction.onerror=()=>{t(this._transaction.error)},this._transaction.onabort=()=>{t(this._transaction.error)}})}objectStore(e){return new E(this._transaction.objectStore(e))}}class E{constructor(e){this._store=e}index(e){return new T(this._store.index(e))}createIndex(e,t,n){return new T(this._store.createIndex(e,t,n))}get(e){return I(this._store.get(e),"Error reading from IndexedDB")}put(e,t){return I(this._store.put(e,t),"Error writing to IndexedDB")}delete(e){return I(this._store.delete(e),"Error deleting from IndexedDB")}clear(){return I(this._store.clear(),"Error clearing IndexedDB object store")}}class T{constructor(e){this._index=e}get(e){return I(this._index.get(e),"Error reading from IndexedDB")}}class S{constructor(e,t,n){this.name=e,this.instanceFactory=t,this.type=n,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}}var C="@firebase/installations",O="0.5.8";const D=1e4,P=`w:${O}`,N="FIS_v2",A="https://firebaseinstallations.googleapis.com/v1",R=36e5;const $=new u("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 j(e){return e instanceof l&&e.code.includes("request-failed")}function L({projectId:e}){return`${A}/projects/${e}/installations`}function k(e){return{token:e.token,requestStatus:2,expiresIn:(e=e.expiresIn,Number(e.replace("s","000"))),creationTime:Date.now()}}async function M(e,t){var n=(await t.json()).error;return $.create("request-failed",{requestName:e,serverCode:n.code,serverMessage:n.message,serverStatus:n.status})}function x({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function H(e,{refreshToken:t}){const n=x(e);return n.append("Authorization",(t=t,`${N} ${t}`)),n}async function F(e){var t=await e();return 500<=t.status&&t.status<600?e():t}function B(t){return new Promise(e=>{setTimeout(e,t)})}const V=/^[cdef][\w-]{21}$/,q="";function U(){try{const t=new Uint8Array(17),n=self.crypto||self.msCrypto;n.getRandomValues(t),t[0]=112+t[0]%16;var e=function(e){const t=function(e){const t=btoa(String.fromCharCode(...e));return t.replace(/\+/g,"-").replace(/\//g,"_")}(e);return t.substr(0,22)}(t);return V.test(e)?e:q}catch(e){return q}}function G(e){return`${e.appName}!${e.appId}`}const W=new Map;function z(e,t){var n=G(e);K(n,t),function(e,t){const n=function(){!J&&"BroadcastChannel"in self&&(J=new BroadcastChannel("[Firebase] FID Change"),J.onmessage=e=>{K(e.data.key,e.data.fid)});return J}();n&&n.postMessage({key:e,fid:t});0===W.size&&J&&(J.close(),J=null)}(n,t)}function K(e,t){var n=W.get(e);if(n)for(const a of n)a(t)}let J=null;const Y="firebase-installations-store";let X=null;function Z(){var e,r,i;return X=X||(e="firebase-installations-database",r=1,i=(e,t)=>{0===t&&e.createObjectStore(Y)},new Promise((t,n)=>{try{const a=indexedDB.open(e,r);a.onsuccess=e=>{t(new b(e.target.result))},a.onerror=e=>{var t;n(`Error opening indexedDB: ${null===(t=e.target.error)||void 0===t?void 0:t.message}`)},a.onupgradeneeded=e=>{i(new b(a.result),e.oldVersion,e.newVersion,new _(a.transaction))}}catch(e){n(`Error opening indexedDB: ${e.message}`)}})),X}async function Q(e,t){var n=G(e);const a=await Z(),r=a.transaction(Y,"readwrite"),i=r.objectStore(Y);var o=await i.get(n);return await i.put(t,n),await r.complete,o&&o.fid===t.fid||z(e,t.fid),t}async function ee(e){var t=G(e);const n=await Z(),a=n.transaction(Y,"readwrite");await a.objectStore(Y).delete(t),await a.complete}async function te(e,t){var n=G(e);const a=await Z(),r=a.transaction(Y,"readwrite"),i=r.objectStore(Y);var o=await i.get(n),s=t(o);return void 0===s?await i.delete(n):await i.put(s,n),await r.complete,!s||o&&o.fid===s.fid||z(e,s.fid),s}async function ne(n){let a;var e=await te(n.appConfig,e=>{var t=re(e||{fid:U(),registrationStatus:0}),t=function(e,t){{if(0!==t.registrationStatus)return 1===t.registrationStatus?{installationEntry:t,registrationPromise:async function(e){let t=await ae(e.appConfig);for(;1===t.registrationStatus;)await B(100),t=await ae(e.appConfig);if(0!==t.registrationStatus)return t;{var{installationEntry:n,registrationPromise:a}=await ne(e);return a||n}}(e)}:{installationEntry:t};if(!navigator.onLine){var n=Promise.reject($.create("app-offline"));return{installationEntry:t,registrationPromise:n}}var a={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},n=async function(t,n){try{var e=await async function({appConfig:e,heartbeatServiceProvider:t},{fid:n}){const a=L(e),r=x(e),i=t.getImmediate({optional:!0});!i||(o=await i.getHeartbeatsHeader())&&r.append("x-firebase-client",o);var o={fid:n,authVersion:N,appId:e.appId,sdkVersion:P};const s={method:"POST",headers:r,body:JSON.stringify(o)},c=await F(()=>fetch(a,s));if(c.ok){o=await c.json();return{fid:o.fid||n,registrationStatus:2,refreshToken:o.refreshToken,authToken:k(o.authToken)}}throw await M("Create Installation",c)}(t,n);return Q(t.appConfig,e)}catch(e){throw j(e)&&409===e.customData.serverCode?await ee(t.appConfig):await Q(t.appConfig,{fid:n.fid,registrationStatus:0}),e}}(e,a);return{installationEntry:a,registrationPromise:n}}}(n,t);return a=t.registrationPromise,t.installationEntry});return e.fid===q?{installationEntry:await a}:{installationEntry:e,registrationPromise:a}}function ae(e){return te(e,e=>{if(!e)throw $.create("installation-not-found");return re(e)})}function re(e){return 1===(t=e).registrationStatus&&t.registrationTime+D<Date.now()?{fid:e.fid,registrationStatus:0}:e;var t}async function ie({appConfig:e,heartbeatServiceProvider:t},n){const a=([r,i]=[e,n["fid"]],`${L(r)}/${i}/authTokens:generate`);var r,i;const o=H(e,n),s=t.getImmediate({optional:!0});!s||(c=await s.getHeartbeatsHeader())&&o.append("x-firebase-client",c);var c={installation:{sdkVersion:P,appId:e.appId}};const l={method:"POST",headers:o,body:JSON.stringify(c)},u=await F(()=>fetch(a,l));if(u.ok)return k(await u.json());throw await M("Generate Auth Token",u)}async function oe(a,r=!1){let i;var e=await te(a.appConfig,e=>{if(!ce(e))throw $.create("not-registered");var t,n=e.authToken;if(r||2!==(t=n).requestStatus||function(e){var t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+R}(t)){if(1===n.requestStatus)return i=async function(e,t){let n=await se(e.appConfig);for(;1===n.authToken.requestStatus;)await B(100),n=await se(e.appConfig);var a=n.authToken;return 0===a.requestStatus?oe(e,t):a}(a,r),e;if(!navigator.onLine)throw $.create("app-offline");n=(t=e,n={requestStatus:1,requestTime:Date.now()},Object.assign(Object.assign({},t),{authToken:n}));return i=async function(t,n){try{var a=await ie(t,n),e=Object.assign(Object.assign({},n),{authToken:a});return await Q(t.appConfig,e),a}catch(e){throw!j(e)||401!==e.customData.serverCode&&404!==e.customData.serverCode?(a=Object.assign(Object.assign({},n),{authToken:{requestStatus:0}}),await Q(t.appConfig,a)):await ee(t.appConfig),e}}(a,n),n}return e});return i?await i:e.authToken}function se(e){return te(e,e=>{if(!ce(e))throw $.create("not-registered");var t,n=e.authToken;return 1===(t=n).requestStatus&&t.requestTime+D<Date.now()?Object.assign(Object.assign({},e),{authToken:{requestStatus:0}}):e})}function ce(e){return void 0!==e&&2===e.registrationStatus}async function le(e,t=!1){var n,a=e;return await((n=(await ne(a)).registrationPromise)&&await n),(await oe(a,t)).token}function ue(e){return $.create("missing-app-config-values",{valueName:e})}const de="installations",pe=e=>{var t=e.getProvider("app").getImmediate();return{app:t,appConfig:function(e){if(!e||!e.options)throw ue("App Configuration");if(!e.name)throw ue("App Name");for(const t of["projectId","apiKey","appId"])if(!e.options[t])throw ue(t);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t),heartbeatServiceProvider:tt._getProvider(t,"heartbeat"),_delete:()=>Promise.resolve()}},fe=e=>{var t=e.getProvider("app").getImmediate();const n=tt._getProvider(t,de).getImmediate();return{getId:()=>async function(e){var t=e;const{installationEntry:n,registrationPromise:a}=await ne(t);return(a||oe(t)).catch(console.error),n.fid}(n),getToken:e=>le(n,e)}};tt._registerComponent(new S(de,pe,"PUBLIC")),tt._registerComponent(new S("installations-internal",fe,"PRIVATE")),tt.registerVersion(C,O),tt.registerVersion(C,O,"esm2017");const he="analytics",ge="firebase_id",me="origin",we="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",ve="https://www.googletagmanager.com/gtag/js",ye=new class{constructor(e){this.name=e,this._logLevel=r,this._logHandler=o,this._userLogHandler=null}get logLevel(){return this._logLevel}set logLevel(e){if(!(e in t))throw new TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel="string"==typeof e?a[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,t.DEBUG,...e),this._logHandler(this,t.DEBUG,...e)}log(...e){this._userLogHandler&&this._userLogHandler(this,t.VERBOSE,...e),this._logHandler(this,t.VERBOSE,...e)}info(...e){this._userLogHandler&&this._userLogHandler(this,t.INFO,...e),this._logHandler(this,t.INFO,...e)}warn(...e){this._userLogHandler&&this._userLogHandler(this,t.WARN,...e),this._logHandler(this,t.WARN,...e)}error(...e){this._userLogHandler&&this._userLogHandler(this,t.ERROR,...e),this._logHandler(this,t.ERROR,...e)}}("@firebase/analytics");function Ie(e){return Promise.all(e.map(e=>e.catch(e=>e)))}function be(a,r,i,o){return async function(e,t,n){try{"event"===e?await async function(e,n,a,r,i){try{let t=[];if(i&&i.send_to){let e=i.send_to;Array.isArray(e)||(e=[e]);const c=await Ie(a);for(const l of e){var o=c.find(e=>e.measurementId===l),s=o&&n[o.appId];if(!s){t=[];break}t.push(s)}}0===t.length&&(t=Object.values(n)),await Promise.all(t),e("event",r,i||{})}catch(e){ye.error(e)}}(a,r,i,t,n):"config"===e?await async function(e,t,n,a,r,i){var o=a[r];try{if(o)await t[o];else{const c=await Ie(n);var s=c.find(e=>e.measurementId===r);s&&await t[s.appId]}}catch(e){ye.error(e)}e("config",r,i)}(a,r,i,o,t,n):a("set",t)}catch(e){ye.error(e)}}}const _e=new u("analytics","Analytics",{"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-intialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.'}),Ee=30;const Te=new class{constructor(e={},t=1e3){this.throttleMetadata=e,this.intervalMillis=t}getThrottleMetadata(e){return this.throttleMetadata[e]}setThrottleMetadata(e,t){this.throttleMetadata[e]=t}deleteThrottleMetadata(e){delete this.throttleMetadata[e]}};async function Se(e){var t,{appId:n,apiKey:a}=e,a={method:"GET",headers:new Headers({Accept:"application/json","x-goog-api-key":a})},n=we.replace("{app-id}",n);const r=await fetch(n,a);if(200===r.status||304===r.status)return r.json();{let e="";try{var i=await r.json();null!==(t=i.error)&&void 0!==t&&t.message&&(e=i.error.message)}catch(e){}throw _e.create("config-fetch-failed",{httpStatus:r.status,responseMessage:e})}}async function Ce(e,t=Te,n){var{appId:a,apiKey:r,measurementId:i}=e.options;if(!a)throw _e.create("no-app-id");if(!r){if(i)return{measurementId:i,appId:a};throw _e.create("no-api-key")}var o=t.getThrottleMetadata(a)||{backoffCount:0,throttleEndTimeMillis:Date.now()};const s=new Pe;return setTimeout(async()=>{s.abort()},void 0!==n?n:6e4),async function t(n,{throttleEndTimeMillis:e,backoffCount:a},r,i=Te){const{appId:o,measurementId:s}=n;try{await Oe(r,e)}catch(e){if(s)return ye.warn("Timed out fetching this Firebase app's measurement ID from the server."+` Falling back to the measurement ID ${s}`+` provided in the "measurementId" field in the local Firebase config. [${e.message}]`),{appId:o,measurementId:s};throw e}try{const c=await Se(n);return i.deleteThrottleMetadata(o),c}catch(e){if(!De(e)){if(i.deleteThrottleMetadata(o),s)return ye.warn("Failed to fetch this Firebase app's measurement ID from the server."+` Falling back to the measurement ID ${s}`+` provided in the "measurementId" field in the local Firebase config. [${e.message}]`),{appId:o,measurementId:s};throw e}const l=503===Number(e.customData.httpStatus)?v(a,i.intervalMillis,Ee):v(a,i.intervalMillis),u={throttleEndTimeMillis:Date.now()+l,backoffCount:a+1};return i.setThrottleMetadata(o,u),ye.debug(`Calling attemptFetch again in ${l} millis`),t(n,u,r,i)}}({appId:a,apiKey:r,measurementId:i},o,s,t)}function Oe(r,i){return new Promise((e,t)=>{var n=Math.max(i-Date.now(),0);const a=setTimeout(e,n);r.addEventListener(()=>{clearTimeout(a),t(_e.create("fetch-throttle",{throttleEndTimeMillis:i}))})})}function De(e){if(!(e instanceof l&&e.customData))return!1;var t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}class Pe{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}async function Ne(t,e,n,a,r,i,o){const s=Ce(t);s.then(e=>{n[e.measurementId]=e.appId,t.options.measurementId&&e.measurementId!==t.options.measurementId&&ye.warn(`The measurement ID in the local Firebase config (${t.options.measurementId})`+` does not match the measurement ID fetched from the server (${e.measurementId}).`+" To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.")}).catch(e=>ye.error(e)),e.push(s);var c=async function(){if(!p())return ye.warn(_e.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await f()}catch(e){return ye.warn(_e.create("indexeddb-unavailable",{errorInfo:e}).message),!1}return!0}().then(e=>{if(e)return a.getId()}),[l,u]=await Promise.all([s,c]);!function(){var e=window.document.getElementsByTagName("script");for(const t of Object.values(e))if(t.src&&t.src.includes(ve))return t}()&&function(e,t){const n=document.createElement("script");n.src=`${ve}?l=${e}&id=${t}`,n.async=!0,document.head.appendChild(n)}(i,l.measurementId),r("js",new Date);const d=null!==(c=null==o?void 0:o.config)&&void 0!==c?c:{};return d[me]="firebase",d.update=!0,null!=u&&(d[ge]=u),r("config",l.measurementId,d),l.measurementId}class Ae{constructor(e){this.app=e}_delete(){return delete Re[this.app.options.appId],Promise.resolve()}}let Re={},$e=[];const je={};let Le="dataLayer",ke="gtag",Me,xe,He=!1;function Fe(e){if(He)throw _e.create("already-initialized");e.dataLayerName&&(Le=e.dataLayerName),e.gtagName&&(ke=e.gtagName)}function Be(e,t,n){!function(){const e=[];var t;s()&&e.push("This is a browser extension environment."),c()||e.push("Cookies are not available."),0<e.length&&(t=e.map((e,t)=>`(${t+1}) ${e}`).join(" "),t=_e.create("invalid-analytics-context",{errorInfo:t}),ye.warn(t.message))}();var a,r,i=e.options.appId;if(!i)throw _e.create("no-app-id");if(!e.options.apiKey){if(!e.options.measurementId)throw _e.create("no-api-key");ye.warn('The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest'+` measurement ID for this Firebase app. Falling back to the measurement ID ${e.options.measurementId}`+' provided in the "measurementId" field in the local Firebase config.')}if(null!=Re[i])throw _e.create("already-exists",{id:i});return He||(function(e){let t=[];Array.isArray(window[e])?t=window[e]:window[e]=t,t}(Le),{wrappedGtag:a,gtagCore:r}=function(e,t,n,a,r){let i=function(){window[a].push(arguments)};return window[r]&&"function"==typeof window[r]&&(i=window[r]),window[r]=be(i,e,t,n),{gtagCore:i,wrappedGtag:window[r]}}(Re,$e,je,Le,ke),xe=a,Me=r,He=!0),Re[i]=Ne(e,$e,je,t,Me,Le,n),new Ae(e)}async function Ve(){if(s())return!1;if(!c())return!1;if(!p())return!1;try{return await f()}catch(e){return!1}}function qe(e,t,n){e=y(e),async function(e,t,n,a){if(a&&a.global)return e("set",{screen_name:n}),Promise.resolve();e("config",await t,{update:!0,screen_name:n})}(xe,Re[e.app.options.appId],t,n).catch(e=>ye.error(e))}function Ue(e,t,n){e=y(e),async function(e,t,n,a){if(a&&a.global)return e("set",{user_id:n}),Promise.resolve();e("config",await t,{update:!0,user_id:n})}(xe,Re[e.app.options.appId],t,n).catch(e=>ye.error(e))}function Ge(e,t,n){e=y(e),async function(e,t,n,a){if(a&&a.global){const r={};for(const i of Object.keys(n))r[`user_properties.${i}`]=n[i];return e("set",r),Promise.resolve()}e("config",await t,{update:!0,user_properties:n})}(xe,Re[e.app.options.appId],t,n).catch(e=>ye.error(e))}function We(e,t){e=y(e),async function(e,t){var n=await e;window[`ga-disable-${n}`]=!t}(Re[e.app.options.appId],t).catch(e=>ye.error(e))}function ze(e,t,n,a){e=y(e),async function(e,t,n,a,r){var i;r&&r.global?e("event",n,a):(i=await t,e("event",n,Object.assign(Object.assign({},a),{send_to:i})))}(xe,Re[e.app.options.appId],t,n,a).catch(e=>ye.error(e))}const Ke="@firebase/analytics";tt._registerComponent(new S(he,(e,{options:t})=>{return Be(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),t)},"PUBLIC")),tt._registerComponent(new S("analytics-internal",function(e){try{const a=e.getProvider(he).getImmediate();return{logEvent:(e,t,n)=>ze(a,e,t,n)}}catch(e){throw _e.create("interop-component-reg-failed",{reason:e})}},"PRIVATE")),tt.registerVersion(Ke,"0.7.8"),tt.registerVersion(Ke,"0.7.8","esm2017");var Je,Ye,Xe;class Ze{constructor(e,t){this.app=e,this._delegate=t}logEvent(e,t,n){ze(this._delegate,e,t,n)}setCurrentScreen(e,t){qe(this._delegate,e,t)}setUserId(e,t){Ue(this._delegate,e,t)}setUserProperties(e,t){Ge(this._delegate,e,t)}setAnalyticsCollectionEnabled(e){We(this._delegate,e)}}(Ye=Je=Je||{}).ADD_SHIPPING_INFO="add_shipping_info",Ye.ADD_PAYMENT_INFO="add_payment_info",Ye.ADD_TO_CART="add_to_cart",Ye.ADD_TO_WISHLIST="add_to_wishlist",Ye.BEGIN_CHECKOUT="begin_checkout",Ye.CHECKOUT_PROGRESS="checkout_progress",Ye.EXCEPTION="exception",Ye.GENERATE_LEAD="generate_lead",Ye.LOGIN="login",Ye.PAGE_VIEW="page_view",Ye.PURCHASE="purchase",Ye.REFUND="refund",Ye.REMOVE_FROM_CART="remove_from_cart",Ye.SCREEN_VIEW="screen_view",Ye.SEARCH="search",Ye.SELECT_CONTENT="select_content",Ye.SELECT_ITEM="select_item",Ye.SELECT_PROMOTION="select_promotion",Ye.SET_CHECKOUT_OPTION="set_checkout_option",Ye.SHARE="share",Ye.SIGN_UP="sign_up",Ye.TIMING_COMPLETE="timing_complete",Ye.VIEW_CART="view_cart",Ye.VIEW_ITEM="view_item",Ye.VIEW_ITEM_LIST="view_item_list",Ye.VIEW_PROMOTION="view_promotion",Ye.VIEW_SEARCH_RESULTS="view_search_results";const Qe=e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("analytics").getImmediate();return new Ze(t,n)};Xe={Analytics:Ze,settings:Fe,isSupported:Ve,EventName:Je},n.default.INTERNAL.registerComponent(new S("analytics-compat",Qe,"PUBLIC").setServiceProps(Xe).setMultipleInstances(!0)),n.default.registerVersion("@firebase/analytics-compat","0.1.9")}).apply(this,arguments)}catch(e){throw console.error(e),new Error("Cannot instantiate firebase-analytics-compat.js - be sure to load firebase-app.js first.")}}); //# sourceMappingURL=firebase-analytics-compat.js.map