firebase
Version:
Firebase JavaScript library for web and Node.js
3 lines (2 loc) • 12.8 kB
JavaScript
((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(me,ye){try{!(function(){class i extends Error{constructor(e,t,r){super(t),this.code=e,this.customData=r,this.name="FirebaseError",Object.setPrototypeOf(this,i.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,a.prototype.create)}}class a{constructor(e,t,r){this.service=e,this.serviceName=t,this.errors=r}create(e,...t){var r=t[0]||{},a=this.service+"/"+e,n=this.errors[e],n=n?((r,a)=>{try{let e=0,t="";for(;e<r.length;){var n=r.indexOf("{$",e);if(-1===n){t+=r.substring(e);break}var i=r.indexOf("}",n+2);if(-1===i){t+=r.substring(e);break}var o=r.substring(n+2,i),s=a[o];t+=r.substring(e,n)+(null!=s?String(s):`<${o}?>`),e=i+1}return t}catch(e){return r}})(n,r):"Error",n=this.serviceName+`: ${n} (${a}).`;return new i(a,n,r)}}class e{constructor(e,t,r){this.name=e,this.instanceFactory=t,this.type=r,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}}let M=(t,e)=>e.some(e=>t instanceof e),r,t;let n=new WeakMap,o=new WeakMap,s=new WeakMap,u=new WeakMap,c=new WeakMap;let l={get(e,t,r){if(e instanceof IDBTransaction){if("done"===t)return o.get(e);if("objectStoreNames"===t)return e.objectStoreNames||s.get(e);if("store"===t)return r.objectStoreNames[1]?void 0:r.objectStore(r.objectStoreNames[0])}return p(e[t])},set(e,t,r){return e[t]=r,!0},has(e,t){return e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e}};function V(a){return a!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(t=t||[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]).includes(a)?function(...e){return a.apply(d(this),e),p(n.get(this))}:function(...e){return p(a.apply(d(this),e))}:function(e,...t){var r=a.call(d(this),e,...t);return s.set(r,e.sort?e.sort():[e]),p(r)}}function $(e){var i,t;return"function"==typeof e?V(e):(e instanceof IDBTransaction&&(i=e,o.has(i)||(t=new Promise((e,t)=>{let r=()=>{i.removeEventListener("complete",a),i.removeEventListener("error",n),i.removeEventListener("abort",n)},a=()=>{e(),r()},n=()=>{t(i.error||new DOMException("AbortError","AbortError")),r()};i.addEventListener("complete",a),i.addEventListener("error",n),i.addEventListener("abort",n)}),o.set(i,t))),M(e,r=r||[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])?new Proxy(e,l):e)}function p(e){var i,t;return e instanceof IDBRequest?(i=e,(t=new Promise((e,t)=>{let r=()=>{i.removeEventListener("success",a),i.removeEventListener("error",n)},a=()=>{e(p(i.result)),r()},n=()=>{t(i.error),r()};i.addEventListener("success",a),i.addEventListener("error",n)})).then(e=>{e instanceof IDBCursor&&n.set(e,i)}).catch(()=>{}),c.set(t,i),t):u.has(e)?u.get(e):((t=$(e))!==e&&(u.set(e,t),c.set(t,e)),t)}let d=e=>c.get(e);let O=["get","getKey","getAll","getAllKeys","count"],_=["put","add","delete","clear"],f=new Map;function g(e,t){if(e instanceof IDBDatabase&&!(t in e)&&"string"==typeof t){if(f.get(t))return f.get(t);let n=t.replace(/FromIndex$/,""),i=t!==n,o=_.includes(n);var r;return n in(i?IDBIndex:IDBObjectStore).prototype&&(o||O.includes(n))?(r=async function(e,...t){var r=this.transaction(e,o?"readwrite":"readonly");let a=r.store;return i&&(a=a.index(t.shift())),(await Promise.all([a[n](...t),o&&r.done]))[0]},f.set(t,r),r):void 0}}l={...h=l,get:(e,t,r)=>g(e,t)||h.get(e,t,r),has:(e,t)=>!!g(e,t)||h.has(e,t)};var h,v="@firebase/installations",w="0.6.23";let m=1e4,y="w:"+w,F="FIS_v2",K="https://firebaseinstallations.googleapis.com/v1",H=36e5;var R;let I=new a("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 W(e){return e instanceof i&&e.code.includes("request-failed")}function b({projectId:e}){return K+`/projects/${e}/installations`}function z(e){return{token:e.token,requestStatus:2,expiresIn:Number(e.expiresIn.replace("s","000")),creationTime:Date.now()}}async function S(e,t){var r=(await t.json()).error;return I.create("request-failed",{requestName:e,serverCode:r.code,serverMessage:r.message,serverStatus:r.status})}function U({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function J(e,{refreshToken:t}){var r=U(e);return r.append("Authorization",(e=t,F+" "+e)),r}async function C(e){var t=await e();return 500<=t.status&&t.status<600?e():t}function G(t){return new Promise(e=>{setTimeout(e,t)})}let Y=/^[cdef][\w-]{21}$/,k="";function Z(){try{var e=new Uint8Array(17),t=((self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16,(e=>btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_"))(e).substr(0,22));return Y.test(t)?t:k}catch{return k}}function T(e){return e.appName+"!"+e.appId}let E=new Map;function Q(e,t){var r=T(e),e=(X(r,t),r),r=ee();r&&r.postMessage({key:e,fid:t}),te()}function X(e,t){var r=E.get(e);if(r)for(var a of r)a(t)}let D=null;function ee(){return!D&&"BroadcastChannel"in self&&((D=new BroadcastChannel("[Firebase] FID Change")).onmessage=e=>{X(e.data.key,e.data.fid)}),D}function te(){0===E.size&&D&&(D.close(),D=null)}let re="firebase-installations-database",ae=1,P="firebase-installations-store",ne=null;function j(){return ne=ne||((e,t,{blocked:r,upgrade:a,blocking:n,terminated:i})=>{let o=indexedDB.open(e,t);var s=p(o);return a&&o.addEventListener("upgradeneeded",e=>{a(p(o.result),e.oldVersion,e.newVersion,p(o.transaction),e)}),r&&o.addEventListener("blocked",e=>r(e.oldVersion,e.newVersion,e)),s.then(e=>{i&&e.addEventListener("close",()=>i()),n&&e.addEventListener("versionchange",e=>n(e.oldVersion,e.newVersion,e))}).catch(()=>{}),s})(re,ae,{upgrade:(e,t)=>{0===t&&e.createObjectStore(P)}})}async function B(e,t){var r=T(e),a=(await j()).transaction(P,"readwrite"),n=a.objectStore(P),i=await n.get(r);return await n.put(t,r),await a.done,i&&i.fid===t.fid||Q(e,t.fid),t}async function L(e){var t=T(e),r=(await j()).transaction(P,"readwrite");await r.objectStore(P).delete(t),await r.done}async function q(e,t){var r=T(e),a=(await j()).transaction(P,"readwrite"),n=a.objectStore(P),i=await n.get(r),o=t(i);return void 0===o?await n.delete(r):await n.put(o,r),await a.done,!o||i&&i.fid===o.fid||Q(e,o.fid),o}async function N(r){let a;var e=await q(r.appConfig,e=>{var t=oe(e||{fid:Z(),registrationStatus:0}),t=((e,t)=>{var r,a;return 0===t.registrationStatus?navigator.onLine?(r={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},a=(async(t,r)=>{try{var e=await(async({appConfig:e,heartbeatServiceProvider:t},{fid:r})=>{let a=b(e);var n=U(e),i=((i=t.getImmediate({optional:!0}))&&(i=await i.getHeartbeatsHeader())&&n.append("x-firebase-client",i),{fid:r,authVersion:F,appId:e.appId,sdkVersion:y});let o={method:"POST",headers:n,body:JSON.stringify(i)};if((n=await C(()=>fetch(a,o))).ok)return{fid:(i=await n.json()).fid||r,registrationStatus:2,refreshToken:i.refreshToken,authToken:z(i.authToken)};throw await S("Create Installation",n)})(t,r);return B(t.appConfig,e)}catch(e){throw W(e)&&409===e.customData.serverCode?await L(t.appConfig):await B(t.appConfig,{fid:r.fid,registrationStatus:0}),e}})(e,r),{installationEntry:r,registrationPromise:a}):(r=Promise.reject(I.create("app-offline")),{installationEntry:t,registrationPromise:r}):1===t.registrationStatus?{installationEntry:t,registrationPromise:(async e=>{let t=await ie(e.appConfig);for(;1===t.registrationStatus;)await G(100),t=await ie(e.appConfig);var r,a;return 0!==t.registrationStatus?t:({installationEntry:r,registrationPromise:a}=await N(e),a||r)})(e)}:{installationEntry:t}})(r,t);return a=t.registrationPromise,t.installationEntry});return e.fid===k?{installationEntry:await a}:{installationEntry:e,registrationPromise:a}}function ie(e){return q(e,e=>{if(e)return oe(e);throw I.create("installation-not-found")})}function oe(e){var t;return 1===(t=e).registrationStatus&&t.registrationTime+m<Date.now()?{fid:e.fid,registrationStatus:0}:e}async function se({appConfig:e,heartbeatServiceProvider:t},r){[n,i]=[e,r.fid];let a=b(n)+`/${i}/authTokens:generate`;var n,i,o=J(e,r),s=t.getImmediate({optional:!0}),s=(s&&(s=await s.getHeartbeatsHeader())&&o.append("x-firebase-client",s),{installation:{sdkVersion:y,appId:e.appId}});let u={method:"POST",headers:o,body:JSON.stringify(s)};o=await C(()=>fetch(a,u));if(o.ok)return z(await o.json());throw await S("Generate Auth Token",o)}async function x(a,n=!1){let i;var e=await q(a.appConfig,e=>{if(!ce(e))throw I.create("not-registered");var t,r=e.authToken;if(n||2!==(t=r).requestStatus||(e=>{var t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+H})(t)){if(1===r.requestStatus)return i=(async(e,t)=>{let r=await ue(e.appConfig);for(;1===r.authToken.requestStatus;)await G(100),r=await ue(e.appConfig);var a=r.authToken;return 0===a.requestStatus?x(e,t):a})(a,n),e;if(navigator.onLine)return t=e,r={requestStatus:1,requestTime:Date.now()},r={...t,authToken:r},i=(async(t,r)=>{try{var e=await se(t,r),a={...r,authToken:e};return await B(t.appConfig,a),e}catch(e){var n;throw!W(e)||401!==e.customData.serverCode&&404!==e.customData.serverCode?(n={...r,authToken:{requestStatus:0}},await B(t.appConfig,n)):await L(t.appConfig),e}})(a,r),r;throw I.create("app-offline")}return e});return i?await i:e.authToken}function ue(e){return q(e,e=>{var t,r;if(ce(e))return t=e.authToken,1===(r=t).requestStatus&&r.requestTime+m<Date.now()?{...e,authToken:{requestStatus:0}}:e;throw I.create("not-registered")})}function ce(e){return void 0!==e&&2===e.registrationStatus}async function le(e){var t=e,{installationEntry:r,registrationPromise:a}=await N(t);return(a||x(t)).catch(console.error),r.fid}async function pe(e,t=!1){var r=e,a=(await(!(a=(await N(r)).registrationPromise)||!await a),await x(r,t));return a.token}async function de(e,t){[a,n]=[e,t.fid];let r=b(a)+"/"+n;var a,n;let i={method:"DELETE",headers:J(e,t)};var o=await C(()=>fetch(r,i));if(!o.ok)throw await S("Delete Installation",o)}function fe(t,n){let i=t.appConfig;{t=i;var r=n,a=(ee(),T(t));let e=E.get(a);e||(e=new Set,E.set(a,e)),e.add(r)}return()=>{var e,t,r,a;e=i,t=n,r=T(e),(a=E.get(r))&&(a.delete(t),0===a.size&&E.delete(r),te())}}function A(e){return I.create("missing-app-config-values",{valueName:e})}let ge="installations",he=e=>{var t=e.getProvider("app").getImmediate();return{app:t,appConfig:(e=>{if(!e||!e.options)throw A("App Configuration");if(!e.name)throw A("App Name");var t;for(t of["projectId","apiKey","appId"])if(!e.options[t])throw A(t);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}})(t),heartbeatServiceProvider:ye._getProvider(t,"heartbeat"),_delete:()=>Promise.resolve()}},ve=e=>{var t=e.getProvider("app").getImmediate();let r=ye._getProvider(t,ge).getImmediate();return{getId:()=>le(r),getToken:e=>pe(r,e)}};ye._registerComponent(new e(ge,he,"PUBLIC")),ye._registerComponent(new e("installations-internal",ve,"PRIVATE")),ye.registerVersion(v,w),ye.registerVersion(v,w,"esm2020");class we{constructor(e,t){this.app=e,this._delegate=t}getId(){return le(this._delegate)}getToken(e){return pe(this._delegate,e)}delete(){return(async e=>{var t=e.appConfig,r=await q(t,e=>{if(!e||0!==e.registrationStatus)return e});if(r){if(1===r.registrationStatus)throw I.create("delete-pending-registration");if(2===r.registrationStatus){if(!navigator.onLine)throw I.create("app-offline");await de(t,r),await L(t)}}})(this._delegate)}onIdChange(e){return fe(this._delegate,e)}}(R=me).INTERNAL.registerComponent(new e("installations-compat",e=>{var t=e.getProvider("app-compat").getImmediate(),r=e.getProvider("installations").getImmediate();return new we(t,r)},"PUBLIC")),R.registerVersion("@firebase/installations-compat","0.2.23")}).apply(this,arguments)}catch(e){throw console.error(e),new Error("Cannot instantiate firebase-installations-compat.js - be sure to load firebase-app.js first.")}});
//# sourceMappingURL=firebase-installations-compat.js.map