UNPKG

firebase

Version:

Firebase JavaScript library for web and Node.js

3 lines (2 loc) • 37.8 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(e,t){"use strict";try{(function(){function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(e),o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function r(){return new Promise((function(e,t){try{var n=!0,i="validate-browser-context-for-indexeddb-analytics-module",o=self.indexedDB.open(i);o.onsuccess=function(){o.result.close(),n||self.indexedDB.deleteDatabase(i),e(!0)},o.onupgradeneeded=function(){n=!1},o.onerror=function(){var e;t((null===(e=o.error)||void 0===e?void 0:e.message)||"")}}catch(e){t(e)}}))}var a=function(e){function t(n,i,o){var r=e.call(this,i)||this;return r.code=n,r.customData=o,r.name="FirebaseError",Object.setPrototypeOf(r,t.prototype),Error.captureStackTrace&&Error.captureStackTrace(r,s.prototype.create),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(t,e),t}(Error),s=function(){function e(e,t,n){this.service=e,this.serviceName=t,this.errors=n}return e.prototype.create=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var i=t[0]||{},o=this.service+"/"+e,r=this.errors[e],s=r?c(r,i):"Error",u=this.serviceName+": "+s+" ("+o+").",p=new a(o,u,i);return p},e}();function c(e,t){return e.replace(u,(function(e,n){var i=t[n];return null!=i?String(i):"<"+n+"?>"}))}var u=/\{\$([^}]+)}/g;function p(e){return e&&e._delegate?e._delegate:e}var d=function(){function e(e,t,n){this.name=e,this.instanceFactory=t,this.type=n,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}return e.prototype.setInstantiationMode=function(e){return this.instantiationMode=e,this},e.prototype.setMultipleInstances=function(e){return this.multipleInstances=e,this},e.prototype.setServiceProps=function(e){return this.serviceProps=e,this},e.prototype.setInstanceCreatedCallback=function(e){return this.onInstanceCreated=e,this},e}();function f(e){return Array.prototype.slice.call(e)}function l(e){return new Promise((function(t,n){e.onsuccess=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function g(e,t,n){var i,o=new Promise((function(o,r){l(i=e[t].apply(e,n)).then(o,r)}));return o.request=i,o}function h(e,t,n){var i=g(e,t,n);return i.then((function(e){if(e)return new k(e,i.request)}))}function w(e,t,n){n.forEach((function(n){Object.defineProperty(e.prototype,n,{get:function(){return this[t][n]},set:function(e){this[t][n]=e}})}))}function y(e,t,n,i){i.forEach((function(i){i in n.prototype&&(e.prototype[i]=function(){return g(this[t],i,arguments)})}))}function b(e,t,n,i){i.forEach((function(i){i in n.prototype&&(e.prototype[i]=function(){return this[t][i].apply(this[t],arguments)})}))}function m(e,t,n,i){i.forEach((function(i){i in n.prototype&&(e.prototype[i]=function(){return h(this[t],i,arguments)})}))}function v(e){this._index=e}function k(e,t){this._cursor=e,this._request=t}function I(e){this._store=e}function S(e){this._tx=e,this.complete=new Promise((function(t,n){e.oncomplete=function(){t()},e.onerror=function(){n(e.error)},e.onabort=function(){n(e.error)}}))}function T(e,t,n){this._db=e,this.oldVersion=t,this.transaction=new S(n)}function _(e){this._db=e}function C(e,t,n){var i=g(indexedDB,"open",[e,t]),o=i.request;return o&&(o.onupgradeneeded=function(e){n&&n(new T(o.result,e.oldVersion,o.transaction))}),i.then((function(e){return new _(e)}))}function j(e){return g(indexedDB,"deleteDatabase",[e])}w(v,"_index",["name","keyPath","multiEntry","unique"]),y(v,"_index",IDBIndex,["get","getKey","getAll","getAllKeys","count"]),m(v,"_index",IDBIndex,["openCursor","openKeyCursor"]),w(k,"_cursor",["direction","key","primaryKey","value"]),y(k,"_cursor",IDBCursor,["update","delete"]),["advance","continue","continuePrimaryKey"].forEach((function(e){e in IDBCursor.prototype&&(k.prototype[e]=function(){var t=this,n=arguments;return Promise.resolve().then((function(){return t._cursor[e].apply(t._cursor,n),l(t._request).then((function(e){if(e)return new k(e,t._request)}))}))})})),I.prototype.createIndex=function(){return new v(this._store.createIndex.apply(this._store,arguments))},I.prototype.index=function(){return new v(this._store.index.apply(this._store,arguments))},w(I,"_store",["name","keyPath","indexNames","autoIncrement"]),y(I,"_store",IDBObjectStore,["put","add","delete","clear","get","getAll","getKey","getAllKeys","count"]),m(I,"_store",IDBObjectStore,["openCursor","openKeyCursor"]),b(I,"_store",IDBObjectStore,["deleteIndex"]),S.prototype.objectStore=function(){return new I(this._tx.objectStore.apply(this._tx,arguments))},w(S,"_tx",["objectStoreNames","mode"]),b(S,"_tx",IDBTransaction,["abort"]),T.prototype.createObjectStore=function(){return new I(this._db.createObjectStore.apply(this._db,arguments))},w(T,"_db",["name","version","objectStoreNames"]),b(T,"_db",IDBDatabase,["deleteObjectStore","close"]),_.prototype.transaction=function(){return new S(this._db.transaction.apply(this._db,arguments))},w(_,"_db",["name","version","objectStoreNames"]),b(_,"_db",IDBDatabase,["close"]),["openCursor","openKeyCursor"].forEach((function(e){[I,v].forEach((function(t){e in t.prototype&&(t.prototype[e.replace("open","iterate")]=function(){var t=f(arguments),n=t[t.length-1],i=this._store||this._index,o=i[e].apply(i,t.slice(0,-1));o.onsuccess=function(){n(o.result)}})}))})),[v,I].forEach((function(e){e.prototype.getAll||(e.prototype.getAll=function(e,t){var n=this,i=[];return new Promise((function(o){n.iterateCursor(e,(function(e){e?(i.push(e.value),void 0===t||i.length!=t?e.continue():o(i)):o(i)}))}))})}));const D="0.0.900-exp.6ef484a04",P=1e4,O=`w:${D}`,x="FIS_v2",K=36e5,M=new s("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 E(e){return e instanceof a&&e.code.includes("request-failed")}function A({projectId:e}){return`https://firebaseinstallations.googleapis.com/v1/projects/${e}/installations`}function N(e){return{token:e.token,requestStatus:2,expiresIn:(t=e.expiresIn,Number(t.replace("s","000"))),creationTime:Date.now()};var t}async function B(e,t){const n=(await t.json()).error;return M.create("request-failed",{requestName:e,serverCode:n.code,serverMessage:n.message,serverStatus:n.status})}function $({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function q(e,{refreshToken:t}){const n=$(e);return n.append("Authorization",function(e){return`FIS_v2 ${e}`}(t)),n}async function F(e){const t=await e();return t.status>=500&&t.status<600?e():t}function V(e){return new Promise((t=>{setTimeout(t,e)}))}const H=/^[cdef][\w-]{21}$/;function R(){try{const e=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16;const t=function(e){return(t=e,btoa(String.fromCharCode(...t)).replace(/\+/g,"-").replace(/\//g,"_")).substr(0,22);var t}(e);return H.test(t)?t:""}catch(e){return""}}function L(e){return`${e.appName}!${e.appId}`}const U=new Map;function W(e,t){const n=L(e);J(n,t),function(e,t){const n=function(){!G&&"BroadcastChannel"in self&&(G=new BroadcastChannel("[Firebase] FID Change"),G.onmessage=e=>{J(e.data.key,e.data.fid)});return G}();n&&n.postMessage({key:e,fid:t});0===U.size&&G&&(G.close(),G=null)}(n,t)}function J(e,t){const n=U.get(e);if(n)for(const e of n)e(t)}let G=null;const z="firebase-installations-store";let Y=null;function Z(){return Y||(Y=C("firebase-installations-database",1,(e=>{switch(e.oldVersion){case 0:e.createObjectStore(z)}}))),Y}async function Q(e,t){const n=L(e),i=(await Z()).transaction(z,"readwrite"),o=i.objectStore(z),r=await o.get(n);return await o.put(t,n),await i.complete,r&&r.fid===t.fid||W(e,t.fid),t}async function X(e){const t=L(e),n=(await Z()).transaction(z,"readwrite");await n.objectStore(z).delete(t),await n.complete}async function ee(e,t){const n=L(e),i=(await Z()).transaction(z,"readwrite"),o=i.objectStore(z),r=await o.get(n),a=t(r);return void 0===a?await o.delete(n):await o.put(a,n),await i.complete,!a||r&&r.fid===a.fid||W(e,a.fid),a}async function te(e){let t;const n=await ee(e,(n=>{const i=function(e){return oe(e||{fid:R(),registrationStatus:0})}(n),o=function(e,t){if(0===t.registrationStatus){if(!navigator.onLine){return{installationEntry:t,registrationPromise:Promise.reject(M.create("app-offline"))}}const n={fid:t.fid,registrationStatus:1,registrationTime:Date.now()};return{installationEntry:n,registrationPromise:async function(e,t){try{return Q(e,await async function(e,{fid:t}){const n=A(e),i=$(e),o={fid:t,authVersion:x,appId:e.appId,sdkVersion:O},r={method:"POST",headers:i,body:JSON.stringify(o)},a=await F((()=>fetch(n,r)));if(a.ok){const e=await a.json();return{fid:e.fid||t,registrationStatus:2,refreshToken:e.refreshToken,authToken:N(e.authToken)}}throw await B("Create Installation",a)}(e,t))}catch(n){throw E(n)&&409===n.customData.serverCode?await X(e):await Q(e,{fid:t.fid,registrationStatus:0}),n}}(e,n)}}return 1===t.registrationStatus?{installationEntry:t,registrationPromise:ne(e)}:{installationEntry:t}}(e,i);return t=o.registrationPromise,o.installationEntry}));return""===n.fid?{installationEntry:await t}:{installationEntry:n,registrationPromise:t}}async function ne(e){let t=await ie(e);for(;1===t.registrationStatus;)await V(100),t=await ie(e);if(0===t.registrationStatus){const{installationEntry:t,registrationPromise:n}=await te(e);return n||t}return t}function ie(e){return ee(e,(e=>{if(!e)throw M.create("installation-not-found");return oe(e)}))}function oe(e){return 1===(t=e).registrationStatus&&t.registrationTime+P<Date.now()?{fid:e.fid,registrationStatus:0}:e;var t}async function re({appConfig:e,platformLoggerProvider:t},n){const i=function(e,{fid:t}){return`${A(e)}/${t}/authTokens:generate`}(e,n),o=q(e,n),r=t.getImmediate({optional:!0});r&&o.append("x-firebase-client",r.getPlatformInfoString());const a={installation:{sdkVersion:O}},s={method:"POST",headers:o,body:JSON.stringify(a)},c=await F((()=>fetch(i,s)));if(c.ok){return N(await c.json())}throw await B("Generate Auth Token",c)}async function ae(e,t=!1){let n;const i=await ee(e.appConfig,(i=>{if(!ce(i))throw M.create("not-registered");const o=i.authToken;if(!t&&function(e){return 2===e.requestStatus&&!function(e){const t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+K}(e)}(o))return i;if(1===o.requestStatus)return n=async function(e,t){let n=await se(e.appConfig);for(;1===n.authToken.requestStatus;)await V(100),n=await se(e.appConfig);const i=n.authToken;return 0===i.requestStatus?ae(e,t):i}(e,t),i;{if(!navigator.onLine)throw M.create("app-offline");const t=function(e){const t={requestStatus:1,requestTime:Date.now()};return Object.assign(Object.assign({},e),{authToken:t})}(i);return n=async function(e,t){try{const n=await re(e,t),i=Object.assign(Object.assign({},t),{authToken:n});return await Q(e.appConfig,i),n}catch(n){if(!E(n)||401!==n.customData.serverCode&&404!==n.customData.serverCode){const n=Object.assign(Object.assign({},t),{authToken:{requestStatus:0}});await Q(e.appConfig,n)}else await X(e.appConfig);throw n}}(e,t),t}}));return n?await n:i.authToken}function se(e){return ee(e,(e=>{if(!ce(e))throw M.create("not-registered");const t=e.authToken;return 1===(n=t).requestStatus&&n.requestTime+P<Date.now()?Object.assign(Object.assign({},e),{authToken:{requestStatus:0}}):e;var n}))}function ce(e){return void 0!==e&&2===e.registrationStatus}async function ue(e,t=!1){const n=e;await async function(e){const{registrationPromise:t}=await te(e);t&&await t}(n.appConfig);return(await ae(n,t)).token}function pe(e){return M.create("missing-app-config-values",{valueName:e})}const de="installations-exp",fe=e=>{const n=e.getProvider("app-exp").getImmediate();return{app:n,appConfig:function(e){if(!e||!e.options)throw pe("App Configuration");if(!e.name)throw pe("App Name");const t=["projectId","apiKey","appId"];for(const n of t)if(!e.options[n])throw pe(n);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(n),platformLoggerProvider:t._getProvider(n,"platform-logger"),_delete:()=>Promise.resolve()}},le=e=>{const n=e.getProvider("app-exp").getImmediate(),i=t._getProvider(n,de).getImmediate();return{getId:()=>async function(e){const t=e,{installationEntry:n,registrationPromise:i}=await te(t.appConfig);return i?i.catch(console.error):ae(t).catch(console.error),n.fid}(i),getToken:e=>ue(i,e)}};t._registerComponent(new d(de,fe,"PUBLIC")),t._registerComponent(new d("installations-exp-internal",le,"PRIVATE")),t.registerVersion("@firebase/installations-exp",D);const ge=new s("messaging","Messaging",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"only-available-in-window":"This method is available in a Window context.","only-available-in-sw":"This method is available in a service worker context.","permission-default":"The notification permission was not granted and dismissed instead.","permission-blocked":"The notification permission was not granted and blocked instead.","unsupported-browser":"This browser doesn't support the API's required to use the firebase SDK.","indexed-db-unsupported":"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)","failed-service-worker-registration":"We are unable to register the default service worker. {$browserErrorMessage}","token-subscribe-failed":"A problem occurred while subscribing the user to FCM: {$errorInfo}","token-subscribe-no-token":"FCM returned no token when subscribing the user to push.","token-unsubscribe-failed":"A problem occurred while unsubscribing the user from FCM: {$errorInfo}","token-update-failed":"A problem occurred while updating the user from FCM: {$errorInfo}","token-update-no-token":"FCM returned no token when updating the user to push.","use-sw-after-get-token":"The useServiceWorker() method may only be called once and must be called before calling getToken() to ensure your service worker is used.","invalid-sw-registration":"The input to useServiceWorker() must be a ServiceWorkerRegistration.","invalid-bg-handler":"The input to setBackgroundMessageHandler() must be a function.","invalid-vapid-key":"The public VAPID key must be a string.","use-vapid-key-after-get-token":"The usePublicVapidKey() method may only be called once and must be called before calling getToken() to ensure your VAPID key is used."});const he="BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4",we="google.c.a.c_id";var ye;function be(e){const t=new Uint8Array(e);return btoa(String.fromCharCode(...t)).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function me(e){const t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),n=atob(t),i=new Uint8Array(n.length);for(let e=0;e<n.length;++e)i[e]=n.charCodeAt(e);return i}!function(e){e.PUSH_RECEIVED="push-received",e.NOTIFICATION_CLICKED="notification-clicked"}(ye||(ye={}));const ve="fcm_token_details_db",ke="fcm_token_object_Store";const Ie="firebase-messaging-store";let Se=null;function Te(){return Se||(Se=C("firebase-messaging-database",1,(e=>{switch(e.oldVersion){case 0:e.createObjectStore(Ie)}}))),Se}async function _e(e){const t=je(e),n=await Te(),i=await n.transaction(Ie).objectStore(Ie).get(t);if(i)return i;{const t=await async function(e){if("databases"in indexedDB&&!(await indexedDB.databases()).map((e=>e.name)).includes(ve))return null;let t=null;return(await C(ve,5,(async n=>{var i;if(n.oldVersion<2)return;if(!n.objectStoreNames.contains(ke))return;const o=n.transaction.objectStore(ke),r=await o.index("fcmSenderId").get(e);if(await o.clear(),r)if(2===n.oldVersion){const e=r;if(!e.auth||!e.p256dh||!e.endpoint)return;t={token:e.fcmToken,createTime:null!==(i=e.createTime)&&void 0!==i?i:Date.now(),subscriptionOptions:{auth:e.auth,p256dh:e.p256dh,endpoint:e.endpoint,swScope:e.swScope,vapidKey:"string"==typeof e.vapidKey?e.vapidKey:be(e.vapidKey)}}}else if(3===n.oldVersion){const e=r;t={token:e.fcmToken,createTime:e.createTime,subscriptionOptions:{auth:be(e.auth),p256dh:be(e.p256dh),endpoint:e.endpoint,swScope:e.swScope,vapidKey:be(e.vapidKey)}}}else if(4===n.oldVersion){const e=r;t={token:e.fcmToken,createTime:e.createTime,subscriptionOptions:{auth:be(e.auth),p256dh:be(e.p256dh),endpoint:e.endpoint,swScope:e.swScope,vapidKey:be(e.vapidKey)}}}}))).close(),await j(ve),await j("fcm_vapid_details_db"),await j("undefined"),function(e){if(!e||!e.subscriptionOptions)return!1;const{subscriptionOptions:t}=e;return"number"==typeof e.createTime&&e.createTime>0&&"string"==typeof e.token&&e.token.length>0&&"string"==typeof t.auth&&t.auth.length>0&&"string"==typeof t.p256dh&&t.p256dh.length>0&&"string"==typeof t.endpoint&&t.endpoint.length>0&&"string"==typeof t.swScope&&t.swScope.length>0&&"string"==typeof t.vapidKey&&t.vapidKey.length>0}(t)?t:null}(e.appConfig.senderId);if(t)return await Ce(e,t),t}}async function Ce(e,t){const n=je(e),i=(await Te()).transaction(Ie,"readwrite");return await i.objectStore(Ie).put(t,n),await i.complete,t}function je({appConfig:e}){return e.appId}async function De(e,t){const n={method:"DELETE",headers:await Oe(e)};try{const i=await fetch(`${Pe(e.appConfig)}/${t}`,n),o=await i.json();if(o.error){const e=o.error.message;throw ge.create("token-unsubscribe-failed",{errorInfo:e})}}catch(e){throw ge.create("token-unsubscribe-failed",{errorInfo:e})}}function Pe({projectId:e}){return`https://fcmregistrations.googleapis.com/v1/projects/${e}/registrations`}async function Oe({appConfig:e,installations:t}){const n=await t.getToken();return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e.apiKey,"x-goog-firebase-installations-auth":`FIS ${n}`})}function xe({p256dh:e,auth:t,endpoint:n,vapidKey:i}){const o={web:{endpoint:n,auth:t,p256dh:e}};return i!==he&&(o.web.applicationPubKey=i),o}async function Ke(e){const t=await async function(e,t){const n=await e.pushManager.getSubscription();if(n)return n;return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:me(t)})}(e.swRegistration,e.vapidKey),n={vapidKey:e.vapidKey,swScope:e.swRegistration.scope,endpoint:t.endpoint,auth:be(t.getKey("auth")),p256dh:be(t.getKey("p256dh"))},i=await _e(e.firebaseDependencies);if(i){if(function(e,t){const n=t.vapidKey===e.vapidKey,i=t.endpoint===e.endpoint,o=t.auth===e.auth,r=t.p256dh===e.p256dh;return n&&i&&o&&r}(i.subscriptionOptions,n))return Date.now()>=i.createTime+6048e5?async function(e,t){try{const n=await async function(e,t){const n=await Oe(e),i=xe(t.subscriptionOptions),o={method:"PATCH",headers:n,body:JSON.stringify(i)};let r;try{const n=await fetch(`${Pe(e.appConfig)}/${t.token}`,o);r=await n.json()}catch(e){throw ge.create("token-update-failed",{errorInfo:e})}if(r.error){const e=r.error.message;throw ge.create("token-update-failed",{errorInfo:e})}if(!r.token)throw ge.create("token-update-no-token");return r.token}(e.firebaseDependencies,t),i=Object.assign(Object.assign({},t),{token:n,createTime:Date.now()});return await Ce(e.firebaseDependencies,i),n}catch(t){throw await Me(e),t}}(e,{token:i.token,createTime:Date.now(),subscriptionOptions:n}):i.token;try{await De(e.firebaseDependencies,i.token)}catch(e){console.warn(e)}return Ee(e.firebaseDependencies,n)}return Ee(e.firebaseDependencies,n)}async function Me(e){const t=await _e(e.firebaseDependencies);t&&(await De(e.firebaseDependencies,t.token),await async function(e){const t=je(e),n=(await Te()).transaction(Ie,"readwrite");await n.objectStore(Ie).delete(t),await n.complete}(e.firebaseDependencies));const n=await e.swRegistration.pushManager.getSubscription();return!n||n.unsubscribe()}async function Ee(e,t){const n={token:await async function(e,t){const n=await Oe(e),i=xe(t),o={method:"POST",headers:n,body:JSON.stringify(i)};let r;try{const t=await fetch(Pe(e.appConfig),o);r=await t.json()}catch(e){throw ge.create("token-subscribe-failed",{errorInfo:e})}if(r.error){const e=r.error.message;throw ge.create("token-subscribe-failed",{errorInfo:e})}if(!r.token)throw ge.create("token-subscribe-no-token");return r.token}(e,t),createTime:Date.now(),subscriptionOptions:t};return await Ce(e,n),n.token}function Ae(e){const t={from:e.from,collapseKey:e.collapse_key};return function(e,t){if(!t.notification)return;e.notification={};const n=t.notification.title;n&&(e.notification.title=n);const i=t.notification.body;i&&(e.notification.body=i);const o=t.notification.image;o&&(e.notification.image=o)}(t,e),function(e,t){if(!t.data)return;e.data=t.data}(t,e),function(e,t){if(!t.fcmOptions)return;e.fcmOptions={};const n=t.fcmOptions.link;n&&(e.fcmOptions.link=n);const i=t.fcmOptions.analytics_label;i&&(e.fcmOptions.analyticsLabel=i)}(t,e),t}function Ne(e){return ge.create("missing-app-config-values",{valueName:e})}class Be{constructor(e,t,n){this.onBackgroundMessageHandler=null,this.onMessageHandler=null;const i=function(e){if(!e||!e.options)throw Ne("App Configuration Object");if(!e.name)throw Ne("App Name");const t=["projectId","apiKey","appId","messagingSenderId"],{options:n}=e;for(const e of t)if(!n[e])throw Ne(e);return{appName:e.name,projectId:n.projectId,apiKey:n.apiKey,appId:n.appId,senderId:n.messagingSenderId}}(e);this.firebaseDependencies={app:e,appConfig:i,installations:t,analyticsProvider:n}}_delete(){return Promise.resolve()}}async function $e(e,t,n){const i=function(e){switch(e){case ye.NOTIFICATION_CLICKED:return"notification_open";case ye.PUSH_RECEIVED:return"notification_foreground";default:throw new Error}}(t);(await e.firebaseDependencies.analyticsProvider.get()).logEvent(i,{message_id:n["google.c.a.c_id"],message_name:n["google.c.a.c_l"],message_time:n["google.c.a.ts"],message_device_time:Math.floor(Date.now()/1e3)})}async function qe(e,t){const n=t.data;if(!n.isFirebaseMessaging)return;e.onMessageHandler&&n.messageType===ye.PUSH_RECEIVED&&("function"==typeof e.onMessageHandler?e.onMessageHandler(Ae(n)):e.onMessageHandler.next(Ae(n)));const i=n.data;var o;"object"==typeof(o=i)&&o&&we in o&&"1"===i["google.c.a.e"]&&await $e(e,n.messageType,i)}const Fe=e=>{(async function(){return await r()&&"indexedDB"in window&&null!==indexedDB&&navigator.cookieEnabled&&"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window&&"fetch"in window&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey")})().then((e=>{if(!e)throw ge.create("unsupported-browser")})).catch((e=>{throw ge.create("indexed-db-unsupported")}));const t=new Be(e.getProvider("app-exp").getImmediate(),e.getProvider("installations-exp-internal").getImmediate(),e.getProvider("analytics-internal"));return navigator.serviceWorker.addEventListener("message",(e=>qe(t,e))),t};async function Ve(e){try{e.swRegistration=await navigator.serviceWorker.register("/firebase-messaging-sw.js",{scope:"/firebase-cloud-messaging-push-scope"}),e.swRegistration.update().catch((()=>{}))}catch(e){throw ge.create("failed-service-worker-registration",{browserErrorMessage:e.message})}}async function He(e,t){if(!navigator)throw ge.create("only-available-in-window");if("default"===Notification.permission&&await Notification.requestPermission(),"granted"!==Notification.permission)throw ge.create("permission-blocked");return await async function(e,t){t?e.vapidKey=t:e.vapidKey||(e.vapidKey=he)}(e,null==t?void 0:t.vapidKey),await async function(e,t){if(t||e.swRegistration||await Ve(e),t||!e.swRegistration){if(!(t instanceof ServiceWorkerRegistration))throw ge.create("invalid-sw-registration");e.swRegistration=t}}(e,null==t?void 0:t.serviceWorkerRegistration),Ke(e)}function Re(e){return async function(e){if(!navigator)throw ge.create("only-available-in-window");return e.swRegistration||await Ve(e),Me(e)}(e=p(e))}function Le(e,t){return function(e,t){if(!navigator)throw ge.create("only-available-in-window");return e.onMessageHandler=t,()=>{e.onMessageHandler=null}}(e=p(e),t)}t._registerComponent(new d("messaging-exp",Fe,"PUBLIC"));const Ue=new s("messaging","Messaging",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"only-available-in-window":"This method is available in a Window context.","only-available-in-sw":"This method is available in a service worker context.","permission-default":"The notification permission was not granted and dismissed instead.","permission-blocked":"The notification permission was not granted and blocked instead.","unsupported-browser":"This browser doesn't support the API's required to use the firebase SDK.","indexed-db-unsupported":"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)","failed-service-worker-registration":"We are unable to register the default service worker. {$browserErrorMessage}","token-subscribe-failed":"A problem occurred while subscribing the user to FCM: {$errorInfo}","token-subscribe-no-token":"FCM returned no token when subscribing the user to push.","token-unsubscribe-failed":"A problem occurred while unsubscribing the user from FCM: {$errorInfo}","token-update-failed":"A problem occurred while updating the user from FCM: {$errorInfo}","token-update-no-token":"FCM returned no token when updating the user to push.","use-sw-after-get-token":"The useServiceWorker() method may only be called once and must be called before calling getToken() to ensure your service worker is used.","invalid-sw-registration":"The input to useServiceWorker() must be a ServiceWorkerRegistration.","invalid-bg-handler":"The input to setBackgroundMessageHandler() must be a function.","invalid-vapid-key":"The public VAPID key must be a string.","use-vapid-key-after-get-token":"The usePublicVapidKey() method may only be called once and must be called before calling getToken() to ensure your VAPID key is used."});const We="BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4",Je="FCM_MSG";var Ge;function ze(e){const t=new Uint8Array(e);return btoa(String.fromCharCode(...t)).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function Ye(e){const t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),n=atob(t),i=new Uint8Array(n.length);for(let e=0;e<n.length;++e)i[e]=n.charCodeAt(e);return i}!function(e){e.PUSH_RECEIVED="push-received",e.NOTIFICATION_CLICKED="notification-clicked"}(Ge||(Ge={}));const Ze="fcm_token_details_db",Qe="fcm_token_object_Store";const Xe="firebase-messaging-store";let et=null;function tt(){return et||(et=C("firebase-messaging-database",1,(e=>{switch(e.oldVersion){case 0:e.createObjectStore(Xe)}}))),et}async function nt(e){const t=ot(e),n=await tt(),i=await n.transaction(Xe).objectStore(Xe).get(t);if(i)return i;{const t=await async function(e){if("databases"in indexedDB&&!(await indexedDB.databases()).map((e=>e.name)).includes(Ze))return null;let t=null;return(await C(Ze,5,(async n=>{var i;if(n.oldVersion<2)return;if(!n.objectStoreNames.contains(Qe))return;const o=n.transaction.objectStore(Qe),r=await o.index("fcmSenderId").get(e);if(await o.clear(),r)if(2===n.oldVersion){const e=r;if(!e.auth||!e.p256dh||!e.endpoint)return;t={token:e.fcmToken,createTime:null!==(i=e.createTime)&&void 0!==i?i:Date.now(),subscriptionOptions:{auth:e.auth,p256dh:e.p256dh,endpoint:e.endpoint,swScope:e.swScope,vapidKey:"string"==typeof e.vapidKey?e.vapidKey:ze(e.vapidKey)}}}else if(3===n.oldVersion){const e=r;t={token:e.fcmToken,createTime:e.createTime,subscriptionOptions:{auth:ze(e.auth),p256dh:ze(e.p256dh),endpoint:e.endpoint,swScope:e.swScope,vapidKey:ze(e.vapidKey)}}}else if(4===n.oldVersion){const e=r;t={token:e.fcmToken,createTime:e.createTime,subscriptionOptions:{auth:ze(e.auth),p256dh:ze(e.p256dh),endpoint:e.endpoint,swScope:e.swScope,vapidKey:ze(e.vapidKey)}}}}))).close(),await j(Ze),await j("fcm_vapid_details_db"),await j("undefined"),function(e){if(!e||!e.subscriptionOptions)return!1;const{subscriptionOptions:t}=e;return"number"==typeof e.createTime&&e.createTime>0&&"string"==typeof e.token&&e.token.length>0&&"string"==typeof t.auth&&t.auth.length>0&&"string"==typeof t.p256dh&&t.p256dh.length>0&&"string"==typeof t.endpoint&&t.endpoint.length>0&&"string"==typeof t.swScope&&t.swScope.length>0&&"string"==typeof t.vapidKey&&t.vapidKey.length>0}(t)?t:null}(e.appConfig.senderId);if(t)return await it(e,t),t}}async function it(e,t){const n=ot(e),i=(await tt()).transaction(Xe,"readwrite");return await i.objectStore(Xe).put(t,n),await i.complete,t}function ot({appConfig:e}){return e.appId}async function rt(e,t){const n={method:"DELETE",headers:await st(e)};try{const i=await fetch(`${at(e.appConfig)}/${t}`,n),o=await i.json();if(o.error){const e=o.error.message;throw Ue.create("token-unsubscribe-failed",{errorInfo:e})}}catch(e){throw Ue.create("token-unsubscribe-failed",{errorInfo:e})}}function at({projectId:e}){return`https://fcmregistrations.googleapis.com/v1/projects/${e}/registrations`}async function st({appConfig:e,installations:t}){const n=await t.getToken();return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e.apiKey,"x-goog-firebase-installations-auth":`FIS ${n}`})}function ct({p256dh:e,auth:t,endpoint:n,vapidKey:i}){const o={web:{endpoint:n,auth:t,p256dh:e}};return i!==We&&(o.web.applicationPubKey=i),o}async function ut(e){const t=await async function(e,t){const n=await e.pushManager.getSubscription();if(n)return n;return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:Ye(t)})}(e.swRegistration,e.vapidKey),n={vapidKey:e.vapidKey,swScope:e.swRegistration.scope,endpoint:t.endpoint,auth:ze(t.getKey("auth")),p256dh:ze(t.getKey("p256dh"))},i=await nt(e.firebaseDependencies);if(i){if(function(e,t){const n=t.vapidKey===e.vapidKey,i=t.endpoint===e.endpoint,o=t.auth===e.auth,r=t.p256dh===e.p256dh;return n&&i&&o&&r}(i.subscriptionOptions,n))return Date.now()>=i.createTime+6048e5?async function(e,t){try{const n=await async function(e,t){const n=await st(e),i=ct(t.subscriptionOptions),o={method:"PATCH",headers:n,body:JSON.stringify(i)};let r;try{const n=await fetch(`${at(e.appConfig)}/${t.token}`,o);r=await n.json()}catch(e){throw Ue.create("token-update-failed",{errorInfo:e})}if(r.error){const e=r.error.message;throw Ue.create("token-update-failed",{errorInfo:e})}if(!r.token)throw Ue.create("token-update-no-token");return r.token}(e.firebaseDependencies,t),i=Object.assign(Object.assign({},t),{token:n,createTime:Date.now()});return await it(e.firebaseDependencies,i),n}catch(t){throw await pt(e),t}}(e,{token:i.token,createTime:Date.now(),subscriptionOptions:n}):i.token;try{await rt(e.firebaseDependencies,i.token)}catch(e){console.warn(e)}return dt(e.firebaseDependencies,n)}return dt(e.firebaseDependencies,n)}async function pt(e){const t=await nt(e.firebaseDependencies);t&&(await rt(e.firebaseDependencies,t.token),await async function(e){const t=ot(e),n=(await tt()).transaction(Xe,"readwrite");await n.objectStore(Xe).delete(t),await n.complete}(e.firebaseDependencies));const n=await e.swRegistration.pushManager.getSubscription();return!n||n.unsubscribe()}async function dt(e,t){const n={token:await async function(e,t){const n=await st(e),i=ct(t),o={method:"POST",headers:n,body:JSON.stringify(i)};let r;try{const t=await fetch(at(e.appConfig),o);r=await t.json()}catch(e){throw Ue.create("token-subscribe-failed",{errorInfo:e})}if(r.error){const e=r.error.message;throw Ue.create("token-subscribe-failed",{errorInfo:e})}if(!r.token)throw Ue.create("token-subscribe-no-token");return r.token}(e,t),createTime:Date.now(),subscriptionOptions:t};return await it(e,n),n.token}async function ft(e,t){const n=function({data:e}){if(!e)return null;try{return e.json()}catch(e){return null}}(e);if(!n)return;const i=await gt();if(function(e){return e.some((e=>"visible"===e.visibilityState&&!e.url.startsWith("chrome-extension://")))}(i))return function(e,t){t.isFirebaseMessaging=!0,t.messageType=Ge.PUSH_RECEIVED;for(const n of e)n.postMessage(t)}(i,n);if(n.notification&&await function(e){var t;const{actions:n}=e,{maxActions:i}=Notification;n&&i&&n.length>i&&console.warn(`This browser only supports ${i} actions. The remaining actions will not be displayed.`);return self.registration.showNotification(null!==(t=e.title)&&void 0!==t?t:"",e)}(function(e){const t=Object.assign({},e.notification);return t.data={[Je]:e},t}(n)),t&&t.onBackgroundMessageHandler){const e=function(e){const t={from:e.from,collapseKey:e.collapse_key};return function(e,t){if(!t.notification)return;e.notification={};const n=t.notification.title;n&&(e.notification.title=n);const i=t.notification.body;i&&(e.notification.body=i);const o=t.notification.image;o&&(e.notification.image=o)}(t,e),function(e,t){t.data&&(e.data=t.data)}(t,e),function(e,t){if(!t.fcmOptions)return;e.fcmOptions={};const n=t.fcmOptions.link;n&&(e.fcmOptions.link=n);const i=t.fcmOptions.analytics_label;i&&(e.fcmOptions.analyticsLabel=i)}(t,e),t}(n);"function"==typeof t.onBackgroundMessageHandler?t.onBackgroundMessageHandler(e):t.onBackgroundMessageHandler.next(e)}}async function lt(e){var t,n;const i=null===(n=null===(t=e.notification)||void 0===t?void 0:t.data)||void 0===n?void 0:n.FCM_MSG;if(!i)return;if(e.action)return;e.stopImmediatePropagation(),e.notification.close();const o=function(e){var t,n,i;const o=null!==(n=null===(t=e.fcmOptions)||void 0===t?void 0:t.link)&&void 0!==n?n:null===(i=e.notification)||void 0===i?void 0:i.click_action;if(o)return o;return r=e.data,"object"==typeof r&&r&&"google.c.a.c_id"in r?self.location.origin:null;var r}(i);if(!o)return;const r=new URL(o,self.location.href),a=new URL(self.location.origin);if(r.host!==a.host)return;let s=await async function(e){const t=await gt();for(const n of t){const t=new URL(n.url,self.location.href);if(e.host===t.host)return n}return null}(r);var c;return s?s=await s.focus():(s=await self.clients.openWindow(o),await(c=3e3,new Promise((e=>{setTimeout(e,c)})))),s?(i.messageType=Ge.NOTIFICATION_CLICKED,i.isFirebaseMessaging=!0,s.postMessage(i)):void 0}function gt(){return self.clients.matchAll({type:"window",includeUncontrolled:!0})}function ht(e){return Ue.create("missing-app-config-values",{valueName:e})}class wt{constructor(e,t,n){this.onBackgroundMessageHandler=null,this.onMessageHandler=null;const i=function(e){if(!e||!e.options)throw ht("App Configuration Object");if(!e.name)throw ht("App Name");const t=["projectId","apiKey","appId","messagingSenderId"],{options:n}=e;for(const e of t)if(!n[e])throw ht(e);return{appName:e.name,projectId:n.projectId,apiKey:n.apiKey,appId:n.appId,senderId:n.messagingSenderId}}(e);this.firebaseDependencies={app:e,appConfig:i,installations:t,analyticsProvider:n}}_delete(){return Promise.resolve()}}const yt=e=>{(async function(){return await r()&&"indexedDB"in self&&null!==indexedDB&&"PushManager"in self&&"Notification"in self&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey")})().then((e=>{if(!e)throw Ue.create("unsupported-browser")})).catch((e=>{throw Ue.create("indexed-db-unsupported")}));const t=new wt(e.getProvider("app-exp").getImmediate(),e.getProvider("installations-exp-internal").getImmediate(),e.getProvider("analytics-internal"));return self.addEventListener("push",(e=>{e.waitUntil(ft(e,t))})),self.addEventListener("pushsubscriptionchange",(e=>{e.waitUntil(async function(e,t){var n,i;const{newSubscription:o}=e;if(!o)return void await pt(t);const r=await nt(t.firebaseDependencies);await pt(t),t.vapidKey=null!==(i=null===(n=null==r?void 0:r.subscriptionOptions)||void 0===n?void 0:n.vapidKey)&&void 0!==i?i:We,await ut(t)}(e,t))})),self.addEventListener("notificationclick",(e=>{e.waitUntil(lt(e))})),t};function bt(e,t){return function(e,t){if(void 0!==self.document)throw Ue.create("only-available-in-sw");return e.onBackgroundMessageHandler=t,()=>{e.onBackgroundMessageHandler=null}}(e=p(e),t)}t._registerComponent(new d("messaging-sw-exp",yt,"PUBLIC"));class mt{constructor(e,t){this.app=e,this._delegate=t,this.app=e,this._delegate=t}async getToken(e){return async function(e,t){return He(e=p(e),t)}(this._delegate,e)}async deleteToken(){return Re(this._delegate)}onMessage(e){return Le(this._delegate,e)}onBackgroundMessage(e){return bt(this._delegate,e)}}const vt=e=>navigator?new mt(e.getProvider("app-compat").getImmediate(),e.getProvider("messaging-exp").getImmediate()):new mt(e.getProvider("app-compat").getImmediate(),e.getProvider("messaging-sw-exp").getImmediate());i.default.INTERNAL.registerComponent(new d("messaging-compat",vt,"PUBLIC")),i.default.registerVersion("@firebase/messaging-compat","0.0.900-exp.6ef484a04")}).apply(this,arguments)}catch(e){throw console.error(e),new Error("Cannot instantiate firebase-messaging-compat.js - be sure to load firebase-app.js first.")}})); //# sourceMappingURL=firebase-messaging-compat.js.map